升级targetSdk到30后adb安装报错resources.arsc需未压缩4字节对齐
解决方案
- 首先确认zipalign的执行顺序是否符合你用的签名方案:
- 若使用
apksigner(v2/v3/v4签名方案):zipalign必须在签名前执行 - 若使用
jarsigner(仅v1签名方案):zipalign必须在签名后执行
签名后再执行zipalign会破坏v2及以上等级的签名,也会导致对齐规则失效。
- 若使用
- 在模块级
build.gradle的android配置块中添加aapt规则,强制不压缩resources.arsc:aaptOptions { noCompress 'arsc' } - 确认你执行的
zipalign二进制文件来自SDK对应版本的构建工具目录,也就是[你的SDK路径]/build-tools/30.0.2/zipalign,避免使用系统环境变量中其他低版本的zipalign工具,不同版本的对齐规则存在差异。 - 对齐操作完成后,先执行验证命令确认对齐结果符合要求,再执行安装操作:
命令输出最后出现zipalign -c -v 4 你的安装包.apkVerification succesful才代表对齐有效。 - 如果你使用Android Gradle插件构建项目,不需要手动执行zipalign命令,只需要在对应buildType配置中开启对齐即可,手动执行反而容易触发顺序问题:
buildTypes { release { // 其他配置 zipAlignEnabled true } }
内容的提问来源于stack exchange,提问作者rhd
相关产品推荐
相关产品推荐

