,在 java 1.8.0 版本的環境下,進行 android apk 的簽名操作


將本地的java從版本1.6 升級到 1.8 的時候,apk 簽名后安裝到手機上,出現 “Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]”,弄了半天不知道咋回事,然后把java的jdk版本切換到1.6的時候,一切又正常了,因此懷疑對apk的簽名,會跟jdk的版本不同而有所不同。網上搜了一下,果然如此,而且在android的開發者社區已經有了相關說明。

 

注:文章參考了 android 開發者社區的簽名指引說明文章,但由於在國內 android 開發者社區已經無法正常訪問,因此在這里做下記錄。

地址:http://developer.android.com/tools/publishing/app-signing.html#considerations

  在開發 android 應用程序的時候,到最后程序都需要進行簽名后才可以發布,目前針對 android 應用開發的 ide 一般都會自帶了簽名的功能,例如 android studio、eclipse、intellij idea。如果您喜歡使用 ide 自帶的功能簽名,您就不需要再繼續往下看了。以下主要是進行 android apk 手動簽名的教程,雖然本人並不是很喜歡這種方式,但是公司的兩位前輩都比較傾向於使用 bash 腳本,像這種打版本的事情就一般都是走腳本,一句命令,版本打好,發布關機走人。因此以下所用到的命令都是在 cygwin 的環境下執行的,因此前面帶有 $ 這個符號。 【ps :我不喜歡主要是不大懂 linux 的語法,哎,要記得東西太多了。】

  到目前為止,網上關於 android apk 簽名的教程一般都停留在 java 1.6 版本或者之前,然而 java 現在已經更新到了 1.8 了,java 1.7 版本我並沒有安裝,就直接從 java 1.6 升級為 java 1.8 了,java 1.6 與 java 1.8 之間生成密鑰和簽名的命令格式有點不一樣,1.6 版本的不在這文章的介紹范圍內,網上一搜,基本全都是。

  1. 生成密鑰 (ps:“密鑰” 和 “秘鑰” 有什么區別?)

  輸入命令:$ keytool -genkeypair -v -keystore test.keystore -alias test -keyalg RSA -validity 20000

  參數說明:

  1. genkeypari:生成密鑰對。

  2. keystore:密鑰庫名稱,如上所示"test.keystore"。

  3. alias:密鑰的別名,在簽名的時候需要用到。

  4. keyalg:密鑰算法名稱。

  5. validity:有效天數。

  運行效果圖:

  

 

  

  2. 驗證您所生成的密鑰文件

  輸入命令:$ keytool -list -v -keystore test.keystore

  運行效果圖:

  

 

  3. 執行簽名,由於我在寫文章的時候沒有現成的 apk,因此只在這里添加執行的命令。

  輸入命令:$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore test.keystore xxx.apk test

  參數說明:

  1. 在jdk 1.8 的環境下,sigalg 和 digestalg 這兩個參數必須帶上,否則簽名出來的 apk 包是無法安裝的。

  2. -keystore:后面是您所生成的密鑰文件。

  3. xxx.apk 是你要簽名的 apk。

  4. test 是密鑰文件的別名。

 

 

 

  

  


免責聲明!

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



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