android: 對普通的apk應用進行簽名


准備工作

jdk (我這里的是jdk1.8)

一個未簽名的apk應用。

判斷是否簽名

要判斷一個apk文件是否已經進行過簽名,使用解壓應用(如WinRAR等)打開該文件,查看是否有一個META-INF的文件夾,如果有則代表已經簽名;沒有則表示沒有簽名。

 將一個已經簽名的應用轉化為一個未簽名的應用方法非常簡單,只需要將應用中的META-INF文件夾刪除就可以了。

可在解壓應用界面(上圖)直接刪除;也可以先將應用程序的后綴名由apk更改為rar等,再解壓,刪除,然后壓縮,將后綴名改成apk。

需要注意的一點是,在壓縮時要保持原來的文件結構不變,需要選中所有文件(夾)來壓縮,如下國:

 使用keytool 創建密鑰

打開jdk的bin文件夾

 

 

 在當前路徑下打開命令行,輸入命令:

keytool -genkeypair -v -keystore realsil.keystore -alias realsil-keystore -keyalg RSA -validity 2000

其中:

  • genkeypair 生成密鑰對
  • alias 密鑰庫名稱,即最后保存的文件名稱(reaisil.keystore
  • alias 密鑰別名(realsil-keystore
  • keyalg 密鑰加密算法(RSA
  • validity 密鑰有效時間,單位為天(2000天)
然后輸入密碼,記住這個密碼,我們接下來會再次用到。

密碼輸入完畢后,按照提示進一步完善個人的其它信息:

提示是否正確時,輸入小寫字母: y, 點擊回車

確認完畢后,會再次讓你輸入先前提供的密碼。輸入完畢后,點回車,這樣當前目錄下就會生成一個新的keystore文件。

 

這樣一個keystore就創建好了,完成后可以使用keytool -list 命令查看當前keystore 的詳細信息:

keytool -list -v -keystore realsil.keystore

使用jarsigner進行簽名

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore realsil.keystore Test_Demo.apk realsil-keystore -signedjar demo_signed.apk

參數說明:

在java 1.8環境下,verbose和digestalg兩參數必須加上,否則生成的文件無法安裝
keystore 所使用的密鑰
Test_Demo.apk 要進行簽名的文件
realsil-keystore 密鑰別名
signedjar 將簽好名的應用保存為demo_signed.apk。此參數可省略,省略后直接改變原文件為已簽名文件,不會生成新的文件。

執行:

 

看到jar 已簽名,代表簽名成功,接下來便可以使用生成的demo_signed.apk進行安裝了。

 

PS: 

本人測試環境為:win10 64位,jdk1.8, 如在不同環境下可能會不適用。

參考鏈接

對apk應用進行簽名

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM