Properly support AVD with minor SDK version

This commit is contained in:
topjohnwu
2025-12-04 20:55:46 -08:00
parent ccb264f33a
commit 505053f9b4

View File

@@ -32,17 +32,17 @@ case $(uname -m) in
esac esac
cleanup() { cleanup() {
pkill -INT -P $$
wait
trap - EXIT
rm -f magisk_*.img rm -f magisk_*.img
"$avd" delete avd -n test "$avd" delete avd -n test
exit 1
} }
test_error() { test_error() {
trap - EXIT
print_error "! An error occurred" print_error "! An error occurred"
pkill -INT -P $$
wait
cleanup cleanup
exit 1
} }
wait_for_boot() { wait_for_boot() {
@@ -72,13 +72,14 @@ wait_emu() {
dump_vars() { dump_vars() {
local val local val
for name in $@; do for name in $@ emu_args; do
eval val=\$$name eval val=\$$name
echo $name=\"$val\"\; echo $name=\"$val\"\;
done done
} }
resolve_vars() { resolve_vars() {
set +x
local arg_list="$1" local arg_list="$1"
local ver=$2 local ver=$2
local type=$3 local type=$3
@@ -138,8 +139,14 @@ dl_emu() {
setup_emu() { setup_emu() {
local avd_pkg=$1 local avd_pkg=$1
local ver=$2
dl_emu $avd_pkg dl_emu $avd_pkg
echo no | "$avd" create avd -f -n test -k $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() { test_emu() {
@@ -169,16 +176,15 @@ test_emu() {
} }
test_main() { test_main() {
local avd_pkg ramdisk vars local ver avd_pkg ramdisk
vars=$(resolve_vars "emu_args avd_pkg ramdisk" $1 $2) eval $(resolve_vars "ver avd_pkg ramdisk" $1 $2)
eval $vars
# Specify an explicit port so that tests can run with other emulators running at the same time # Specify an explicit port so that tests can run with other emulators running at the same time
local emu_port=5682 local emu_port=5682
emu_args="$emu_args -port $emu_port" emu_args="$emu_args -port $emu_port"
export ANDROID_SERIAL="emulator-$emu_port" export ANDROID_SERIAL="emulator-$emu_port"
setup_emu "$avd_pkg" setup_emu "$avd_pkg" $ver
# Restart ADB daemon just in case # Restart ADB daemon just in case
adb kill-server adb kill-server
@@ -211,24 +217,21 @@ test_main() {
test_emu release test_emu release
fi fi
# Cleanup cleanup
rm -f magisk_*.img
"$avd" delete avd -n test
} }
run_main() { run_main() {
local avd_pkg vars local ver avd_pkg
vars=$(resolve_vars "emu_args avd_pkg" $1 $2) eval $(resolve_vars "ver avd_pkg" $1 $2)
eval $vars setup_emu "$avd_pkg" $ver
setup_emu "$avd_pkg"
print_title "* Launching $avd_pkg" print_title "* Launching $avd_pkg"
"$emu" @test $emu_args 2>/dev/null "$emu" @test $emu_args 2>/dev/null
cleanup
} }
dl_main() { dl_main() {
local avd_pkg vars local avd_pkg
vars=$(resolve_vars "avd_pkg" $1 $2) eval $(resolve_vars "avd_pkg" $1 $2)
eval $vars
print_title "* Downloading $avd_pkg" print_title "* Downloading $avd_pkg"
dl_emu "$avd_pkg" dl_emu "$avd_pkg"
} }