APK Signature Scheme v2
来源:互联网 发布:网络的利大于弊 编辑:程序博客网 时间:2024/05/16 05:54
背景知识
老司机要开车了,你准备好了吗?
Android Studio 2.2 最近发布了许多新增功能和改进功能(详情请戳这里)
对于Android开发者来说,我想大家应该都知道,在 Android 7.0 Nougat 中引入了全新的 APK Signature Scheme v2,所以我大致总结一下,我们开发者需要了解的新的打包的方式和签名步骤,想深入了解原理可以移步到深入解析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校验,但是我相信,一旦等到这种方式成熟之后,它会成为一个必需品,毕竟安全第一嘛,我们还是要接纳新事物的,好了,大概就讲这么多,有需要的可以看看。
转自---http://www.jianshu.com/p/3a179acc7c4a
阅读全文
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)问题
- 欢迎使用CSDN-markdown编辑器
- PKUSC2017酱油记
- java 编程思想--I/O系统(二)
- 宽文之感悟 JDF2框架
- codeforces 628B New Skateboard
- APK Signature Scheme v2
- python 出现InsecurePlatformWarning: A true SSLContext object is not available错误
- BitmapFactory.decodeFile(filePath, options) 返回 Null 6.0权限
- libjpeg的ARM linux移植
- Kafka——使用spring进行集成
- CentOS7挂起再打开上不了网问题解决方案
- 新手必备代码片段整理
- codeforces 632C The Smallest String Concatenation 排序
- Activity如何缓存