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
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() {
@@ -72,13 +72,14 @@ wait_emu() {
dump_vars() {
local val
for name in $@; do
for name in $@ emu_args; do
eval val=\$$name
echo $name=\"$val\"\;
done
}
resolve_vars() {
set +x
local arg_list="$1"
local ver=$2
local type=$3
@@ -138,8 +139,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 +176,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 +217,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"
}