Android之apk檔案簽名——keytool 和 jarsigner

來源:互聯網
上載者:User

一、產生密鑰庫
將位置定位在jdk的bin檔案中,輸入以下命名行:

keytool -genkey -alias ChangeBackgroundWid get.keystore -keyalg RSA -validity 20000 -eystore ChangeBackgroundWidget.keystore

上面的命令中間不換行,按下“Enter”鍵,並根據提示填寫相關資訊,詳細資料如下及圖1(validity為有效期間,這裡有效期間為20000天):
輸入keystore密碼:
再次輸入新密碼:
您的名字與姓氏是什嗎?
[Unknown]:  mythlink
您的組織單位名稱是什嗎?
[Unknown]:  www.mythlink.com
您的組織名稱是什嗎?
[Unknown]:  www.mythlink.com
您所在的城市或地區名稱是什嗎?
[Unknown]:  Shen Zhen
您所在的州或省份名稱是什嗎?
[Unknown]:  Guang Dong
該單位的兩字母國家代碼是什麼
[Unknown]:  CN
CN=mythlink, OU=www.mythlink.com, O=www.mythlink.com, L=Shen Zhen, ST=Guang Dong
, C=CN 正確嗎?
[否]:  Y
輸入<ChangeBackgroundWidget.keystore>的主密碼
(如果和 keystore 密碼相同,按斷行符號):

                                     圖1

二、可以產生簽名的apk檔案

這裡輸入檔案ChangeBackgroundWidget.apk,最終產生ChangeBackgroundWidget_signed.apk為Android簽名後的APK執行檔案
輸入以下命令列:

jarsigner -verbose -keystore ChangeBackgroundWidget.keystore -signedjar ChangeBackgroundWidget_signed.apk ChangeBackgroundWidget.apk ChangeBackgroundWidget.keystore

上面的命令中間不換行,按“Enter”鍵,根據提示輸入密鑰庫的口令短語(即密碼),詳細資料如下及圖2:
輸入密鑰庫的口令短語:
正在添加: META-INF/MANIFEST.MF
正在添加: META-INF/CHANGEBA.SF
正在添加: META-INF/CHANGEBA.RSA
正在簽名: res/drawable/icon.png
正在簽名: res/drawable/icon_audio.png
正在簽名: res/drawable/icon_exit.png
正在簽名: res/drawable/icon_folder.png
正在簽名: res/drawable/icon_home.png
正在簽名: res/drawable/icon_img.png
正在簽名: res/drawable/icon_left.png
正在簽名: res/drawable/icon_mantou.png
正在簽名: res/drawable/icon_other.png
正在簽名: res/drawable/icon_pause.png
正在簽名: res/drawable/icon_play.png
正在簽名: res/drawable/icon_return.png
正在簽名: res/drawable/icon_right.png
正在簽名: res/drawable/icon_set.png
正在簽名: res/drawable/icon_text.png
正在簽名: res/drawable/icon_xin.png
正在簽名: res/layout/fileitem.xml
正在簽名: res/layout/filelist.xml
正在簽名: res/layout/main.xml
正在簽名: res/layout/widget.xml
正在簽名: res/xml/widget_info.xml
正在簽名: AndroidManifest.xml
正在簽名: resources.arsc
正在簽名: classes.dex

                                          圖2

====================================================

在運行這種方式中,我碰到過幾種不同的問題:
問題一:jarsigner: 無法開啟 jar 檔案: ChangeBackgroundWidget.apk
我的解決方案是:將要進行簽名的APK放到對應的檔案下,如我把要簽名的ChangeBackgroundWidget.apk放到JDK的bin檔案裡。
問題二:jarsigner: 無法對 jar 進行簽名: java.util.zip.ZipException: invalid entry comp
ressed size (expected 1598 but got 1622 bytes)
這個問題,我還沒解決,在網上搜了下,找到了一種方法,但我實踐沒完全,所以不知道這個解決方案是否正確:
方法一:Android開發網提示這些問題主要是由於資源檔造成的,對於android開發來說應該檢查res檔案夾中的檔案,逐個排查。這個問題可以通過升級系統的JDK和JRE版本來解決。
方法二:這是因為預設給apk做了debug 簽名,所以無法做新的簽名這時就必須點工程右鍵->Android Tools ->Export Unsigned Application Package.
或者從AndroidManifest.xml的 Exporting上也是一樣的
然後再基於這個匯出的unsigned apk做簽名,匯出的時候最好將其目錄選在你之前產生keystore的那個目錄下,這樣操作起來就方便了。
==========================================
MS我找到了第二個問題的解決方案了。。。
首先右擊要簽名APK對應的項目,選中“Android Tools”右擴充欄中的“Export Unsigned Application Package...”,,3

                                                 圖3

在彈出的對話方塊中將這個未簽名的apk儲存在jdk的bin檔案夾中,4:

                                                 圖4

然後在運行上面的步驟即可。

 

轉自: http://blog.sina.com.cn/s/blog_62c194760100gaq0.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.