APK打包流程镇楼图
- 通过AAPT工具进行资源文件(包括AndroidManifest.xml、布局文件、各种xml资源等)的打包,生成R.java文件。
- 通过AIDL工具处理AIDL文件,生成相应的Java文件。
- 通过Javac工具编译项目源码,生成Class文件。
- 通过DX工具将所有的Class文件转换成DEX文件,该过程主要完成Java字节码转换成Dalvik字节码,压缩常量池以及清除冗余信息等工作。
- 通过ApkBuilder工具将资源文件、DEX文件打包生成APK文件。
- 利用KeyStore对生成的APK文件进行签名。如果是正式版的APK,还会利用ZipAlign工具进行对齐处理,对齐的过程就是将APK文件中所有的资源文件举例文件的起始距离都偏移4字节的整数倍,这样通过内存映射访问APK文件 的速度会更快。
apk打包是需要经过签名步骤
可以看到有两个签名方案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
}
}
签名的验证流程如下:
v2签名比普通的zip文件多一个签名区块。如果其他三个区块被修改,都会验证失败。所以v2比v1更安全
参考分析Android V2新签名打包机制