Skip to content

Commit 98c4a59

Browse files
committed
Replace APK signing with AAB signing using jarsigner
- Change signing step to sign AAB files instead of APK - Use jarsigner (required for AAB) instead of apksigner - Sign with SHA256withRSA algorithm - Verify signature after signing - Fixes 'All uploaded bundles must be signed' error
1 parent 52f5333 commit 98c4a59

1 file changed

Lines changed: 17 additions & 14 deletions

File tree

.github/workflows/release-apk.yml

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -99,28 +99,31 @@ jobs:
9999
run: |
100100
echo "${{ secrets.ANDROID_SIGNING_KEYSTORE_BASE64 }}" | base64 --decode > release.keystore
101101
102-
- name: Sign APK (if secrets present)
102+
- name: Sign AAB (if secrets present)
103103
continue-on-error: true
104104
env:
105105
KEY_ALIAS: ${{ secrets.ANDROID_SIGNING_KEY_ALIAS }}
106106
KEY_PASSWORD: ${{ secrets.ANDROID_SIGNING_KEY_PASSWORD }}
107107
STORE_PASSWORD: ${{ secrets.ANDROID_SIGNING_KEYSTORE_PASSWORD }}
108108
run: |
109-
APK_PATH=$(ls app/build/outputs/apk/release/*.apk | head -n 1)
110-
if [ -z "$APK_PATH" ]; then
111-
echo "No APK produced at app/build/outputs/apk/release." >&2
109+
AAB_PATH=$(ls app/build/outputs/bundle/release/*.aab | head -n 1)
110+
if [ -z "$AAB_PATH" ]; then
111+
echo "No AAB produced at app/build/outputs/bundle/release." >&2
112112
exit 1
113113
fi
114-
mv "$APK_PATH" "${APK_PATH%.apk}-unsigned.apk"
115-
"${ANDROID_SDK_ROOT}/build-tools/${BUILD_TOOLS_VERSION}/apksigner" sign \
116-
--ks release.keystore \
117-
--ks-key-alias "$KEY_ALIAS" \
118-
--ks-pass env:STORE_PASSWORD \
119-
--key-pass env:KEY_PASSWORD \
120-
--out "${APK_PATH%.apk}.apk" \
121-
"${APK_PATH%.apk}-unsigned.apk"
122-
"${ANDROID_SDK_ROOT}/build-tools/${BUILD_TOOLS_VERSION}/apksigner" verify "${APK_PATH%.apk}.apk"
123-
rm "${APK_PATH%.apk}-unsigned.apk"
114+
if [ ! -f "release.keystore" ]; then
115+
echo "Keystore not found, skipping signing"
116+
exit 0
117+
fi
118+
# Sign AAB using jarsigner
119+
jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 \
120+
-keystore release.keystore \
121+
-storepass "$STORE_PASSWORD" \
122+
-keypass "$KEY_PASSWORD" \
123+
"$AAB_PATH" \
124+
"$KEY_ALIAS"
125+
# Verify the signature
126+
jarsigner -verify -verbose -certs "$AAB_PATH"
124127
125128
- name: Set release variables
126129
id: release_vars

0 commit comments

Comments
 (0)