使用AndroidSigning@3签名AAB时遇MinSdkVersionException,求解决方案
问题描述
我的Azure DevOps YAML配置如下:
- task: AndroidSigning@3 displayName: Signing the AAB file inputs: apkFiles: '**/*.aab' apksignerKeystoreFile: '**********' apksignerKeystorePassword: $(APK_SIGNER_KEYSTORE_PASSWORD) apksignerKeystoreAlias: $(APK_SIGNER_KEYSTORE_ALIAS) apksignerKeyPassword: $(APK_SIGNER_KEY_PASSWORD)
尝试签名AAB包时收到以下错误:
Caused by: com.android.apksig.apk.MinSdkVersionException: Failed to determine APK's minimum supported Android platform version
Caused by: com.android.apksig.apk.ApkFormatException: Missing AndroidManifest.xml
解决方法
1. 验证AAB文件完整性
- 将AAB包后缀改为
.zip后解压,检查base/manifest/路径下是否存在AndroidManifest.xml文件。如果文件缺失,说明构建过程生成的AAB包损坏,需重新执行构建任务,确保构建无报错。 - 确认构建输出目录中只有目标AAB包,避免通配符匹配到无效文件。
2. 修正路径匹配规则
- 避免使用过于宽泛的通配符,改为指定AAB文件的精确路径,比如构建产物存放在
$(Build.ArtifactStagingDirectory)下时:
apkFiles: '$(Build.ArtifactStagingDirectory)/**/*.aab'
缩小匹配范围可以减少误匹配概率。
3. 切换到适配AAB的签名工具
AndroidSigning@3的apksigner是为APK设计的签名工具,不兼容AAB结构,需改用jarsigner签名:
- task: AndroidSigning@3 displayName: Signing the AAB file inputs: apkFiles: '**/*.aab' jarsignerKeystoreFile: '**********' jarsignerKeystorePassword: $(APK_SIGNER_KEYSTORE_PASSWORD) jarsignerKeystoreAlias: $(APK_SIGNER_KEYSTORE_ALIAS) jarsignerKeyPassword: $(APK_SIGNER_KEY_PASSWORD) zipalign: false # AAB无需zipalign,仅APK需要该操作
4. 检查构建环境的Android工具版本
确保构建代理上安装的Android Build Tools版本在30.0.3及以上,旧版本对AAB的签名支持存在缺陷。
内容的提问来源于stack exchange,提问作者Prashant Andhale
相关产品推荐
相关产品推荐

