diff --git a/scripts/avd.sh b/scripts/avd.sh index e823431bd..c54b96874 100755 --- a/scripts/avd.sh +++ b/scripts/avd.sh @@ -4,10 +4,9 @@ set -e shopt -s extglob . scripts/test_common.sh -emu_args_base="-no-window -no-audio -no-boot-anim -gpu swiftshader_indirect -read-only -no-snapshot -cores $core_count" +emu_args_base="-no-window -no-audio -no-boot-anim -gpu software -read-only -no-snapshot -cores $core_count" log_args="-show-kernel -logcat '' -logcat-output logcat.log" emu_args= -emu_pid= atd_min_api=30 atd_max_api=36 @@ -33,7 +32,7 @@ esac cleanup() { rm -f magisk-*.img - "$avd" delete avd -n test + "$avd" delete avd -n test > /dev/null 2>&1 } test_error() { @@ -59,17 +58,6 @@ wait_for_boot() { done } -wait_emu() { - local which_pid - - timeout $boot_timeout bash -c wait_for_boot & - local wait_pid=$! - - # Handle the case when emulator dies earlier than timeout - wait -p which_pid -n $emu_pid $wait_pid - [ $which_pid -eq $wait_pid ] -} - dump_vars() { local val for name in $@; do @@ -167,7 +155,12 @@ parse_args() { dl_emu() { local avd_pkg=$1 yes | "$sdk" --licenses > /dev/null 2>&1 - "$sdk" --channel=3 platform-tools emulator $avd_pkg + "$sdk" --channel=3 'cmdline-tools;latest' platform-tools emulator "$avd_pkg" + # It's possible cmdline-tools updated + if [ -e "${cli_tools}-2" ]; then + rm -rf "$cli_tools" + mv "${cli_tools}-2" "$cli_tools" + fi } setup_emu() { @@ -175,11 +168,6 @@ setup_emu() { local ver=$2 dl_emu $avd_pkg echo no | "$avd" create avd -f -n test -k $avd_pkg - - # avdmanager is outdated, it might not set the proper target - local ini=$ANDROID_AVD_HOME/test.ini - sed "s:^target\s*=.*:target=android-$ver:g" $ini > $ini.new - mv $ini.new $ini } test_emu() { @@ -194,19 +182,17 @@ test_emu() { else "$emu" @test $emu_args $magisk_args > /dev/null 2>&1 & fi - - emu_pid=$! - wait_emu + timeout $boot_timeout bash -c wait_for_boot run_setup $apk adb reboot - wait_emu + timeout $boot_timeout bash -c wait_for_boot run_tests - kill -INT $emu_pid - wait $emu_pid + adb emu kill + wait } test_main() { @@ -231,9 +217,8 @@ test_main() { # Launch stock emulator print_title "* Launching $avd_pkg" - "$emu" @test $emu_args >/dev/null 2>&1 & - emu_pid=$! - wait_emu + "$emu" @test $emu_args > /dev/null 2>&1 & + timeout $boot_timeout bash -c wait_for_boot # Patch images local images=() @@ -242,8 +227,8 @@ test_main() { ./build.py -v avd_patch --apk "$apk" "$ramdisk" "${images[-1]}" done - kill -INT $emu_pid - wait $emu_pid + adb emu kill + wait for i in "${!apks[@]}"; do print_title "* Testing $avd_pkg ($(basename ${apks[i]}))" @@ -260,7 +245,8 @@ run_main() { setup_emu "$avd_pkg" $ver print_title "* Launching $avd_pkg" - "$emu" @test $emu_args 2>/dev/null + "$emu" @test $emu_args > /dev/null 2>&1 & + wait_for_boot cleanup } diff --git a/scripts/test_common.sh b/scripts/test_common.sh index d2cb4f485..6be47d189 100644 --- a/scripts/test_common.sh +++ b/scripts/test_common.sh @@ -9,8 +9,9 @@ export ANDROID_AVD_HOME="$ANDROID_EMULATOR_HOME/avd" export PATH="$PATH:$ANDROID_HOME/platform-tools" emu="$ANDROID_HOME/emulator/emulator" -sdk="$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" -avd="$ANDROID_HOME/cmdline-tools/latest/bin/avdmanager" +cli_tools="$ANDROID_HOME/cmdline-tools/latest" +sdk="$cli_tools/bin/sdkmanager" +avd="$cli_tools/bin/avdmanager" boot_timeout=100 @@ -42,12 +43,6 @@ am_instrument() { fi } -# $1 = pkg -wait_for_pm() { - sleep 5 - adb shell pm uninstall $1 || true -} - run_setup() { local apk=$1 adb shell 'PATH=$PATH:/debug_ramdisk magisk -v'