@@ -377,10 +377,6 @@ wait_for_emulator() {
377377 return 0
378378}
379379
380- get_emulator_serial () {
381- " $ADB_BIN " devices | awk ' /emulator-/{print $1; exit}'
382- }
383-
384380stop_emulator () {
385381 if [ -n " ${EMULATOR_SERIAL:- } " ]; then
386382 " $ADB_BIN " -s " $EMULATOR_SERIAL " emu kill > /dev/null 2>&1 || true
@@ -420,23 +416,36 @@ create_avd "$AVDMANAGER_BIN" "$AVD_NAME" "$SYSTEM_IMAGE" "$AVD_HOME"
420416
421417ANDROID_AVD_HOME=" $AVD_HOME " " $ADB_BIN " start-server > /dev/null
422418
419+ EMULATOR_PORT=" ${EMULATOR_PORT:- 5560} "
420+ if ! [[ " $EMULATOR_PORT " =~ ^[0-9]+$ ]]; then
421+ EMULATOR_PORT=5560
422+ elif [ $(( EMULATOR_PORT % 2 )) -ne 0 ] || [ $EMULATOR_PORT -lt 5554 ] || [ $EMULATOR_PORT -gt 5584 ]; then
423+ # emulator requires an even console port between 5554-5584; fall back if invalid
424+ EMULATOR_PORT=5560
425+ fi
426+ EMULATOR_SERIAL=" emulator-$EMULATOR_PORT "
427+
423428EMULATOR_LOG=" $GRADLE_PROJECT_DIR /emulator.log"
424- ba_log " Starting headless Android emulator $AVD_NAME "
425- ANDROID_AVD_HOME=" $AVD_HOME " " $EMULATOR_BIN " -avd " $AVD_NAME " -no-window -no-snapshot -gpu swiftshader_indirect -no-audio -no-boot-anim -accel off > " $EMULATOR_LOG " 2>&1 &
429+ ba_log " Starting headless Android emulator $AVD_NAME on port $EMULATOR_PORT "
430+ ANDROID_AVD_HOME=" $AVD_HOME " " $EMULATOR_BIN " -avd " $AVD_NAME " -port " $EMULATOR_PORT " - no-window -no-snapshot -gpu swiftshader_indirect -no-audio -no-boot-anim -accel off > " $EMULATOR_LOG " 2>&1 &
426431EMULATOR_PID=$!
427432trap stop_emulator EXIT
428433
429434sleep 5
430- EMULATOR_SERIAL= " "
435+ EMULATOR_READY=0
431436for _ in $( seq 1 30) ; do
432- EMULATOR_SERIAL= " $( get_emulator_serial ) "
433- if [ -n " $EMULATOR_SERIAL " ] ; then
437+ if " $ADB_BIN " -s " $EMULATOR_SERIAL " get-state > /dev/null 2>&1 ; then
438+ EMULATOR_READY=1
434439 break
435440 fi
436441 sleep 2
437442done
438- if [ -z " $EMULATOR_SERIAL " ]; then
439- ba_log " Failed to determine emulator serial" >&2
443+ if [ " $EMULATOR_READY " -ne 1 ]; then
444+ ba_log " Failed to connect to emulator serial $EMULATOR_SERIAL " >&2
445+ if [ -f " $EMULATOR_LOG " ]; then
446+ ba_log " Emulator log tail:" >&2
447+ tail -n 40 " $EMULATOR_LOG " | sed ' s/^/[build-android-app] | /' >&2
448+ fi
440449 stop_emulator
441450 exit 1
442451fi
0 commit comments