diff --git a/scripts/avd.sh b/scripts/avd.sh index 796d15ff9..3a6555ec8 100755 --- a/scripts/avd.sh +++ b/scripts/avd.sh @@ -32,17 +32,17 @@ case $(uname -m) in esac cleanup() { - pkill -INT -P $$ - wait - trap - EXIT rm -f magisk_*.img "$avd" delete avd -n test - exit 1 } test_error() { + trap - EXIT print_error "! An error occurred" + pkill -INT -P $$ + wait cleanup + exit 1 } wait_for_boot() { @@ -76,6 +76,8 @@ dump_vars() { eval val=\$$name echo $name=\"$val\"\; done + # Always dump emu_args + echo emu_args=\"$emu_args\"\; } resolve_vars() { @@ -138,8 +140,14 @@ dl_emu() { setup_emu() { local avd_pkg=$1 + 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() { @@ -169,16 +177,15 @@ test_emu() { } test_main() { - local avd_pkg ramdisk vars - vars=$(resolve_vars "emu_args avd_pkg ramdisk" $1 $2) - eval $vars + local ver avd_pkg ramdisk + eval $(resolve_vars "ver avd_pkg ramdisk" $1 $2) # Specify an explicit port so that tests can run with other emulators running at the same time local emu_port=5682 emu_args="$emu_args -port $emu_port" export ANDROID_SERIAL="emulator-$emu_port" - setup_emu "$avd_pkg" + setup_emu "$avd_pkg" $ver # Restart ADB daemon just in case adb kill-server @@ -211,24 +218,21 @@ test_main() { test_emu release fi - # Cleanup - rm -f magisk_*.img - "$avd" delete avd -n test + cleanup } run_main() { - local avd_pkg vars - vars=$(resolve_vars "emu_args avd_pkg" $1 $2) - eval $vars - setup_emu "$avd_pkg" + local ver avd_pkg + eval $(resolve_vars "ver avd_pkg" $1 $2) + setup_emu "$avd_pkg" $ver print_title "* Launching $avd_pkg" "$emu" @test $emu_args 2>/dev/null + cleanup } dl_main() { - local avd_pkg vars - vars=$(resolve_vars "avd_pkg" $1 $2) - eval $vars + local avd_pkg + eval $(resolve_vars "avd_pkg" $1 $2) print_title "* Downloading $avd_pkg" dl_emu "$avd_pkg" }