簽名的意義
為了保證每個應用程式開發商合法id,防止部分開放商可能通過使用相同的package name來混淆替換已經安裝的程式,我們需要對我們發布的apk檔案進行唯一簽名,保證我們每次發布的版本的一致性(如自動更新不會因為版本不一致而無法安裝)。
apk檔案簽名主要分為三個步驟,證書的建立-->簽名生成-->優化(可選)
前提是已經安裝jdk並且已經新增到環境變數中。
證書的建立
keytool -genkey -v alias keyname -keyalg rsa -keysize 2048 -validity 10000 -keystore keyfilename.keystore
這行命令中一些重要的引數值說明如下:
keyname:表示證書的別名
keyfilename.keystore: 證書儲存的檔名
10000: 表示證書的有效期,單位(天)
rsa:證書的加密型別,一般預設為rsa
其次在建立的過程中要填寫一些基本的資訊,證書密碼等相關的資訊。
證書生成後的檢視
keytool -list -alias keyname -keystore keyfilename.keystore
對apk進行簽名
jarsigner -verbose -keystore keyfilename.keystore sign_apk_file.apk keyname
引數解釋:
keyfilename.keystore 已經生成號的證書
sign_apk_file.apk 需要簽名的apk檔案
keyname 證書的別名
待簽名的apk檔案根根目錄下如果有資料夾「meta-info」,請先刪除(重新簽名就需要這樣做)。
如果不想建立過程輸出太多資訊,可以刪除「-verbose」 。
上述簽名會直接覆蓋原來的檔案,如果不想被覆蓋而簽名為另外的新檔案 signed.akp,
只需將 signed.apk 改為
-signedjar signed.apk sign_old.akp
即可。
簽名後可以使用如下命令驗證是否簽名成功:
> jarsigner -verify signed.apk
如果需要檢視更詳細的驗證資訊,可修改為:
> jarsigner -certs -verbose -verify signed.apk
使用android sdk的zipalign工具優化已簽名的apk檔案
> zipalign -v 4 unaligned.apk aligned.apk
注意要在簽名後再zipalign。這個工具不是jdk自帶的,而是在%android_home%\tools\zipalign。
jarsigner為apk檔案簽名
jarsigner verbose keystore feelyou.keystore storepass feelyou.info signedjar signed.apk digestalg sha1 sigalg md5withrsa unsigned.apk feelyou 解釋 1 key...
使用jks檔案為apk簽名
參與的專案近期要求安全檢測,apk不達標並且無法修復的話會要求使用官方加固包。加固之後的包簽名會失效,所有需要重新進行簽名。今天藉此機會記錄一下整個操作流程。原來apk是使用jks格式的簽名檔案來操作的,還有一種是keystore檔案格式。我們先來看jks檔案格式怎麼操作 一 jks格式操作步驟 1...
Mac下對apk進行重簽名
首先先進入到簽名檔案所在的目錄,然後執行命令 jarsigner verbose keystore qianmingwenjian.jks signedjar android signed.apk android.apk keyalias整個過程是jarsigner verbose keystore...