Apk签名验证

APK打包流程镇楼图


Apk签名验证_第1张图片
2018-12-21_145729.png
  1. 通过AAPT工具进行资源文件(包括AndroidManifest.xml、布局文件、各种xml资源等)的打包,生成R.java文件。
  2. 通过AIDL工具处理AIDL文件,生成相应的Java文件。
  3. 通过Javac工具编译项目源码,生成Class文件。
  4. 通过DX工具将所有的Class文件转换成DEX文件,该过程主要完成Java字节码转换成Dalvik字节码,压缩常量池以及清除冗余信息等工作。
  5. 通过ApkBuilder工具将资源文件、DEX文件打包生成APK文件。
  6. 利用KeyStore对生成的APK文件进行签名。如果是正式版的APK,还会利用ZipAlign工具进行对齐处理,对齐的过程就是将APK文件中所有的资源文件举例文件的起始距离都偏移4字节的整数倍,这样通过内存映射访问APK文件 的速度会更快。

apk打包是需要经过签名步骤

Apk签名验证_第2张图片
2018-12-21_144659.png

可以看到有两个签名方案v1,v2。
7.0以前,使用v1签名方式,也就是jar signature;
7.0以后,引入v2签名方式。
重点就是:
只选择v2方式,7.0以下版本安装失败。
只选择v1打包,7.0和7.0以下版本都没问题。
可以同时勾选V1和V2则所有机型都没问题。

可以通过gradle配置

signingConfigs{
     release{
             v2SigningEnabled false
    }
}

签名的验证流程如下:


Apk签名验证_第3张图片
2018-12-21_144511.png

v2签名比普通的zip文件多一个签名区块。如果其他三个区块被修改,都会验证失败。所以v2比v1更安全
参考分析Android V2新签名打包机制

你可能感兴趣的