jarsigner簽名,之前都是通過AS進行簽名,通過這種方式也是可以簽名的,需要提前把需要的東西準備好,現在把步驟記錄在下面。(下面的操作都是在jdk的路徑下進行操作)
1.首先準備Jdk的路徑(在android studio中檢視方法):
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM0AzNwczM3EDMyITM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
或者 :首先檢視系統是否安裝有jdk,打開cmd在DOS視窗輸入 java -version檢視jdk版本資訊
然後把未簽名的檔案和 簽名檔案 , 放到一個 路徑下,下面才是路徑:
然後打開,keytool, 打開一個指令視窗, 在keytool的 視窗下,打開 -jer 指令
2. 然後打開cmd,進入到上面的jdk路徑下。
準備工作,把需要簽名的檔案 abc-unsigned.apk 和簽名檔案 abc.keystore (别名是abb) 放到jdk的路徑下。
然後開始在cmd中輸入指令行:
jarsigner -verbose -keystore abc.keystore -signedjar abc_signed.apk abc_unsign.apk abb
上面這一句指令行中需要改變的參數值是:
abc.keystore apk需要的簽名檔案
abc_signed.apk 簽好名之後apk的名字
abc_unsign.apk 未簽名的apk名字
abb 簽名的别名
3.Enter,之後輸入簽名檔案的密碼
補充一張效果:
完成如圖
如果是 jdk 1.8 指令行還需要補充一下:
最近将電腦中的JDK更新到了最新的JDK8,沒想到在給apk打包簽名的時候,發現使用JDK8中的jarsigner指令簽名的apk無法安裝。最終在android sdk官網http://developer.android.com/查尋到原因
介紹中有一條注意事項,說JDK7修改了預設的簽名算法,是以給apk簽名時要自己通過jarsigner指令的-sigalg 和 -digestalg選項分别指定簽名算法名字和摘要算法名字,官方文檔中給定算法分别是SHA1withRSA和SHA1
JDK1.8 指令:(需要指定tsa,如下面指令)
jarsigner -tsa http://timestamp.digicert.com -sigalg SHA1withRSA -digestalg SHA1 -verbose -keystore android.keystore -signedjar signed.apk unsign.apk alias_name
時間 : -tsa http://timestamp.digicert.com
簽名算法名字: -sigalg
摘要算法名字: -digestalg
簽名結果:
apk 之是以需要簽名, 是出于安全考慮的認證方式, apk 沒有簽名或者前後簽名不一緻都無法安裝。 任何對apk的篡改都需要重新對apk簽名才能安裝, 由于篡改者是無法擷取原始apk的秘鑰資訊,是以篡改後的apk由于簽名不一緻是無法替換原始apk的,這樣既保證了apk的安全性,同時也保證了手機的安全和穩定性 。
包簽名之後,再驗證一下,是否簽名成功。
指令行: jarsigner -verify [選項] jar 檔案,現有下面三種情況:
a. 未簽名:
b.簽名成功:
c .簽名有問題的:
這種出現弱算法問題的,我這裡是因為 -sigalg 屬性填寫的MD5withRSA ,與自身的這個屬性沒有比對,
是以解決方法, 通過下面指令行,檢視自己簽名檔案的資訊,把那個簽名算法名稱填寫到 -sigalg後面,然後再次簽名
(相關連結:https://jingyan.baidu.com/article/49711c61489e72fa441b7cf0.html?st=2&net_type=1&bd_page_type=1&os=0&rst=)
Keytool -list -v - alias 别名 -keystore 簽名檔案.keystore -storepass 簽名密碼
通過檢視簽名key的資訊,填寫上面的内容(http://p.primeton.com/articles/53b3bbb0e138235d650000a4):
如下效果:
至此jdk 1.8 簽名完成,希望可以幫助大家。
在預設的jdk 安裝目錄下 如: C:\Program Files\Java\jdk1.7.0_09\bin 下的keytool.exe 工具 用cmd 打開
打包時,jdk1.8時的路梳理:
jarsigner -tsa http://timestamp.digicert.com -sigalg SHA1withRSA -digestalg SHA1 -verbose -keystore dianzhuan.keystore -signedjar signmssp-verify.apk mssp-verify.apk dianzhuanshichang
jdk的路徑 : 可以在控制台中看這個東西, 筆記本中在 E:\JAVAJDK\Java\bin 這個路徑下