Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android簽名用keytool和jarsigner制作apk文件

Android簽名用keytool和jarsigner制作apk文件

編輯:Android開發實例

Android程序的簽名和Symbian類似都可以自簽名(Self-signed),但是在Android平台中證書初期還顯得形同虛設,平時開發時通過ADB接口上傳的程序會自動被簽有Debug權限的程序。需要簽名驗證在上傳程序到Android Market上時大家都已經發現這個問題了。Android signed制作方法 

  首先在Android開發時沒有安裝JDK的網友在Sun官方網站下載JDKhttp://www.java.net/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe,其實僅需要中的Keytool和Jarsigner。 

詳細的簽名步驟: 

第一步 

C:\Program Files\Java\jdk1.6.0_10\bin>keytool -genkey -alias android123.keystore 
-keyalg RSA -validity 20000 -keystore android123.keystore 
輸入keystore密碼:[密碼不回顯] 
再次輸入新密碼:[密碼不回顯] 
您的名字與姓氏是什麼? 
  [Unknown]:  android123 
您的組織單位名稱是什麼? 
  [Unknown]:  www.android123.com.cn 
您的組織名稱是什麼? 
  [Unknown]:  www.android123.com.cn 
您的組織名稱是什麼? 
  [Unknown]:  www.android123.com.cn 
您所在的城市或區域名稱是什麼? 
  [Unknown]:  New York 
您所在的州或省份名稱是什麼? 
  [Unknown]:  New York 
該單位的兩字母國家代碼是什麼 
  [Unknown]:  CN 
CN=android123, OU=www.android123.com.cn, O=www.android123.com.cn, L=New York, ST 
=New York, C=CN 正確嗎? 
  [否]:  Y 

輸入<android123.keystore>的主密碼[img][/img] 
        (如果和 keystore 密碼相同,按回車): 

其中參數-validity為證書有效天數,這裡我們寫的大些20000天。還有在輸入密碼時沒有回顯,只管輸入就可以了,一般位數建議使用20位,最後需要記下來後面還要用 

  接下來我們開始為apk文件簽名了。 

第二步 

  執行下面這句jarsigner -verbose -keystore android123.keystore -signedjar android123_signed.apk android123.apk android123.keystore 就可以生辰簽名的apk文件,這裡輸入文件android123.apk,最終生成android123_signed.apk為Android簽名後的APK執行文件。下面提示輸入的密碼和keytool輸入的一樣就行了 



  有關Android程序發布和簽名可以查看SDK中 http://code.google.com/android/devel/sign-publish.html 一文. 

  附上keytool參數以及jarsigner參數: 

  keytool用法: 

-certreq     [-v] [-protected] 
             [-alias <別名>] [-sigalg <sigalg>] 
             [-file <csr_file>] [-keypass <密鑰庫口令>] 
             [-keystore <密鑰庫>] [-storepass <存儲庫口令>] 
             [-storetype <存儲類型>] [-providername <名稱>] 
             [-providerclass <提供方類名稱> [-providerarg <參數>]] ... 
             [-providerpath <路徑列表>] 

-changealias [-v] [-protected] -alias <別名> -destalias <目標別名> 
             [-keypass <密鑰庫口令>] 
             [-keystore <密鑰庫>] [-storepass <存儲庫口令>] 
             [-storetype <存儲類型>] [-providername <名稱>] 
             [-providerclass <提供方類名稱> [-providerarg <參數>]] ... 
             [-providerpath <路徑列表>] 

-delete      [-v] [-protected] -alias <別名> 
             [-keystore <密鑰庫>] [-storepass <存儲庫口令>] 
             [-storetype <存儲類型>] [-providername <名稱>] 
             [-providerclass <提供方類名稱> [-providerarg <參數>]] ... 
             [-providerpath <路徑列表>] 

-exportcert  [-v] [-rfc] [-protected] 
             [-alias <別名>] [-file <認證文件>] 
             [-keystore <密鑰庫>] [-storepass <存儲庫口令>] 
             [-storetype <存儲類型>] [-providername <名稱>] 
             [-providerclass <提供方類名稱> [-providerarg <參數>]] ... 
             [-providerpath <路徑列表>] 

-genkeypair  [-v] [-protected] 
             [-alias <別名>] 
             [-keyalg <keyalg>] [-keysize <密鑰大小>] 
             [-sigalg <sigalg>] [-dname <dname>] 
             [-validity <valDays>] [-keypass <密鑰庫口令>] 
             [-keystore <密鑰庫>] [-storepass <存儲庫口令>] 
             [-storetype <存儲類型>] [-providername <名稱>] 
             [-providerclass <提供方類名稱> [-providerarg <參數>]] ... 
             [-providerpath <路徑列表>] 

