Android Apk 簽名

一:爲什麼要對Apk進行數字簽名

開發者通過開發工具編譯生成的應用程序以.apk命名,藉助開發工具、第三方平臺或adb命令將其安裝到安卓手機上運行或更新。在安裝的時候系統會檢測apk是否被簽名,如果沒有簽名則無法安裝;爲防止其他人通過使用相同的包名混淆替換已安裝的程序,在發佈的時候需要進行唯一的數字簽名,保證每次版本的一致性。

debug版本的apk,使用系統默認的簽名文件debug.keystore,別名= androiddebugkey,密碼=android,安裝運行時已經過簽名

二:Apk簽名方式

  • 使用AndroidStudio工具生成/引用簽名文件

Build  -- Generate Signed APK  -- Create new key store

Key store path:簽名文件存放的路徑

Password:密鑰庫密碼

Key  - Alias :別名

key  - Password :密鑰密碼(可以與密鑰庫密碼一致)

.............................

創建完成後可以直接下一步進行選擇版本進行簽名(如果簽名文件存在則忽略以上步驟直接進行下一步):

  • 使用工具自動生成signingConfigs中的簽名信息

按步驟操作即可自動配置,無需手寫

  • 命令行生成簽名文件並打包帶簽名的apk文件

   在項目根目錄下生成簽名文件dd.jks

-genkeypair:指定生成數字簽名;

-alias:指定生成數字簽名的別名;

-keyalg:指定生成數字簽名的算法。使用RSA算法。

-validity:指定生成數字簽名的有效期;

-keystore:指定生成數字簽名的存儲路徑。

使用命令行對Apk包簽名,在根目錄下生成簽名的apk文件:

 -verbose:指定生成詳細輸出;

 -keystore:指定數字證書的存儲路徑;

 -signedjar:該選項的3個參數分別爲簽名後的APK包、未簽名的APK包、數字證書的別名。

  • build.gradle中進行配置簽名信息

除了可以用工具自己生成也可以在build.gradle中直接配置,配置信息如下:

可以看到,文件信息以明文的形式顯示,爲了避免將簽名信息提交,可以在配置文件local.properties或gradle.properties中進行配置,區別是在gradle.properties中配置簽名信息後,build.gradle中可以直接引用,而local或自定義的properties文件則需要讀取並獲取到簽名信息,properties中的配置如下:

1:local.properties:

2:gradle.properties:

  • 讀取環境變量中的簽名信息,隱藏簽名

簽名文件信息配置到環境變量中,然後build.gradle中進行讀取,windows10配置如下:

build.gradle中的引用,配置完成後重啓下開發工具不然編譯的時候找不到系統變量,通過System.getenv(變量名)獲取:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章