缺少 AndroidManifest 文件 ApkSigner 异常

问题描述 投票:0回答:1

我正在尝试使用 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
 的链接

  • 工作流程
  • 应用程序gradle.build
请帮助我缩小我可能做错的范围。

android github-actions digital-signature android-app-bundle
1个回答
0
投票
我惨痛地了解到,

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"
您可以在此处查看整个工作流程。

干杯。

© www.soinside.com 2019 - 2024. All rights reserved.