1. 程式人生 > >AndroidStudio對apk應用進行重新簽名

AndroidStudio對apk應用進行重新簽名

1. 生成簽名證書
使用JDK自帶的keytool工具, 執行下面的命令
keytool -genkey -alias lanxinbase -keyalg RSA -validity20000 -keystore lanxinbase.com.jks

/*解釋:keytool工具是Java JDK自帶的證書工具
-genkey引數表示:要生成一個證書(版權、身份識別的安全證書)
-alias引數表示:證書有別名,-alias androidauto.keystore表示證書別名為:androidauto
-keyalg RSA表示加密型別,RSA表示需要加密,以防止別人盜取
-validity 20000表示有效時間20000天
-keystore lanxinbase.com.jks表示要生成的證書名稱為lanxinbase.com.jks
*/
輸入完回車後螢幕顯示:
輸入keystore密碼:[密碼不回顯]
再次輸入新密碼:[密碼不回顯]
您的名字與姓氏是什麼?
Unknown]:cheers
您的組織單位名稱是什麼?
Unknown]:cheers
您的組織名稱是什麼?
Unknown]:cheers
您所在的城市或區域名稱是什麼?)
Unknown]:shanghai
您所在的州或省份名稱是什麼?
Unknown]:shanghai
該單位的兩字母國家程式碼是什麼
Unknown]:CN
輸入< ***.keystore>的主密碼
(如果和keystore密碼相同,按回車):

執行以上語句後在執行的目錄下會生成證書檔案 lanxinbase.com.jks

2. 刪除之前APK檔案的簽名

  • 解壓apk檔案(我用7-ZIP 提取出來)
  • 刪除解壓出來資料夾中的 META-INF目錄:META-INF存放簽名後的CERT和MANIFEST檔案,用於識別軟體的簽名及版權。
  • 刪除資料夾後重新把解壓出來的其它資料夾壓縮為zip檔案,然後直接把檔案字尾改為apk

注意:一定要選中要壓縮的檔案,然後壓縮成.zip 檔案,zip檔案必須是根目錄,即 開啟zip檔案,就能看見壓縮的檔案內容,這非常重要。

3. 為APK重新生成簽名

  • 將證書複製到與需要重新簽名的apk檔案相同的目錄下
  • 進入該目錄下執行以下語句

jarsigner -verbose -keystore lanxinbase.com.jks -signedjar app-release.apk app-dubug.apk lanxinbase

命令解釋:
jarsigner是Java的簽名工具,JDK自帶
-verbose引數表示:顯示出簽名詳細資訊
-keystore表示使用當前目錄中的android.keystore簽名證書檔案。
-signedjar app-release.apk app-dubug.apk 表示簽名後生成的APK名稱為app-release.apk ,未簽名的APK Android軟體名稱為app-dubug.apk
-androidauto.keystore

表示簽名檔案的別名,生成證書的時候有書寫

執行以上操作之後在目錄下生成了app-release.apk,經過自己簽名的APK檔案。

警告:
未提供 -tsa 或 -tsacert, 此 jar 沒有時間戳。如果沒有時間戳, 則在簽名者證書的到期
日期 (2063-07-18) 或以後的任何撤銷日期之後, 使用者可能無法驗證此 jar。

入有這個警告的話本身對簽名沒有影響,但是總感覺怪怪的,要想去掉這個警告只要在命令上再加上 -tsa https://timestamp.geotrust.com/tsa 就可以了

最終命令是:

 jarsigner -digestalg SHA1 -sigalg MD5withRSA -tsa https://timestamp.geotrust.com/tsa -keystore test.keystore -storepass test123 -signedjar signed_client.apk client.apk test