一、生成自己的密鑰庫
1、查看幫助信息,cmd模式下,輸入keytool -genkey回車,得到如下參數解析
keytool-genkeypair [OPTION]...
生成密鑰對
選項:
-alias <alias> 要處理的條目的別名
-keyalg <keyalg> 密鑰算法名稱
-keysize <keysize> 密鑰位大小
-sigalg <sigalg> 簽名算法名稱
-destalias <destalias> 目標別名
-dname <dname> 唯一判別名
-startdate <startdate> 證書有效期開始日期/時間
-ext <value> X.509 擴展
-validity <valDays> 有效天數
-keypass <arg> 密鑰口令
-keystore <keystore> 密鑰庫名稱
-storepass <arg> 密鑰庫口令
-storetype <storetype> 密鑰庫類型
-providername <providername> 提供方名稱
-providerclass <providerclass> 提供方類名
-providerarg <arg> 提供方參數
-providerpath <pathlist> 提供方類路徑
-v 詳細輸出
-protected 通過受保護的機制的口令
使用 "keytool -help" 獲取所有可用命令
2、生成自己的密鑰庫,需要指定的參數:--keystore -alias -keyalg -kyesize -validity
示例:keytool -genkey -v -keystore jiduan.keystore -alias jiduan -keyalg RSA-keysize 2048 -validity 36500, 會提示輸入一些列信息,如果不想要祕鑰庫口令,可以直接回車,如果輸入口令,以後使用時需要使用口令。另祕鑰的別名也需要記住,因爲後面的jarsigner 要用到
執行成功後,會在當前目錄下生成密鑰庫文件jiduan.keystore
二、重簽名
1、執行jarsigner -h,查看幫助信息
用法: jarsigner [選項] jar-file 別名
jarsigner -verify [選項] jar-file [別名...]
[-keystore<url>] 密鑰庫位置
[-storepass <口令>] 用於密鑰庫完整性的口令
[-keypass <口令>] 私有密鑰的口令 (如果不同)
[-signedjar <文件>] 已簽名的 JAR 文件的名稱
[-digestalg <算法>] 摘要算法的名稱
[-sigalg <算法>] 簽名算法的名稱
[-verify] 驗證已簽名的 JAR 文件、
[-verbose[:suboptions]] 簽名/驗證時輸出詳細信息。
子選項可以是 all, grouped 或
[-certs] 輸出詳細信息和驗證時顯示證書
[-tsa<url>] 時間戳頒發機構的位置
2、重簽名需要指定參數
jarsigner -verbose-digestalg SHA1 -sigalg MD5withRSA -tsa https://timestamp.geotrust.com/tsa-keystore jiduan.keystore -storepass android -signedjar yfq_signed.apk yfq.apkjiduan
-signedjar 簽名後的apk 待簽名的apk 密鑰庫別名
3、驗證簽名信息
jarsigner -verify-verbose -certs yfq_signed.apk
4、優化apk包(內存佔用)
需要把build-tools下的zipalin包放到tools下
執行zipalign -h,查看幫助信息
Zip alignmentutility
Copyright (C) 2009The Android Open Source Project
Usage: zipalign[-f] [-p] [-v] [-z] <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 modifyfile)
-f: overwrite existing outfile.zip
-p: page align stored shared object files
-v: verbose output
-z: recompress using Zopfli
執行zipalign -v 4 in.apk out.apk,對in.apk優化,得到out.apk