一、簽名代碼
(首先配置好jdk的路徑,keytool和jarsigner都是java的類庫)
1.生成簽名文件
keytool -genkey -alias MyFirstApp.keystore -keyalg RSA -validity 40000 -keystore MyFirstApp.keystore
2.應用簽名文件給文件簽名
jarsigner -verbose -keystore MyFirstApp.keystore -signedjar MyFirstApp_signed.apk MyFirstApp.apk MyFirstApp.keystore
(特別注意:jdk7簽名後apk文件無法正常安裝,需要在簽名程序 jarsigner 增加如下參數-digestalg SHA1 -sigalg MD5withRSA)
二.參數詳解
1.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 <路徑列表>
2.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 <參數>]] ... 主類文件和構造函數參數