Linux 下apk檔案實現簽名

2021-06-20 01:28:28 字數 1553 閱讀 3698

簽名的意義

為了保證每個應用程式開發商合法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...