因爲怕篇幅過長,因此把這個打包經常使用命令分開成兩篇博文來進行講解,下面咱們直接進入主題吧。android
這是咱們JDK自帶的密鑰和證書管理工具算法
命令: -certreq 生成證書請求 -changealias 更改條目的別名 -delete 刪除條目 -exportcert 導出證書 -genkeypair 生成密鑰對 -genseckey 生成對稱密鑰 -gencert 根據證書請求生成證書 -importcert 導入證書或證書鏈 -importkeystore 從其餘密鑰庫導入一個或全部條目 -keypasswd 更改條目的密鑰口令 -list 列出密鑰庫中的條目 -printcert 打印證書內容 -printcertreq 打印證書請求的內容 -printcrl 打印 CRL 文件的內容 -storepasswd 更改密鑰庫的存儲口令
通常狀況下,咱們都是直接經過如下格式的命令進行證書生成:ide
keytool -genkeypair -alias <整數的別名>-keyalg RSA -validity <有效天數> -keystore <keystore文件的路徑+文件名>.keystore
好比生成一個別名爲 tbb 證書名字爲tbb.keystore的證書:工具
keytool -genkeypair -alias tbb -keyalg RSA -validity 180 -keystore d:\tbb.keystore
執行該命令後,按照提示進行密碼等狀況的輸入便可。優化
使用這個工具咱們能夠給apk進行簽名:加密
用法: jarsigner [選項] jar文件 別名 jarsigner -verify [選項] jar文件 [別名...] [-keystore <url>] 密鑰庫位置 [-storepass <口令>] 用於密鑰庫完整性的口令 [-storetype <類型>] 密鑰庫類型 [-keypass <口令>] 私有密鑰的口令 (若是不一樣) [-certchain <文件>] 替代證書鏈文件的名稱 [-sigfile <文件>] .SF/.DSA 文件的名稱 [-signedjar <文件>] 已簽名的 JAR 文件的名稱 [-digestalg <算法>] 摘要算法的名稱 [-sigalg <算法>] 簽名算法的名稱 [-verify] 驗證已簽名的 JAR 文件 [-verbose[:子選項]] 簽名/驗證時輸出詳細信息。 子選項能夠是 all, grouped 或 summary [-certs] 輸出詳細信息和驗證時顯示證書 [-tsa <url>] 時間戳頒發機構的位置 [-tsacert <別名>] 時間戳頒發機構的公共密鑰證書 [-altsigner <類>] 替代的簽名機制的類名 [-altsignerpath <路徑列表>] 替代的簽名機制的位置 [-internalsf] 在簽名塊內包含 .SF 文件 [-sectionsonly] 不計算整個清單的散列 [-protected] 密鑰庫具備受保護驗證路徑 [-providerName <名稱>] 提供方名稱 [-providerClass <類> 加密服務提供方的名稱 [-providerArg <參數>]]... 主類文件和構造器參數 [-strict] 將警告視爲錯誤
通常狀況下,對apk文件進行簽名的命令格式爲:url
jarsigner -verbose -keystore <證書所在的路徑> -signedjar <簽名後apk的名字> <須要簽名的apk> <證書別名>
-verbose : 指定生成詳細輸出spa
下面舉一個例子,爲咱們前面博文中創建的xiaoxuetu.apk進行簽名:code
E:\Workspaces\android\xiaoxuetu>jarsigner -verbose -keystore tbb.keystore -signedjar xiaoxuetu_sign.apk xiaoxuetu.apk tbb
終端的執行結果爲:blog
zipalign是Android自帶的一個檔案整理工具,可用於優化APK安裝包,從而提高Android應用與系統之間的交互效率,提高應用程序的運行速度。
Usage: zipalign [-f] [-v] <align> infile.zip outfile.zip zipalign -c [-v] <align> infile.zip <align>: alignment in bytes, e.g. '4' provides 32-bit alignment -c: check alignment only (does not modify file) -f: overwrite existing outfile.zip, 便是強制覆蓋已有的文件 -v: verbose output, 指定生成詳細輸出
通常狀況下,咱們直接使用該命令的基本格式爲:
zipalign -f -v <檔案整理所基於的字節數> <須要優化的文件> <通過優化後的文件>
下面就針對咱們的xiaoxuetu.apk進行一次優化作爲例子:
zipalign -f -v 4 xiaoxuetu.apk xiaoxuetu_zip.apk