Android 使用 v3 版本签名打包apk

Android签名方案

Google文档:https://source.android.google.cn/docs/security/features/apksigning?hl=zh-cn
Android 系统从诞生到现在的1.0版本,一共经历了4代应用签名方案,分别是v1、v2、v3和v4方案。

v1 方案:基于 JAR 签名。(劣势:签名校验速度慢,完整性保障不够)
v2 方案:APK 签名方案 v2,在 Android 7.0 引入。
v3 方案:APK 签名方案v3,在 Android 9.0 引入。
v4 方案:APK 签名方案v4,在 Android 11.0 引入。(用来支持 ADB 增量 APK 安装。目前的使用场景不多,有需要的请自行解决。)

其中,v1 到 v2 是颠覆性的,主要是为了解决 JAR 签名方案的安全性问题,而到了 v3 方案,其实结构上并没有太大的调整,可以理解为 v2 签名方案的升级版。区别仅在于v3版本解决了v2版本不能更换签名秘钥的问题。
关于v1,v2,v3详细文档请移步https://blog.51cto.com/u_15520037/5703487,此处不在赘述。

怎么查看apk使用的签名版本?

AndroidStudio已经集成了apksigner工具,只需要进入对应目录执行命令即可

apksigner.bat

步骤:windows+r,输入cmd,进入命令行模式,进入AndroidSdk安装目录,比如我自己的路径为D:\AndroidSdk\build-tools\29.0.3,执行 “apksigner verify -v apk路径”

apksigner verify -v  (待验证的apk地址)
例:apksigner verify -v  D:\androidDemo\ASVersionTest\app\build\outputs\apk\release\ASVersionSign.apk

结果如下:
查看v3方案签名包结果


v3方案签名包效果图

未支持v3方案签名包效果图

apk地址有误找不到包的异常

怎么使用v3版本签名?

低版本的AS提供了v1,v2版本的选项
image.png
image.png

但是高版本的AS在打包的时候,光秃秃的,没有选择签名版本的选项,直接打出的包也是只支持v2版本的签名
image.png
image.png

这种情况下,可以直接用apksigner进行签名

apksigner sign --ks (签名地址) --ks-key-alias (别名) --out (签名后的apk地址) (待签名apk地址)
例:apksigner sign --ks E:\winsafe.keystore --ks-key-alias winsafe --out E:\JXSDev\app\build\outputs\apk\release\MobilDealer_sign_1.2.9.apk E:\JXSDev\app\build\outputs\apk\release\MobilDealer1.2.9.apk

以上的待签名apk获取如下
image.png
image.png

执行后,需要输入keystore文件的密码,此处是密文状态,确认输入无误后直接回车,
image.png

执行完后会回到初始状态,查看前面配置的签名后的apk地址,已经有包生成了。利用以上的验证命令,验证生成包的版本,成功!

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

推荐阅读更多精彩内容