我正在尝试使用 GitHub Actions Workflow 将
multi-modular
Android 应用程序发布到 Playstore。
我最初收到此签名错误:
Run r0adkll/upload-google-play@v1
Creating a new Edit for this release
Validating track 'production'
Uploading app-release.aab
Error: The Android App Bundle was not signed. Please sign the bundle using jarsigner.
这促使我检查
aab
文件是否已正确签名。
我添加了这 2 个工作流程步骤来检查
aab
文件是否存在以及提取 aab 文件。
- name: Check AAB Existence
run: ls -l app/build/outputs/bundle/release/
- name: Extract the contents of the AAB
run: unzip -l app/build/outputs/bundle/release/app-release.aab
这是工作流程中的验证步骤。
- name: Verify Signature
run: $ANDROID_SDK_ROOT/build-tools/34.0.0/apksigner verify --print-certs --verbose app/build/outputs/bundle/release/app-release.aab
通过上述 2 个步骤,我确认 aab
Android Manifest.xml
文件也存在。但是,即使在
清洁和重建我的项目之后,此错误仍然存在。
Run $ANDROID_SDK_ROOT/build-tools/34.0.0/apksigner verify --print-certs --verbose app/build/outputs/bundle/release/app-release.aab
Error: Exception in thread "main" com.android.apksig.apk.ApkFormatException: Missing AndroidManifest.xml
at com.android.apksig.ApkSigner.getAndroidManifestFromApk(ApkSigner.java:970)
at com.android.apksig.ApkVerifier.getAndroidManifestFromApk(ApkVerifier.java:1225)
这是我的 workflow.yaml
和
app gradle.build.kts
的链接
请帮助我缩小我可能做错的范围。
ApkSigner
APK
(Android Package Kit)文件,而不是.aab
(Android App Bundle)文件。
要验证.aab
文件,您可以使用Bundletool,这是Google提供的命令行工具。 但是,对我有用的是首先通过以下步骤签署
.aab
:
- name: Sign AAb
id: sign
uses: r0adkll/sign-android-release@v1
with:
releaseDirectory: app/build/outputs/bundle/release
signingKeyBase64: ${{ secrets.KEYSTORE }}
alias: ${{ secrets.SIGNING_KEY_ALIAS }}
keyStorePassword: ${{ secrets.SIGNING_STORE_PASSWORD }}
keyPassword: ${{ secrets.SIGNING_KEY_PASSWORD }}
然后我简单地使用 job.status
- run: echo "Build status report=${{ job.status }}."
这就是成功的结果:
Run echo "Build status report=success."
echo "Build status report=success."
shell: /usr/bin/bash -e {0}
env:
JAVA_HOME: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/18.0.2-101/x64
JAVA_HOME_18_X64: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/18.0.2-101/x64
GRADLE_BUILD_ACTION_SETUP_COMPLETED: true
GRADLE_BUILD_ACTION_CACHE_RESTORED: true
SIGNED_RELEASE_FILE: app/build/outputs/bundle/release/app-release.aab
Build status report=success.
这是签名作业失败的结果:
Run echo "Build status report=failure"
您可以在此处查看整个工作流程。