Verify universal APKs generated from Play bundles

This commit is contained in:
SimpleTest 2026-07-28 04:32:13 +03:00
parent 3f67df1733
commit c8e95b8c77
2 changed files with 47 additions and 3 deletions

View File

@ -299,7 +299,33 @@ RUN --mount=type=cache,target=/home/gradle/.gradle,uid=1000,gid=1000 \
app/build/outputs/bundle/release/signing-verification.txt \
&& java -jar /opt/bundletool.jar validate \
--bundle=app/build/outputs/bundle/release/app-release.aab \
>app/build/outputs/bundle/release/bundletool-validation.txt
>app/build/outputs/bundle/release/bundletool-validation.txt \
&& java -jar /opt/bundletool.jar build-apks \
--bundle=app/build/outputs/bundle/release/app-release.aab \
--output=app/build/outputs/bundle/release/app-release-universal.apks \
--mode=universal \
--ks=/run/secrets/android_upload_keystore \
--ks-pass=file:/run/secrets/android_upload_password \
--ks-key-alias="${WNH_ANDROID_SIGNING_KEY_ALIAS}" \
--key-pass=file:/run/secrets/android_upload_password \
--overwrite \
&& unzip -p \
app/build/outputs/bundle/release/app-release-universal.apks \
universal.apk \
>app/build/outputs/bundle/release/app-release-universal.apk \
&& "${ANDROID_HOME}/build-tools/37.0.0/apksigner" \
verify --verbose --print-certs \
app/build/outputs/bundle/release/app-release-universal.apk \
>app/build/outputs/bundle/release/universal-signing-certificate.txt \
&& grep -Fqi \
"certificate SHA-256 digest: $(printf '%s' "${WNH_SIGNING_CERT_SHA256}" | tr -d ':')" \
app/build/outputs/bundle/release/universal-signing-certificate.txt \
&& "${ANDROID_HOME}/build-tools/37.0.0/aapt2" dump badging \
app/build/outputs/bundle/release/app-release-universal.apk \
| sed -n "s/^package: name='\\([^']*\\)'.*/\\1/p" \
>app/build/outputs/bundle/release/universal-package-name.txt \
&& grep -Fx "org.whoneedhelp.mobile" \
app/build/outputs/bundle/release/universal-package-name.txt
FROM scratch AS release-artifact
@ -311,9 +337,21 @@ COPY --from=android-release-sdk \
COPY --from=android-release-sdk \
/workspace/android/app/build/outputs/bundle/release/app-release.aab \
/who-need-help-release.aab
COPY --from=android-release-sdk \
/workspace/android/app/build/outputs/bundle/release/app-release-universal.apks \
/who-need-help-release-universal.apks
COPY --from=android-release-sdk \
/workspace/android/app/build/outputs/bundle/release/app-release-universal.apk \
/who-need-help-release-universal.apk
COPY --from=android-release-sdk \
/workspace/android/app/build/outputs/apk/release/signing-certificate.txt \
/signing-certificate.txt
COPY --from=android-release-sdk \
/workspace/android/app/build/outputs/bundle/release/universal-signing-certificate.txt \
/universal-signing-certificate.txt
COPY --from=android-release-sdk \
/workspace/android/app/build/outputs/bundle/release/universal-package-name.txt \
/universal-package-name.txt
COPY --from=android-release-sdk \
/workspace/android/app/build/outputs/apk/release/package-name.txt \
/package-name.txt

View File

@ -95,8 +95,12 @@ docker build \
for artifact in \
"$OUTPUT_DIR/who-need-help-release.apk" \
"$OUTPUT_DIR/who-need-help-release.aab" \
"$OUTPUT_DIR/who-need-help-release-universal.apks" \
"$OUTPUT_DIR/who-need-help-release-universal.apk" \
"$OUTPUT_DIR/signing-certificate.txt" \
"$OUTPUT_DIR/universal-signing-certificate.txt" \
"$OUTPUT_DIR/package-name.txt" \
"$OUTPUT_DIR/universal-package-name.txt" \
"$OUTPUT_DIR/bundle-signing-verification.txt" \
"$OUTPUT_DIR/bundletool-validation.txt" \
"$OUTPUT_DIR/source-fingerprint.sha256" \
@ -111,5 +115,7 @@ done
sha256sum \
"$OUTPUT_DIR/who-need-help-release.apk" \
"$OUTPUT_DIR/who-need-help-release.aab"
echo "Signed Android APK, Play AAB, certificate report, and lint report: $OUTPUT_DIR"
"$OUTPUT_DIR/who-need-help-release.aab" \
"$OUTPUT_DIR/who-need-help-release-universal.apks" \
"$OUTPUT_DIR/who-need-help-release-universal.apk"
echo "Signed Android APK, Play AAB, universal APK set, reports, and lint report: $OUTPUT_DIR"