JenkinsCI:APK 上的 zipalign 失败:退出代码 1
Posted
技术标签:
【中文标题】JenkinsCI:APK 上的 zipalign 失败:退出代码 1【英文标题】:JenkinsCI : zipalign failed on APK : exit code 1 【发布时间】:2021-02-22 01:10:33 【问题描述】:我正在使用 Jenkins 来构建我的 android 项目。我们使用Android Signing Plugin 来签署apks。最近在一个分支上失败并显示以下错误日志:
[SignApksBuilder] /var/lib/jenkins/android-sdk/build-tools/29.0.2/zipalign -f -p 4 /var/lib/jenkins/workspace/Android/app/build/outputs/apk/production/release/app_productionRelease_0.11.1_HEAD_3048d80.apk /var/lib/jenkins/workspace/Android/SignApksBuilder-out/zipalign/aligned-app_productionRelease_0.11.1_HEAD_3048d80-1628945884194489230.apk
[Android] $ /var/lib/jenkins/android-sdk/build-tools/29.0.2/zipalign -f -p 4 /var/lib/jenkins/workspace/Android/app/build/outputs/apk/production/release/app_productionRelease_0.11.1_HEAD_3048d80.apk /var/lib/jenkins/workspace/Android/SignApksBuilder-out/zipalign/aligned-app_productionRelease_0.11.1_HEAD_3048d80-1628945884194489230.apk
FATAL: [SignApksBuilder] zipalign failed: exit code 1
ERROR: zipalign failed on APK /var/lib/jenkins/workspace/Android/app/build/outputs/apk/production/release/app_productionRelease_0.11.1_HEAD_3048d80.apk: exit code 1
这是一个发布版本,此分支上唯一有意义的更改是
将android gradle插件从4.0.2
更新为4.1.0
将 gradle 从 6.1.1
更新为 6.5
谁能解释一下出了什么问题?
PS:正如插件自述文件所说,我尝试将问题发布到Jenkins Jira,但似乎登录功能已损坏:/
谢谢!
【问题讨论】:
TBF,我不认为 AGP 版本是真正的问题。对于这个特定的项目,解决方案是降级到4.0.2
,但是我们还有另一个项目,AGP 4.0.2
和 gradle 6.1.1
失败
【参考方案1】:
在解决了这个奇怪的问题后,我从4.1.0
降级到4.0.2
。这解决了 Jenkins 中的 zipalign 插件在 3 年 内没有更新的问题,也许这将在 zipAlignPlugin 的下一次更新中得到解决> 在 Jenkins 中。
【讨论】:
android签名插件内部是否使用zipAlignPlugin? 我的 gradle 插件 4.1.1 和 gradle 版本 6.7.1 也有这个问题。好像插件有bug? 是的,它确实在内部使用了 zip align 使用来自构建工具 29.0.2 w/Jenkins 的外部 zipalign,同样的问题 Zeems最近在zipalign中解决了,不知道怎么用issuetracker.google.com/issues/162117652#comment21【参考方案2】:如果我理解正确运行 zipalign 至少在此 issue thread 中提到的最新 AGP 上是不必要的 可以用来验证输出的release apk是否正确对齐。
zipalign -c -v 4 signed.apk
【讨论】:
【参考方案3】:我的解决方案是在 gradle 项目选项上使用 zipalign,效果很好,但我没有尝试过 Jenkins 中包含用于签名 apk 的 zipalign 的插件。
【讨论】:
以上是关于JenkinsCI:APK 上的 zipalign 失败:退出代码 1的主要内容,如果未能解决你的问题,请参考以下文章
从命令行构建 APK 后使用 zopfli 重新压缩运行 zipalign 以使其更小
无法打开 'android-release-unsigned.apk' 作为 zip 存档(zipalign 错误)