Android APK的签名--笔记版 V1 签名和V2签名总结

本文介绍了Android APK的签名过程,重点对比了V1(JAR签名)和V2(Full APK签名)的区别。V1签名允许对压缩包进行修改,而V2签名则对整个APK进行验证,不支持修改。zipalign工具用于优化APK,必须在V2签名前执行。Android 7.0及以上版本支持V2签名,但7.0以下仅支持V1。
摘要由CSDN通过智能技术生成

1. 工具介绍

jarsigner 是JDK提供的针对jar包签名的通用工具,
位于 JDK/bin/jarsigner

apksigner 是Google官方提供的针对Android apk 签名验证的专用工具
位于 Android SDK/build-tools/SDK version/apksigner.bat
在Android Studio 中点击菜单 Build -> Generate signed apk … 可以打包签名

不管是apk 包,还是jar 包,本质都是zip 格式的压缩包,所以他们的签名过程都差不多(仅限V1签名),
以上两个工具都可以对Android apk 包进行签名


2.1 V1 和V2签名的区别

V1 签名是 jar signature

  • 来自JDK (jarsigner), 对zip 压缩包的每一个文件进行验证, 签名后还能对压缩包进行修改(移动/重新压缩文件)
  • 对 V1 签名的apk/jar 解压,在meta-INF 存放签名的文件(MANIFEST.MF, CERT.SF, CERT.RSA)
  • 其中 MANIFEST.MF 文件保存所有文件的SHA1 指纹(除了META-INF文件), 由此可知, V1 签名是对压缩包中单个文件签名验证

V2 签名是 Full apk signature
来自Google(apksigner), 对zip压缩包的整个文件验证, 签名后不能修改压缩包(包括zipalign),
对V2签名的apk解压,没有发现签名文件,重新压缩后V2签名就失效, 由此可知: V2签名是对整个APK签名验证

V2签名优点很明显:
    签名更安全(不能修改压缩包)
    签名验证时间更短(不需要解压验证),因而安装速度加快

从Android 7.0 开始,谷歌增加了新的签名发方式 V2 signature (APK signature )
但 Android 7.0 以下的版本,只能用旧的签名方案, V1 scheme (JAR signature)


2.2 zipalign和V2签名

位于Android SDK/build-tools/SDK版本/zipalign.exe
zipalign 是对zip包对齐的工具,使APK包内未压缩的数据有序排列对齐,从而减少APP运行时内存消耗
zipalign -v 4 in.apk out.apk //4字节对齐优化
zipalign -c -v 4 in.apk //检查APK是否对齐

zipalign可以在V1签名后执行
但zipalign不能在V2签名后执行,只能在V2签名之前执行


3. 签名步骤

1. 生成密钥对
如果已经有密钥库了,这一个步骤是可以忽略的.

我们可以用同一个密钥库对一堆app 进行签名,为什么呢,这个想想也很简单,假设我开发了一堆APP, 我肯定是用同一个密钥对它们进行加密的呀.



Eclipse或Android Studio在Debug时,对App签名都会使用一个默认的密钥库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值