(转) Android生成签名文件并用其对apk文件进行签名
最近編程時遇到問題:寫了一個android小程序,打包后用apktool反編譯再打包都沒問題,安裝時出現Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]錯誤,網上查資料原來是簽名的問題,解決方案如下。
?
《一》使用命令行生成簽名文件?
(1)創建一個用來存放簽名文件的文件夾Android_keystore
(2)在命令行窗口中輸入命令:(粗體部分)?
?
[java]?view plaincopy
輸入 <aeo_android.keystore> 的密鑰口令
? ? ? ? (如果和密鑰庫口令相同, 按回車):
?
這時會在D盤的Android_keystore文件夾下生成aeo_android.keystore文件,就是我們需要的簽名文件,(-validity 20000 表示證書的有效天數為20000天)?
《二》用生成的簽名文件對apk文件進行簽名?
(1)在Eclipse中用“Export the unsigned apk”工具導出項目,這里保存到D盤的Android_keystore文件夾下,名為testbim.apk?
(2)使用jarsigner給?testbim.apk?文件簽名,如下所示:
?
[java]?view plaincopy?
?
keytool 是個密鑰和證書管理工具。jarsigner 工具利用密鑰倉庫中的信息來產生或校驗 Java 存檔 (JAR) 文件的數字簽名 (JAR 文件將類文件、圖象、聲音和/或其它數字化數據打包在一個文件中)。
這兩個工具都是JDK自帶的,所以你當前需要先確保JDK安裝正確。并且環境變量設置正確,以便可以以命令行的方式進行處理。
輸入密匙的口令短語:?
......?
通過上面的命令就可以講未簽名的testbim.apk?文件簽名為
(3)最后驗證是否簽名成功?
Android_keystore>"C:\Program Files\Java\jdk1.6.0_30\bin\jarsigner.exe" -verify testbim_signed.apk
如果成功則?
輸出:?
jar 已驗證?
( 4 )安裝到虛擬機上
搞定~
?
命令參數說明:
-genkey??? 產生證書文件?
-keystore? 指定密鑰庫的.keystore文件中?
-keyalg???? 指定密鑰的算法
-validity??? 為證書有效天數,這里我們寫的是20000天。?
-alias?????? 產生別名?
在輸入密碼時沒有回顯,只管輸入就可以了,一般位數建議使用20位,切忌需要記下來后面還要用,
注意:
1、CN(Common Name - 名字與姓氏):其實這個“名字與姓氏”應該是域名,比如說localhost或是blog.devep.net之類的。輸成了姓名,和真正運行的時候域名不符,會出問題。瀏覽器訪問時,彈出一個對話框,提示“安全證書上的名稱無效,或者與站點名稱不匹配”,用戶選擇繼續還是可以瀏覽網頁。但是用http client寫程序訪問的時候,會拋出類似于“javax.servlet.ServletException: HTTPS hostname wrong: should be ”的異常。
2、在用keytool生成數字證書時必須保證:-keystore androidapp.keystore -alias androidapp.keystore 兩者名稱必須相同。否則下一步簽名時會出現錯誤:jarsigner: 找不到 androidapp.keystore 的證書鏈。androidapp.keystore 必須引用包含專用密鑰和相應的公共密鑰證書鏈的有效密鑰庫密鑰條目。
轉載于:https://www.cnblogs.com/greywolf/archive/2013/04/22/3035178.html
總結
以上是生活随笔為你收集整理的(转) Android生成签名文件并用其对apk文件进行签名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux—帐号和权限管理
- 下一篇: 深入理解Java虚拟机(JVM高级特性与