Skip to content

Commit 6115d33

Browse files
committed
Reduce API 35 emulator disk footprint
1 parent 82fa15f commit 6115d33

File tree

3 files changed

+66
-5
lines changed

3 files changed

+66
-5
lines changed

.github/workflows/scripts-android.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,16 @@ jobs:
1818
timeout-minutes: 90
1919
steps:
2020
- uses: actions/checkout@v4
21+
- name: Free disk space (action)
22+
uses: jlumbroso/free-disk-space@main
23+
with:
24+
tool-cache: true
25+
android: false
26+
dotnet: true
27+
haskell: true
28+
large-packages: true
29+
docker-images: true
30+
swap-storage: true
2131
- name: Free disk space for emulator
2232
run: |
2333
sudo rm -rf /usr/share/dotnet
@@ -47,6 +57,8 @@ jobs:
4757
run: ./scripts/build-android-port.sh -q -DskipTests
4858
- name: Build Hello Codename One Android app
4959
run: ./scripts/build-android-app.sh -q -DskipTests
60+
env:
61+
AVD_CACHE_ROOT: ${{ github.workspace }}/.android-avd
5062
- name: Upload UI test artifacts
5163
if: always()
5264
uses: actions/upload-artifact@v4

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,4 @@ pom.xml.tag
8282
!.brokk/style.md
8383
!.brokk/review.md
8484
!.brokk/project.properties
85+
.android-avd/

scripts/build-android-app.sh

Lines changed: 53 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
712748
create_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

741785
configure_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

12431287
AVD_NAME="cn1UiTestAvd"
12441288
SYSTEM_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
12461294
mkdir -p "$AVD_CACHE_ROOT"
12471295
AVD_HOME="$AVD_CACHE_ROOT"
12481296
ba_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 &
12761324
EMULATOR_PID=$!
12771325
trap stop_emulator EXIT
12781326

0 commit comments

Comments
 (0)