-genseckey   [-v] [-protected] 
             [-alias <別名>] [-keypass <密鑰庫口令>] 
             [-keyalg <keyalg>] [-keysize <密鑰大小>] 
             [-keystore <密鑰庫>] [-storepass <存儲庫口令>] 
             [-storetype <存儲類型>] [-providername <名稱>] 
             [-providerclass <提供方類名稱> [-providerarg <參數>]] ... 
             [-providerpath <路徑列表>] 

-help 

-importcert  [-v] [-noprompt] [-trustcacerts] [-protected] 
             [-alias <別名>] 
             [-file <認證文件>] [-keypass <密鑰庫口令>] 
             [-keystore <密鑰庫>] [-storepass <存儲庫口令>] 
             [-storetype <存儲類型>] [-providername <名稱>] 
             [-providerclass <提供方類名稱> [-providerarg <參數>]] ... 
             [-providerpath <路徑列表>] 

-importkeystore [-v] 
             [-srckeystore <源密鑰庫>] [-destkeystore <目標密鑰庫>] 
             [-srcstoretype <源存儲類型>] [-deststoretype <目標存儲類型>] 
             [-srcstorepass <源存儲庫口令>] [-deststorepass <目標存儲庫口令>] 
             [-srcprotected] [-destprotected] 
             [-srcprovidername <源提供方名稱>] 
             [-destprovidername <目標提供方名稱>] 
             [-srcalias <源別名> [-destalias <目標別名>] 
               [-srckeypass <源密鑰庫口令>] [-destkeypass <目標密鑰庫口令>]] 
             [-noprompt] 
             [-providerclass <提供方類名稱> [-providerarg <參數>]] ... 
             [-providerpath <路徑列表>] 

-keypasswd   [-v] [-alias <別名>] 
             [-keypass <舊密鑰庫口令>] [-new <新密鑰庫口令>] 
             [-keystore <密鑰庫>] [-storepass <存儲庫口令>] 
             [-storetype <存儲類型>] [-providername <名稱>] 
             [-providerclass <提供方類名稱> [-providerarg <參數>]] ... 
             [-providerpath <路徑列表>] 

-list        [-v | -rfc] [-protected] 
             [-alias <別名>] 
             [-keystore <密鑰庫>] [-storepass <存儲庫口令>] 
             [-storetype <存儲類型>] [-providername <名稱>] 
             [-providerclass <提供方類名稱> [-providerarg <參數>]] ... 
             [-providerpath <路徑列表>] 

-printcert   [-v] [-file <認證文件>] 

-storepasswd [-v] [-new <新存儲庫口令>] 
             [-keystore <密鑰庫>] [-storepass <存儲庫口令>] 
             [-storetype <存儲類型>] [-providername <名稱>] 
             [-providerclass <提供方類名稱> [-providerarg <參數>]] ... 
             [-providerpath <路徑列表>] 



jarsigner用法: [選項] jar 文件別名 
       jarsigner -verify [選項] jar 文件 

[-keystore <url>]           密鑰庫位置 
[-storepass <口令>]         用於密鑰庫完整性的口令 
[-storetype <類型>]         密鑰庫類型 
[-keypass <口令>]           專用密鑰的口令(如果不同) 
[-sigfile <文件>]           .SF/.DSA 文件的名稱 
[-signedjar <文件>]         已簽名的 JAR 文件的名稱 
[-digestalg <算法>]    摘要算法的名稱 
[-sigalg <算法>]       簽名算法的名稱 
[-verify]                   驗證已簽名的 JAR 文件 
[-verbose]                  簽名/驗證時輸出詳細信息 
[-certs]                    輸出詳細信息和驗證時顯示證書 
[-tsa <url>]                時間戳機構的位置 
[-tsacert <別名>]           時間戳機構的公共密鑰證書 
[-altsigner <類>]           替代的簽名機制的類名 
[-altsignerpath <路徑列表>] 替代的簽名機制的位置 
[-internalsf]               在簽名塊內包含 .SF 文件 
[-sectionsonly]             不計算整個清單的散列 
[-protected]                密鑰庫已保護驗證路徑 
[-providerName <名稱>]      提供者名稱 
[-providerClass <類>        加密服務提供者的名稱 
[-providerArg <參數>]] ... 主類文件和構造函數參數 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved