Update avd.sh

This commit is contained in:
topjohnwu
2026-04-19 15:18:50 -07:00
committed by John Wu
parent ee3ce37ae4
commit 75f60d6e63
2 changed files with 21 additions and 40 deletions

View File

@@ -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() {
@@ -232,8 +218,7 @@ test_main() {
# Launch stock emulator
print_title "* Launching $avd_pkg"
"$emu" @test $emu_args > /dev/null 2>&1 &
emu_pid=$!
wait_emu
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
}

View File

@@ -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'