天天看點

利用jar對apk進行簽名

準備工作

首先将

jdk

中的

bin

檔案夾添加至

path

環境變量中,準備一個未簽名的

apk

應用。

判斷是否簽名

要判斷一個

apk

檔案是否已經進行過簽名,使用解壓應用(如

WinRAR

等)打開該檔案,檢視是否有一個

META-INF

的檔案夾,如果有則代表已經簽名;沒有則表示沒有簽名。

利用jar對apk進行簽名

将一個已經簽名的應用轉化為一個未簽名的應用方法非常簡單,隻需要将應用中的

META-INF

檔案夾删除就可以了。

可在解壓應用界面(上圖)直接删除;也可以先将應用程式的字尾名由

apk

更改為

rar

等,再解壓,删除,然後壓縮,将字尾名改成

apk

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

利用jar對apk進行簽名

使用

keytool

建立密鑰

打開指令行,輸入指令:

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

參數說明:

  • genkeypair

    生成密鑰對
  • alias

    密鑰庫名稱,即最後儲存的檔案名稱(

    demo.keystore

  • alias

    密鑰别名(

    demo

  • keyalg

    密鑰加密算法(

    RSA

  • validity

    密鑰有效時間,機關為天(2000天)

而後輸入密碼:

利用jar對apk進行簽名

接着會提示輸入城市等資訊,回車即可,預設為

unknown

利用jar對apk進行簽名

确認,輸入

y

(大小寫均可),回車即可:

利用jar對apk進行簽名

輸入别名密碼,若想設定不同密碼,輸入密碼;一般情況下回車即可,預設設定相同密碼:

利用jar對apk進行簽名

完成後會在目前檔案夾下建立一個密鑰檔案(

demo.keystore

)。

利用jar對apk進行簽名

建立完成。

完成後可用

keytool

進行檢視,輸入指令:

keytool -list -v -keystore demo.keystore
           

運作結果:

利用jar對apk進行簽名

使用

jarsigner

進行簽名

輸入指令:

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

參數說明:

  • java 1.8

    環境下,

    verbose

    digestalg

    兩參數必須加上,否則生成的檔案無法安裝
  • keystore

    所使用的密鑰
  • demo.apk

    要進行簽名的檔案
  • demo

    密鑰别名
  • signedjar

    将簽好名的應用儲存為

    demo_signed.apk

    。此參數可省略,省略後直接改變原檔案為已簽名檔案,不會生成新的檔案。

運作結果:

利用jar對apk進行簽名

看到

jar signed

字樣時表示簽名成功。

注:

本文在

WINDOWS 10

JAVA 1.8

的環境下進行測試,如在不同環境下可能會不适用!