APK Signature Scheme v2
来源:互联网 发布:笔记类软件 编辑:程序博客网 时间:2024/05/16 08:53
APK Signature Scheme v2
对于Android开发者来说,我想大家应该都知道,在 Android 7.0 Nougat 中引入了全新的 APK Signature Scheme v2,所以我大致总结一下,我们开发者需要了解的新的打包的方式和签名步骤。
基本信息
- 用于验证 APK 完整性的 APK 加密签名现在直接位于 ZIP Central Directory 前面。
- 在 v1 中,签名通过整个 APK 文件的二进制内容进行计算并验证,而不是通过归档中每个文件的已解压文件内容。
- 可同时通过 v1 和 v2 签名对 APK 进行签署,以使其仍能向后兼容以前的 Android 版本。
原因
为什么谷歌要做这个事情呢?第一点毋庸置疑,肯定是处于安全性的考虑,之前的校验方式开发者可以在打包之后对apk做很多处理,第二为了性能考虑,安装校验的时候不需要再解压缩校验,从而提升安装速度(说句玩笑话,个人感觉没什么鸟用,也不需要关系)
那么问题来了
全新的签名给我们程序员带来的麻烦却很大:
- 由于在 v1 中仅验证未解压的文件内容,因此,在 APK 签署后可进行许多修改 - 可以移动甚至重新压缩文件。事实上,编译过程中要用到的 zipalign 工具就是这么做的,它用于根据正确的字节限制调整 ZIP 条目,以改进运行时性能。而且我们也可以利用这个东西,在打包之后修改META-INF目录下面的内容,或者修改Zip的注释来实现多渠道的打包,在v1签名中都可以校验通过
- v2 签名将验证归档中的所有字节,而不是单个 ZIP 条目,因此, 在签署后无法再运行 zipalign 。正因如此,现在,在编译过程中,Google将压缩、调整和签署合并成一步完成。
- 如有任何自定义任务篡改 APK 文件或对其进行后处理(无论以任何方式),那么v2 签名会有作废的风险,从而导致您的 APK 与 Android 7.0 及更高版本不兼容。
解决途径
- 如果我们选择手动签名(比如使用命令行)那么 Android SDK 中提供了一个名为 apksigner 的新工具,该工具可同时提供 v1 和 v2 APK 签署与验证。请注意,如果您使用 v2 签名,则在运行 apksigner之前,必须先运行 zipalign 。
- 来自 JDK 的 jarsigner 工具与 Android v2 签名不兼容,因此,如果您要保留 v2 签名,您不能用它来重新签署 APK。
- 如果我们还想使用之前的打包方式,不做修改,那么Google也是为我们提供了配置方法的用来关闭v2签名:
v1SigningEnabled falsev2SigningEnabled false
总结
虽然说现在Google有提供方法来关闭v2校验,但是我相信,一旦等到这种方式成熟之后,它会成为一个必需品,毕竟安全第一嘛,我们还是要接纳新事物的,好了,大概就讲这么多,有需要的可以看看。
转自:APK Signature Scheme v2
0 0
- APK Signature Scheme v2
- APK Signature Scheme v2
- APK Signature Scheme v2
- Android APK Signature Scheme v2
- Android APK Signature Scheme v2
- APK Signature Scheme v2官方介绍
- Android studio Apk signature scheme v2扫盲
- Android 7.0APK签名新方案-APK signature scheme v2
- 腾讯应用宝提审问题-不支持APK Signature Scheme V2
- 采用Signature Scheme v2签名方式的APK预置失败
- android多渠道打包方案总结及APK signature scheme v2兼容
- [FAQ19857]采用Signature Scheme v2签名方式的APK预置进系统失败
- Android的APK Signature Scheme v2签名及一款基于Java环境的校验工具介绍
- Android Signature V2 Scheme签名下批量生成渠道包
- Android 7.0多渠道打包Signature Scheme v2签名失效
- AndroidStudio打包问题:signature versions:V1(Jar Signature) and V2(Full APK Signature) 的不同点
- 在使用Androidstudio打包签名apk文件时,Signature Versions V1(Jar Signature) V2(Full APK Signature)选项
- android studio更新之后打包遇到V1(Jar Signature)、 V2(Full APK Signature)问题
- Exception in thread "main" java.util.MissingFormatArgumentException: Format specifier 's'
- ThreaLocal的使用及其原理
- 【SpringBoot】迭代发布下的Jar瘦身实践
- 常用的正则表达式
- Tensorflow实现照片风格的迁移
- APK Signature Scheme v2
- 线程的操作 继承 thread 和实现renable 接口
- 2017/1/7 FragmentTabHost的Tabspec的 setIndicator()方法不显示图片
- 运动规划/路径规划/轨迹规划
- Linux下没有sz和rz命令
- Django学习笔记_说明
- ubuntu16.04 + cuda8.0安装配置
- 二维指针初始化
- java 连接数据库 jdbc