天天看點

APK簽名工具簡介

APK簽名 需要使用以下幾個工具:

  • keytool
  • jarsigner
  • zipalign
  • apksigner

其中apksigner和jarsigner作用類似,前者是谷歌官方提供的針對apk簽名及驗證的工具,功能更加強大。後者是java平台通用的jar包簽名工具。在重簽名時,選用二者中任意一個皆可以。對已簽名過的apk進行重簽名時,請删去META-INF目錄下的*.MF,*.SF,*.RSA檔案,之後執行重簽名即可。

keytool

keytool是用來管理密鑰和證書的工具,它允許使用者管理自己的公鑰/私鑰對及與之相關聯的證書。同時,它也允許使用者以證書的形式來存儲通信節點的公鑰。證書是一個實體(人或公司)的數字簽名的聲明。當資料被數字簽名時,簽名可以被驗證,以檢查資料的完整性和可靠性。完整性表示資料沒有被修改或篡改,可靠性意味着資料的确是來自創造并對其簽名的一方。

keytool -genkeypair -keystore demo.jks(或者demo.keystore) -alias luis -validity 10950
           

上述指令上将生成一個名為的demo.keystore,其中包含别名為luis的

jarsigner

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

zipalign是一款對APK檔案進行優化的工具。APK檔案本質上是一個zip壓縮文檔,經過優化能使包内未壓縮的資料有序的排列,進而減少應用程式運作時的記憶體消耗。在使用jarsigner對APK重簽名之後,可以使用該工具優化已簽名APK檔案。

zipalign -v 4 in.apk out.apk   //執行4位元組對齊優化操作
zipalign -c -v 4 in.apk  //檢查目前APK是否已經執行過Align優化
           

apksigner

apksigner是一款在Android build tools 24.0.3及以上版本中提供的對apk檔案簽名以及驗證簽名資訊的工具,它與jarsigner的作用類似,但比後者功能更加強大。注意在使用apksigner前,請先對APK執行zipalign,而不能在之後執行zipalign操作,這一點與jarsigner不同。

apksigner sign --ks demo.jks --out out.apk in.apk