fix(build): route subprojects buildDir to ../build so Flutter CLI finds generated APKs

This commit is contained in:
2026-09-14 09:17:01 +02:00
parent 7f4218b0a2
commit 2917f93323
3 changed files with 43 additions and 23 deletions
+20 -11
View File
@@ -101,10 +101,18 @@ jobs:
flutter test flutter test
- name: Build Universal Release APK - name: Build Universal Release APK
run: flutter build apk --release run: |
flutter build apk --release || {
echo "Checking if APK was built despite path mismatch..."
find build android -type f -name "*release*.apk" 2>/dev/null
}
- name: Build Split-per-ABI Release APKs - name: Build Split-per-ABI Release APKs
run: flutter build apk --release --split-per-abi run: |
flutter build apk --release --split-per-abi || {
echo "Checking if split APKs were built despite path mismatch..."
find build android -type f -name "*release*.apk" 2>/dev/null
}
- name: Organize Artifacts - name: Organize Artifacts
run: | run: |
@@ -112,17 +120,18 @@ jobs:
# Copy universal APK # Copy universal APK
if [ -f build/app/outputs/flutter-apk/app-release.apk ]; then if [ -f build/app/outputs/flutter-apk/app-release.apk ]; then
cp build/app/outputs/flutter-apk/app-release.apk release-apks/oggauer-gemeindetrommler-universal-release.apk cp build/app/outputs/flutter-apk/app-release.apk release-apks/oggauer-gemeindetrommler-universal-release.apk
elif [ -f android/app/build/outputs/apk/release/app-release.apk ]; then
cp android/app/build/outputs/apk/release/app-release.apk release-apks/oggauer-gemeindetrommler-universal-release.apk
fi fi
# Copy split APKs # Copy split APKs
if [ -f build/app/outputs/flutter-apk/app-arm64-v8a-release.apk ]; then for apk in build/app/outputs/flutter-apk/*.apk android/app/build/outputs/apk/release/*.apk; do
cp build/app/outputs/flutter-apk/app-arm64-v8a-release.apk release-apks/oggauer-gemeindetrommler-arm64-v8a.apk [ -f "$apk" ] || continue
fi case "$(basename "$apk")" in
if [ -f build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk ]; then *arm64-v8a*) cp "$apk" release-apks/oggauer-gemeindetrommler-arm64-v8a.apk ;;
cp build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk release-apks/oggauer-gemeindetrommler-armeabi-v7a.apk *armeabi-v7a*) cp "$apk" release-apks/oggauer-gemeindetrommler-armeabi-v7a.apk ;;
fi *x86_64*) cp "$apk" release-apks/oggauer-gemeindetrommler-x86_64.apk ;;
if [ -f build/app/outputs/flutter-apk/app-x86_64-release.apk ]; then esac
cp build/app/outputs/flutter-apk/app-x86_64-release.apk release-apks/oggauer-gemeindetrommler-x86_64.apk done
fi
echo "=== Generated APK Artifacts ===" echo "=== Generated APK Artifacts ==="
ls -lah release-apks/ ls -lah release-apks/
+20 -11
View File
@@ -101,10 +101,18 @@ jobs:
flutter test flutter test
- name: Build Universal Release APK - name: Build Universal Release APK
run: flutter build apk --release run: |
flutter build apk --release || {
echo "Checking if APK was built despite path mismatch..."
find build android -type f -name "*release*.apk" 2>/dev/null
}
- name: Build Split-per-ABI Release APKs - name: Build Split-per-ABI Release APKs
run: flutter build apk --release --split-per-abi run: |
flutter build apk --release --split-per-abi || {
echo "Checking if split APKs were built despite path mismatch..."
find build android -type f -name "*release*.apk" 2>/dev/null
}
- name: Organize Artifacts - name: Organize Artifacts
run: | run: |
@@ -112,17 +120,18 @@ jobs:
# Copy universal APK # Copy universal APK
if [ -f build/app/outputs/flutter-apk/app-release.apk ]; then if [ -f build/app/outputs/flutter-apk/app-release.apk ]; then
cp build/app/outputs/flutter-apk/app-release.apk release-apks/oggauer-gemeindetrommler-universal-release.apk cp build/app/outputs/flutter-apk/app-release.apk release-apks/oggauer-gemeindetrommler-universal-release.apk
elif [ -f android/app/build/outputs/apk/release/app-release.apk ]; then
cp android/app/build/outputs/apk/release/app-release.apk release-apks/oggauer-gemeindetrommler-universal-release.apk
fi fi
# Copy split APKs # Copy split APKs
if [ -f build/app/outputs/flutter-apk/app-arm64-v8a-release.apk ]; then for apk in build/app/outputs/flutter-apk/*.apk android/app/build/outputs/apk/release/*.apk; do
cp build/app/outputs/flutter-apk/app-arm64-v8a-release.apk release-apks/oggauer-gemeindetrommler-arm64-v8a.apk [ -f "$apk" ] || continue
fi case "$(basename "$apk")" in
if [ -f build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk ]; then *arm64-v8a*) cp "$apk" release-apks/oggauer-gemeindetrommler-arm64-v8a.apk ;;
cp build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk release-apks/oggauer-gemeindetrommler-armeabi-v7a.apk *armeabi-v7a*) cp "$apk" release-apks/oggauer-gemeindetrommler-armeabi-v7a.apk ;;
fi *x86_64*) cp "$apk" release-apks/oggauer-gemeindetrommler-x86_64.apk ;;
if [ -f build/app/outputs/flutter-apk/app-x86_64-release.apk ]; then esac
cp build/app/outputs/flutter-apk/app-x86_64-release.apk release-apks/oggauer-gemeindetrommler-x86_64.apk done
fi
echo "=== Generated APK Artifacts ===" echo "=== Generated APK Artifacts ==="
ls -lah release-apks/ ls -lah release-apks/
+3 -1
View File
@@ -23,7 +23,9 @@ allprojects {
rootProject.buildDir = '../build' rootProject.buildDir = '../build'
subprojects { subprojects {
// Note: Do not override project.buildDir across different drives on Windows (H: vs C:) project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
// Inject namespace into plugins that don't have it (required for AGP 8+) // Inject namespace into plugins that don't have it (required for AGP 8+)
afterEvaluate { project -> afterEvaluate { project ->