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优化工具zipalign的详细介绍和使用

从命令行构建 APK 后使用 zopfli 重新压缩运行 zipalign 以使其更小

无法打开 'android-release-unsigned.apk' 作为 zip 存档(zipalign 错误)

运行zipalign时出错

app-release.apk 是 zipaligned apk 吗?

生成从 Android Studio 签名的 .apk 时,zipalign 会自动执行吗?