From 64513057de192d9d097afd1890affc61665c7d8b Mon Sep 17 00:00:00 2001 From: Henrique Velloso Date: Thu, 15 Jan 2026 15:13:59 -0300 Subject: [PATCH] Refine build scripts to include explicit environment variable outputs for target platform and ABI settings, enhancing clarity and usability. Default values for split ABI, target platform, and ABI are now consistently set across scripts, improving the reproducibility of APK builds. --- repro/build_in_container.sh | 26 ++++++++++++++++++++------ repro/prove_repro.sh | 8 ++++++-- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/repro/build_in_container.sh b/repro/build_in_container.sh index 24a76ea..f38df93 100755 --- a/repro/build_in_container.sh +++ b/repro/build_in_container.sh @@ -30,6 +30,9 @@ echo "== Environment ==" echo "TAG=${TAG}" echo "GRADLE_USER_HOME=${GRADLE_USER_HOME:-}" echo "PUB_CACHE=${PUB_CACHE:-}" +echo "REPRO_TARGET_PLATFORM=${REPRO_TARGET_PLATFORM:-android-arm64}" +echo "REPRO_SPLIT_PER_ABI=${REPRO_SPLIT_PER_ABI:-1}" +echo "REPRO_ABI=${REPRO_ABI:-arm64-v8a}" echo "== Tool versions ==" java -version @@ -84,14 +87,25 @@ if [ -n "${GRADLE_USER_HOME:-}" ]; then } > "${GRADLE_USER_HOME}/gradle.properties" fi -if [ "${REPRO_SPLIT_PER_ABI:-0}" = "1" ]; then - echo "Building with --split-per-abi (hard mode)" - flutter build apk --release --split-per-abi --no-pub - APK_PATH="$(ls -1 build/app/outputs/flutter-apk/*arm64-v8a*release*.apk | head -n 1)" - OUT_APK="${OUT_DIR}/app-${SOURCE_DATE_EPOCH}-${TAG}-arm64-v8a-release.apk" +TARGET_PLATFORM="${REPRO_TARGET_PLATFORM:-android-arm64}" +ABI_NAME="${REPRO_ABI:-arm64-v8a}" + +if [ "${REPRO_SPLIT_PER_ABI:-1}" = "1" ]; then + echo "Building with --split-per-abi (arm64 default)" + if [ -n "${TARGET_PLATFORM}" ]; then + flutter build apk --release --split-per-abi --target-platform "${TARGET_PLATFORM}" --no-pub + else + flutter build apk --release --split-per-abi --no-pub + fi + APK_PATH="$(ls -1 build/app/outputs/flutter-apk/*"${ABI_NAME}"*release*.apk | head -n 1)" + OUT_APK="${OUT_DIR}/app-${SOURCE_DATE_EPOCH}-${TAG}-${ABI_NAME}-release.apk" else echo "Building single APK (default)" - flutter build apk --release --no-pub + if [ -n "${TARGET_PLATFORM}" ]; then + flutter build apk --release --target-platform "${TARGET_PLATFORM}" --no-pub + else + flutter build apk --release --no-pub + fi APK_PATH="$(ls -1 build/app/outputs/flutter-apk/*release*.apk | head -n 1)" OUT_APK="${OUT_DIR}/app-${SOURCE_DATE_EPOCH}-${TAG}-release.apk" fi diff --git a/repro/prove_repro.sh b/repro/prove_repro.sh index 11ca81d..c8607cb 100755 --- a/repro/prove_repro.sh +++ b/repro/prove_repro.sh @@ -53,7 +53,9 @@ echo "Docker platform: ${DOCKER_PLATFORM}" echo "Flutter: ${FLUTTER_VERSION}" echo "Flutter sha256: ${FLUTTER_SHA256}" echo "cmdline-tools sha256: ${CMDLINE_TOOLS_SHA256}" -echo "split-per-abi: ${REPRO_SPLIT_PER_ABI:-0}" +echo "split-per-abi: ${REPRO_SPLIT_PER_ABI:-1}" +echo "target-platform: ${REPRO_TARGET_PLATFORM:-android-arm64}" +echo "abi: ${REPRO_ABI:-arm64-v8a}" echo "== Building Docker image ==" docker build --platform "${DOCKER_PLATFORM}" \ @@ -101,7 +103,9 @@ run_one () { -e "GRADLE_USER_HOME=/work/gradle" \ -e "GRADLE_OPTS=-Dorg.gradle.vfs.watch=false" \ -e "PUB_CACHE=/work/pub-cache" \ - -e "REPRO_SPLIT_PER_ABI=${REPRO_SPLIT_PER_ABI:-0}" \ + -e "REPRO_SPLIT_PER_ABI=${REPRO_SPLIT_PER_ABI:-1}" \ + -e "REPRO_TARGET_PLATFORM=${REPRO_TARGET_PLATFORM:-android-arm64}" \ + -e "REPRO_ABI=${REPRO_ABI:-arm64-v8a}" \ -v "${ROOT_DIR}:/repo:ro" \ -v "${OUT_DIR}:/out:rw" \ "${cache_mounts[@]}" \