APK打包流程鎮(zhèn)樓圖
- 通過(guò)AAPT工具進(jìn)行資源文件(包括AndroidManifest.xml档泽、布局文件、各種xml資源等)的打包辽旋,生成R.java文件珠增。
- 通過(guò)AIDL工具處理AIDL文件,生成相應(yīng)的Java文件葬馋。
- 通過(guò)Javac工具編譯項(xiàng)目源碼卖鲤,生成Class文件。
- 通過(guò)DX工具將所有的Class文件轉(zhuǎn)換成DEX文件畴嘶,該過(guò)程主要完成Java字節(jié)碼轉(zhuǎn)換成Dalvik字節(jié)碼蛋逾,壓縮常量池以及清除冗余信息等工作。
- 通過(guò)ApkBuilder工具將資源文件窗悯、DEX文件打包生成APK文件区匣。
- 利用KeyStore對(duì)生成的APK文件進(jìn)行簽名。如果是正式版的APK蒋院,還會(huì)利用ZipAlign工具進(jìn)行對(duì)齊處理亏钩,對(duì)齊的過(guò)程就是將APK文件中所有的資源文件舉例文件的起始距離都偏移4字節(jié)的整數(shù)倍,這樣通過(guò)內(nèi)存映射訪問(wèn)APK文件 的速度會(huì)更快欺旧。
apk打包是需要經(jīng)過(guò)簽名步驟
可以看到有兩個(gè)簽名方案v1姑丑,v2。
7.0以前辞友,使用v1簽名方式彻坛,也就是jar signature;
7.0以后,引入v2簽名方式踏枣。
重點(diǎn)就是:
只選擇v2方式,7.0以下版本安裝失敗昌屉。
只選擇v1打包,7.0和7.0以下版本都沒(méi)問(wèn)題茵瀑。
可以同時(shí)勾選V1和V2則所有機(jī)型都沒(méi)問(wèn)題间驮。
可以通過(guò)gradle配置
signingConfigs{
release{
v2SigningEnabled false
}
}
簽名的驗(yàn)證流程如下:
v2簽名比普通的zip文件多一個(gè)簽名區(qū)塊。如果其他三個(gè)區(qū)塊被修改马昨,都會(huì)驗(yàn)證失敗竞帽。所以v2比v1更安全
參考分析Android V2新簽名打包機(jī)制