@@ -709,6 +709,42 @@ install_android_packages() {
709709 " system-images;android-35;google_apis;x86_64" > /dev/null 2>&1 || true
710710}
711711
712+ check_disk_space () {
713+ local target_dir=" $1 "
714+ local required_mb=" $2 "
715+
716+ ba_log " Checking disk space for AVD creation in $target_dir "
717+ df -h " $target_dir " | sed ' s/^/[build-android-app] disk: /'
718+
719+ local available_mb
720+ available_mb=$( df -m " $target_dir " | awk ' NR==2 {print $4}' )
721+ ba_log " Available space: ${available_mb} MB (required ${required_mb} MB)"
722+
723+ if [ " $available_mb " -lt " $required_mb " ]; then
724+ ba_log " Insufficient disk space detected; attempting cleanup" >&2
725+ cleanup_disk_space
726+ available_mb=$( df -m " $target_dir " | awk ' NR==2 {print $4}' )
727+ ba_log " Post-cleanup available space: ${available_mb} MB"
728+ if [ " $available_mb " -lt " $required_mb " ]; then
729+ return 1
730+ fi
731+ fi
732+ return 0
733+ }
734+
735+ cleanup_disk_space () {
736+ ba_log " Cleaning up disk space before AVD creation"
737+ if [ -n " ${HOME:- } " ]; then
738+ rm -rf " $HOME /.gradle/caches/build-cache-*" 2> /dev/null || true
739+ rm -rf " $HOME /.m2/repository" 2> /dev/null || true
740+ fi
741+ if [ -n " ${ANDROID_SDK_ROOT:- } " ] && [ -d " $ANDROID_SDK_ROOT /system-images" ]; then
742+ find " $ANDROID_SDK_ROOT /system-images" -mindepth 1 -maxdepth 1 ! -name " android-35" -exec rm -rf {} + 2> /dev/null || true
743+ fi
744+ rm -rf /tmp/cn1-* 2> /dev/null || true
745+ df -h | sed ' s/^/[build-android-app] disk-after-cleanup: /'
746+ }
747+
712748create_avd () {
713749 local manager=" $1 "
714750 local name=" $2 "
@@ -719,6 +755,13 @@ create_avd() {
719755 exit 1
720756 fi
721757 mkdir -p " $avd_dir "
758+
759+ local required_mb=10240
760+ if ! check_disk_space " $avd_dir " " $required_mb " ; then
761+ ba_log " ERROR: insufficient disk space for AVD creation (need ${required_mb} MB)" >&2
762+ exit 1
763+ fi
764+
722765 local ini_file=" $avd_dir /$name .ini"
723766 local image_dir=" $avd_dir /$name .avd"
724767 ANDROID_AVD_HOME=" $avd_dir " " $manager " delete avd -n " $name " > /dev/null 2>&1 || true
@@ -736,6 +779,7 @@ create_avd() {
736779 exit 1
737780 fi
738781 configure_avd " $avd_dir " " $name "
782+ du -sh " $image_dir " 2> /dev/null | sed ' s/^/[build-android-app] AVD-size: /' || true
739783}
740784
741785configure_avd () {
@@ -746,8 +790,8 @@ configure_avd() {
746790 return
747791 fi
748792 declare -A settings=(
749- [" hw.ramSize" ]=6144
750- [" disk.dataPartition.size" ]=12288M
793+ [" hw.ramSize" ]=4096
794+ [" disk.dataPartition.size" ]=6144M
751795 [" fastboot.forceColdBoot" ]=yes
752796 [" hw.bluetooth" ]=no
753797 [" hw.camera.back" ]=none
@@ -1242,7 +1286,11 @@ fi
12421286
12431287AVD_NAME=" cn1UiTestAvd"
12441288SYSTEM_IMAGE=" system-images;android-35;google_apis;x86_64"
1245- AVD_CACHE_ROOT=" ${AVD_CACHE_ROOT:- ${RUNNER_TEMP:- $HOME } / cn1-android-avd} "
1289+ if [ -n " ${GITHUB_WORKSPACE:- } " ]; then
1290+ AVD_CACHE_ROOT=" ${AVD_CACHE_ROOT:- $GITHUB_WORKSPACE / .android-avd} "
1291+ else
1292+ AVD_CACHE_ROOT=" ${AVD_CACHE_ROOT:- ${RUNNER_TEMP:- $HOME } / cn1-android-avd} "
1293+ fi
12461294mkdir -p " $AVD_CACHE_ROOT "
12471295AVD_HOME=" $AVD_CACHE_ROOT "
12481296ba_log " Using AVD home at $AVD_HOME "
@@ -1271,8 +1319,8 @@ ANDROID_AVD_HOME="$AVD_HOME" "$EMULATOR_BIN" -avd "$AVD_NAME" -port "$EMULATOR_P
12711319 -gpu auto -no-audio -no-boot-anim \
12721320 -accel off -no-metrics -camera-back none -camera-front none -skip-adb-auth \
12731321 -feature -Vulkan -feature -GLDMA -feature -GLDirectMem -no-passive-gps \
1274- -netdelay none -netspeed full -skin 720x1280 -memory 6144 -cores 4 \
1275- -partition-size 12288 -delay-adb > " $EMULATOR_LOG " 2>&1 &
1322+ -netdelay none -netspeed full -skin 720x1280 -memory 4096 -cores 4 \
1323+ -partition-size 6144 -delay-adb > " $EMULATOR_LOG " 2>&1 &
12761324EMULATOR_PID=$!
12771325trap stop_emulator EXIT
12781326
0 commit comments