From 51409e7ca726e12aaeff83fa3b2952ec4b0e552d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 28 Apr 2026 06:38:49 +0000 Subject: [PATCH] fix(android): use stable release keystore for signed APK builds Agent-Logs-Url: https://github.com/openpatch/classi/sessions/923e4653-941d-4b14-9ef7-77bce1182af1 Co-authored-by: mikebarkmin <2592379+mikebarkmin@users.noreply.github.com> --- .github/workflows/release.yml | 9 +++++++++ android/app/build.gradle.kts | 18 +++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8209a70..f82621f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -86,7 +86,16 @@ jobs: - name: Generate code run: dart run build_runner build --delete-conflicting-outputs + - name: Decode release keystore + run: | + echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 --decode > "${{ runner.temp }}/release.jks" + - name: Package APK + env: + KEYSTORE_PATH: ${{ runner.temp }}/release.jks + ANDROID_STORE_PASSWORD: ${{ secrets.ANDROID_STORE_PASSWORD }} + ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} + ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }} run: fastforge package --platform android --targets apk - name: Upload Android artifact diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 0493096..1aa5bcf 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -33,9 +33,25 @@ android { versionName = flutter.versionName } + val keystorePath = System.getenv("KEYSTORE_PATH") + if (keystorePath != null) { + signingConfigs { + create("release") { + storeFile = file(keystorePath) + storePassword = System.getenv("ANDROID_STORE_PASSWORD") ?: "" + keyAlias = System.getenv("ANDROID_KEY_ALIAS") ?: "" + keyPassword = System.getenv("ANDROID_KEY_PASSWORD") ?: "" + } + } + } + buildTypes { release { - signingConfig = signingConfigs.getByName("debug") + signingConfig = if (keystorePath != null) { + signingConfigs.getByName("release") + } else { + signingConfigs.getByName("debug") + } } } }