APK簽名工具簡介
APK簽名 需要使用以下幾個工具:
其中apksigner和jarsigner作用類似,前者是谷歌官方提供的針對apk簽名及驗證的工具,功能更加強大。後者是java平臺通用的jar包簽名工具。在重簽名時,選用二者中任意一個皆可以。對已簽名過的apk進行重簽名時,請刪去META-INF目錄下的*.MF,*.SF,*.RSA檔案,之後執行重簽名即可。
keytool
是用來管理金鑰和證書的工具,它允許使用者管理自己的公鑰/私鑰對及與之相關聯的證書。同時,它也允許使用者以證書的形式來儲存通訊節點的公鑰。證書是一個實體(人或公司)的數字簽名的宣告。當資料被數字簽名時,簽名可以被驗證,以檢查資料的完整性和可靠性。完整性表示資料沒有被修改或篡改,可靠性意味著資料的確是來自創造並對其簽名的一方。
keytool -genkeypair -keystore demo.jks(或者demo.keystore) -alias luis -validity 10950
上述命令上將生成一個名為的demo.keystore,其中包含別名為luis的
jarsigner
是一個為jar包生成簽名並驗證簽名及jar包完整性的工具。注意:在jdk7及以上版本中執行jarsigner命令時,務必新增上-digestalg SHA1 -sigalg MD5withRSA
引數,以修改jdk7預設digest演算法sha256為sha1,修復Android低版本(4.2以下)出現的問題。
jarsigner -keystore demo.keystore -digestalg SHA1 -sigalg MD5withRSA -sigfile CERT -signedjar out.apk in.apk youralias
zipalign
是一款對APK檔案進行優化的工具。APK檔案本質上是一個zip壓縮文件,經過優化能使包內未壓縮的資料有序的排列,從而減少應用程式執行時的記憶體消耗。在使用jarsigner對APK重簽名之後,可以使用該工具優化已簽名APK檔案。
zipalign -v 4 in.apk out.apk //執行4位元組對齊優化操作
zipalign -c -v 4 in.apk //檢查當前APK是否已經執行過Align優化
apksigner
是一款在Android build tools 24.0.3及以上版本中提供的對apk檔案簽名以及驗證簽名信息的工具,它與jarsigner的作用類似,但比後者功能更加強大。注意在使用apksigner前,請先對APK執行zipalign,而不能在之後執行zipalign操作,這一點與jarsigner不同。
apksigner sign --ks demo.jks --out out.apk in.apk