1、问题:使用美团walle(旧版jar包)命令行方式打包后,在android P (9.0)的手机上安装APP时候,出现了以下问题:
2、分析:根据错误的原因,主要是android p 需要 签名块(apksigningblock)的长度确保为 4096 的倍数。根据不同尝试,总结以下当2个条件满足时就会发生该问题:
旧版walle + build-tools 28.0.3 :我使用的是最新版 apksigner(build-tools 28.0.x) 进行签名,使用旧版的walle工具生成的apk签名块的长度变成了8225,不为4096的倍数。由于android P上使用了最新V3签名,我猜测是apksigner对apk进行签名时,使用的规则与之前的版本不一样,因此使用walle打渠道包后就出现了问题。
3、解决方式:
(1)如果不更新walle版本,可以使用28.0.x以下的版本,如27.0.3,26.0.x,25.0.x上的apksigner签名后再进行多渠道打包就无上述问题
(2)更新walle版本,就可以用28.0.x版本的apksigner进行签名后再打多渠道包
在参考资料(1)链接里@vclub自己编译的walle.jar https://github.com/vclub/vclub.github.io/raw/master/walle-cli-all.jar ,亲测可以解决上述问题。
参考资料来源(1)https://github.com/Meituan-Dianping/walle/issues/264
(2)https://source.android.google.cn/security/apksigning/v3.html