apk在android11以上系统无法安装问题

本文首发于公众号【一个老码农】

前段时间升级了Android apptargetSdkVersionapk经过加固并重新签名后出现了在Android11以上系统无法安装,11以下系统可以正常使用的问题,在小米手机上安装报错:packageInfo is null

经过排查发现,是因为加固后重新签名使用的是jarsigner命令行的方式,而此方式是属于V1签名,而Android11需要V2以上签名才可以进行安装。并且在签名之前没有进行字节对齐

V1签名:

jarsigner -verbose -keystore xxx.jks -storepass 密码 -signedjar singed.apk jiagu.apk 别名

解决方案:
使用加固工具加固后,apk会被解签名,再次签名时需要先把apk进行字节对齐,然后再用apksigner命令行工具进行签名,而apksigner则支持V1、V2、V3签名。

  1. apk对齐:
zipalign -p -f -v 4 jiagu.apk aligned.apk

以上命令,jiagu.apk是指加固后的apkaligned.apk是指对齐后的apk

  1. apksigner签名:
apksigner sign --ks xxx.jks --ks-key-alias 别名 --ks-pass pass:jks密码 --key-pass pass:别名密码 --out result.apk aligned.apk

经过以上命令后,result.apk即是我们需要的最终的安装包

注意:Android studio自带zipalignapksigner命令,如果提示命令不存在,则需要进行环境变量配置,或者命令行执行时直接指定zipalignapksigner的绝对路径。

原文地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容