diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5cc0a1d..e32de0e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -115,11 +115,15 @@ jobs: cp artifacts/thefeed-client-android-arm64 android/app/src/main/jniLibs/arm64-v8a/libthefeed.so - name: Decode signing keystore - if: env.KEYSTORE_BASE64 != '' env: KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }} run: | - echo "$KEYSTORE_BASE64" | base64 -d > android/app/keystore.jks + if [ -n "$KEYSTORE_BASE64" ]; then + echo "$KEYSTORE_BASE64" | base64 -d > android/app/keystore.jks + echo "Keystore decoded successfully" + else + echo "No KEYSTORE_BASE64 secret set — will use debug signing" + fi - name: Set up Java uses: actions/setup-java@v4 diff --git a/android/app/build.gradle b/android/app/build.gradle index 3b2b290..bba1c5a 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -37,14 +37,19 @@ android { // For CI: override with env vars KEYSTORE_BASE64, KEYSTORE_PASSWORD, KEY_ALIAS, KEY_PASSWORD release { def ksFile = file("keystore.jks") - def ksBase64 = System.getenv("KEYSTORE_BASE64") - if (ksBase64) { - ksFile.bytes = Base64.decoder.decode(ksBase64) + if (ksFile.exists()) { + storeFile ksFile + storePassword System.getenv("KEYSTORE_PASSWORD") ?: "thefeed123" + keyAlias System.getenv("KEY_ALIAS") ?: "thefeed" + keyPassword System.getenv("KEY_PASSWORD") ?: "thefeed123" + } else { + // Fallback to debug keystore for consistent local/CI builds without the project keystore + def debugKs = new File(System.getProperty("user.home"), ".android/debug.keystore") + storeFile debugKs + storePassword "android" + keyAlias "androiddebugkey" + keyPassword "android" } - storeFile ksFile - storePassword System.getenv("KEYSTORE_PASSWORD") ?: "thefeed123" - keyAlias System.getenv("KEY_ALIAS") ?: "thefeed" - keyPassword System.getenv("KEY_PASSWORD") ?: "thefeed123" } }