Android簽名概述和多渠道打包

1.安卓應用簽名

V1

 

 

 

簽名過程詳細描述

不想深究可直接閱讀簡述模塊。

 

解壓一個APK文件,用V1簽名的。

 

會有三個這樣的文件

 

 

 

 

 

單獨分析一條:

 

MANIFEST.MF

Name: AndroidManifest.xml

SHA-256-Digest: Oxzxu/fRfdUg00s2LvddlkY9d6ut2fs9l4zBj2otNl0=

 

CERT.SF

Name: AndroidManifest.xml

SHA-256-Digest: y+Sc5MScGxRMbjr07+F78kpNBHmZ+PkBmkG2R39CjNs=

 

算出SHA256

 

 

 

 

就得到了這個值。

 

簽名過程簡述

 

 

 

 

https://cs.android.com/android/platform/superproject/+/master:build/make/tools/signapk/src/com/android/signapk/SignApk.java;l=116;bpv=0;bpt=1

 

查看SignApk源碼,分析簽名流程。

 

校驗簽名的過程

 

1.       首先校驗cert.sf文件的簽名

 

計算cert.sf文件的摘要,與通過簽名者公鑰解密簽名得到的摘要進行對比,如果一致則進入下一步;

 

2.       校驗manifest.mf文件的完整性

 

計算manifest.mf文件的摘要,與cert.sf主屬性中記錄的摘要進行對比,如一致則逐一校驗mf文件各個條目的完整性;

 

3.       校驗apk中每個文件的完整性

 

逐一計算apk中每個文件(META-INF目錄除外)的摘要,與mf中的記錄進行對比,如全部一致,剛校驗通過;

 

4.       校驗簽名的一致性

 

如果是升級安裝,還需校驗證書籤名是否與已安裝app一致。

 

 

 

V2

Android 7.0 引入APK簽名方案V2。

 

爲什麼引入V2簽名

 v1 簽名不保護 APK 的某些部分,例如 ZIP 元數據。APK 驗證程序需要處理大量不可信(尚未經過驗證)的數據結構,然後會捨棄不受簽名保護的數據。這會導致相當大的受攻擊面。此外,APK 驗證程序必須解壓所有已壓縮的條目,而這需要花費更多時間和內存。爲了解決這些問題,Android 7.0 中引入了 APK 簽名方案 v2。

V2的簽名過程

 

 

 

 

V2的校驗簽名過程

 

V3

https://source.android.google.cn/security/apksigning/v3

 

V4

https://developer.android.google.cn/preview/features#signature-scheme-v4

 

 

2.基於V2的多渠道打包

爲什麼要實現做多渠道打包

每當發新版本時,Android客戶端會被分發到各個應用市場,比如小米、華爲、應用寶等。爲了統計這些市場的效果,比如安裝數,活躍數、需要有一種方法來唯一標識它們。

 

傳統方式的問題是什麼

 

 需要手動配置渠道,每次修改完之後都需要重新打包。

假如打一個包的時間是1分鐘,打10個渠道包就需要10分鐘。

可以接受,但不夠優雅。

解決方案是什麼

美團walle方案。

 

 

3. 結合實際項目中的實踐

配合360加固等,gradle自定義task實現。

 

 

參考資料

博客v1

https://blog.csdn.net/zwjemperor/article/details/80877305

博客v2

https://blog.csdn.net/zwjemperor/article/details/81051120

v2 騰訊

https://cloud.tencent.com/developer/article/1006237

v1 美團

https://tech.meituan.com/2014/06/13/mt-apk-packaging.html

v2 美團

https://tech.meituan.com/2017/01/13/android-apk-v2-signature-scheme.html

安卓官網 v2,v3

https://source.android.google.cn/security/apksigning/v2

https://source.android.google.cn/security/apksigning/v3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章