日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

(转) Android生成签名文件并用其对apk文件进行签名

發布時間:2025/7/14 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转) Android生成签名文件并用其对apk文件进行签名 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近編程時遇到問題:寫了一個android小程序,打包后用apktool反編譯再打包都沒問題,安裝時出現Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]錯誤,網上查資料原來是簽名的問題,解決方案如下。

?

《一》使用命令行生成簽名文件?

(1)創建一個用來存放簽名文件的文件夾Android_keystore
(2)在命令行窗口中輸入命令:(粗體部分)?

[java]?view plaincopy
  • D:\Android_keystore>keytool?-genkey?-alias?aeo_android.keystore?-keyalg?RSA?-val??
  • idity?20000?-keystore?aeo_android.keystore??
  • ?

    [java]?view plaincopy
  • 輸入密鑰庫口令:??
  • 再次輸入新口令:??
  • 您的名字與姓氏是什么???
  • ??[Unknown]:??localhost??
  • 您的組織單位名稱是什么???
  • ??[Unknown]:??btbu??
  • 您的組織名稱是什么???
  • ??[Unknown]:??btbu??
  • 您所在的城市或區域名稱是什么???
  • ??[Unknown]:??beijing??
  • 您所在的省/市/自治區名稱是什么???
  • ??[Unknown]:??beijing??
  • 該單位的雙字母國家/地區代碼是什么???
  • ??[Unknown]:??cn??
  • CN=XiaoFeng,?OU=btbu,?O=btbu,?L=beijing,?ST=beijing,?C=cn是否正確???
  • ??[否]:??y??




  • 輸入 <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
  • D:\Android_keystore>"C:\Program?Files\Java\jdk1.6.0_30\bin\jarsigner.exe"?-verbo??
  • se?-keystore?aeo_android.keystore?-signedjar?testbim_signed.apk?testbim.apk?aeo_??
  • android.keystore??
  • 輸入密鑰庫的口令短語:??
  • ???正在添加:?META-INF/MANIFEST.MF??
  • ???正在添加:?META-INF/AEO_ANDR.SF??
  • ???正在添加:?META-INF/AEO_ANDR.RSA??
  • ??正在簽名:?res/drawable-hdpi/ic_action_search.png??
  • ??正在簽名:?res/drawable-hdpi/ic_launcher.png??
  • ??正在簽名:?res/drawable-ldpi/ic_launcher.png??
  • ??正在簽名:?res/drawable-mdpi/ic_action_search.png??
  • ??正在簽名:?res/drawable-mdpi/ic_launcher.png??
  • ??正在簽名:?res/drawable-xhdpi/ic_action_search.png??
  • ??正在簽名:?res/drawable-xhdpi/ic_launcher.png??
  • ??正在簽名:?res/layout/activity_main.xml??
  • ??正在簽名:?res/layout/two.xml??
  • ??正在簽名:?res/menu/activity_main.xml??
  • ??正在簽名:?AndroidManifest.xml??
  • ??正在簽名:?classes.dex??
  • ??正在簽名:?resources.arsc??
  • ?

    ?

    keytool 是個密鑰和證書管理工具。jarsigner 工具利用密鑰倉庫中的信息來產生或校驗 Java 存檔 (JAR) 文件的數字簽名 (JAR 文件將類文件、圖象、聲音和/或其它數字化數據打包在一個文件中)。

    這兩個工具都是JDK自帶的,所以你當前需要先確保JDK安裝正確。并且環境變量設置正確,以便可以以命令行的方式進行處理。


    輸入密匙的口令短語:?
    ......?
    通過上面的命令就可以講未簽名的testbim.apk?文件簽名為

    [java]?view plaincopy
  • testbim_signed.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文件进行签名的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。