From 3ec122c03bdcdae8720d13046be49939a4bafcb0 Mon Sep 17 00:00:00 2001 From: Ujwal Chapagain <100770475+Ujwal223@users.noreply.github.com> Date: Sat, 13 Jun 2026 14:54:27 +0545 Subject: [PATCH] Update release-apk.yml --- .github/workflows/release-apk.yml | 40 +++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release-apk.yml b/.github/workflows/release-apk.yml index f35ca28..b9507eb 100644 --- a/.github/workflows/release-apk.yml +++ b/.github/workflows/release-apk.yml @@ -75,8 +75,12 @@ jobs: run: | set -euo pipefail mkdir -p android/app - echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 --decode > android/app/upload-keystore.jks + # tr -d strips any newlines/spaces introduced when the secret was stored + echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" \ + | tr -d '[:space:]' \ + | base64 --decode > android/app/upload-keystore.jks chmod 600 android/app/upload-keystore.jks + echo "Keystore written: $(wc -c < android/app/upload-keystore.jks) bytes" - name: Create Android key.properties shell: bash @@ -86,13 +90,39 @@ jobs: KEY_ALIAS: ${{ secrets.KEY_ALIAS }} run: | set -euo pipefail + # Trim any accidental whitespace/newlines from secret values + KS_PASS="$(printf '%s' "${KEYSTORE_PASSWORD}" | tr -d '[:space:]')" + K_PASS="$(printf '%s' "${KEY_PASSWORD}" | tr -d '[:space:]')" + K_ALIAS="$(printf '%s' "${KEY_ALIAS}" | tr -d '[:space:]')" + # Absolute path prevents Gradle from misresolving a relative storeFile + KEYSTORE_PATH="${GITHUB_WORKSPACE}/android/app/upload-keystore.jks" { - printf 'storePassword=%s\n' "${KEYSTORE_PASSWORD}" - printf 'keyPassword=%s\n' "${KEY_PASSWORD}" - printf 'keyAlias=%s\n' "${KEY_ALIAS}" - printf 'storeFile=upload-keystore.jks\n' + printf 'storePassword=%s\n' "${KS_PASS}" + printf 'keyPassword=%s\n' "${K_PASS}" + printf 'keyAlias=%s\n' "${K_ALIAS}" + printf 'storeFile=%s\n' "${KEYSTORE_PATH}" } > android/key.properties + - name: Verify keystore + shell: bash + env: + KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} + run: | + set -euo pipefail + KS_PASS="$(printf '%s' "${KEYSTORE_PASSWORD}" | tr -d '[:space:]')" + echo "=== Keystore file ===" + ls -lh android/app/upload-keystore.jks + file android/app/upload-keystore.jks + echo "" + echo "=== key.properties keys (values hidden) ===" + cut -d'=' -f1 android/key.properties + echo "" + echo "=== Keystore verification via keytool ===" + keytool -list \ + -keystore android/app/upload-keystore.jks \ + -storepass "${KS_PASS}" \ + 2>&1 | grep -vE "^(Warning|$)" + - name: Build release APK run: flutter build apk --release