- Android App開發從入門到精通
- 安輝編著
- 1397字
- 2019-07-30 17:30:36
1.10 應用簽名
Android要求所有APK必須先使用證書進行數字簽名,然后才能安裝。
1.10.1 證書和密鑰庫
公鑰證書(也稱為數字證書或身份證書)包含公鑰/私鑰對的公鑰,以及可以標識密鑰所有者的一些其他元數據(例如名稱和位置)。證書的所有者持有對應的私鑰。
在簽名APK時,簽名工具會將公鑰證書附加到APK。公鑰證書充當“指紋”,用于將APK唯一關聯到你以及對應的私鑰。這有助于Android確保APK的任何更新都是原版更新并來自原始作者。用于創建此證書的密鑰稱為應用簽名密鑰。
密鑰庫是一種包含一個或多個私鑰的二進制文件。
每個應用在其整個生命周期內必須使用相同的證書,以便用戶能夠以應用更新的形式安裝新版本。
1.10.2 調試項目時簽名
當點擊Android Studio工具欄上的“Run 'app'”按鈕時,Android Studio將自動使用通過Android SDK工具生成的測試證書簽名你的APK。
當在Android Studio中首次運行或調試項目時,IDE將自動在$HOME/.android/debug.keystore中創建調試密鑰庫和證書,并設置密鑰庫和密鑰密碼。
由于測試證書通過構建工具創建并且在設計上不安全,大多數應用商店(包括Google Play商店)都不接受使用調試證書簽名要發布的APK。
Android Studio會自動將你的測試簽名信息存儲在簽名配置中,因此不必在每次測試時都輸入此信息。簽名配置是一種包含簽名APK所需全部必要信息的對象,這些信息包括密鑰庫位置、密鑰庫密碼、密鑰名稱和密鑰密碼。
1.10.3 正式簽名
1. 生成密鑰和密鑰庫
使用Android Studio生成應用簽名或上傳密鑰,具體操作步驟如下:
步驟01在菜單欄中點擊Build→Generate Signed APK。
步驟02從下拉列表中選擇一個模塊,然后點擊“Next”。
步驟03點擊“Create new”以創建一個新密鑰和密鑰庫。
步驟04在New Key Store對話框中,需要填寫以下信息,用來生成密鑰文件,如圖1-52所示。

圖1-52 新建密鑰庫文件
? Key store path:選擇創建密鑰庫的位置。
? Password:為密鑰庫創建并確認一個安全的密碼。
? Alias:為密鑰輸入一個標識名。
? Password:為密鑰創建并確認一個安全的密碼。此密碼應當與密鑰庫選擇的密碼不同。
? Validity(years):以年為單位設置密鑰的有效時長。密鑰的有效期應至少為25年,可以在應用的整個生命期內使用相同的密鑰簽名應用更新。
? Certificate:為證書輸入一些關于自己的信息。例如城市、國家、姓名等基本信息。這些信息不會顯示在應用中,但會作為APK的一部分包含在證書中。
填寫完表單后,點擊OK按鈕。這時證書已經生成了(在選擇的證書保存路徑下有個xxx.jks文件)。
如果想繼續簽名App,就點擊Next按鈕;如果只是生成一個簽名文件,點擊Cancel按鈕。
2. 手動簽名APK
Android Studio可以手動簽名APK,也可以在Gradle配置文件中構建簽名信息,運行App時對APK自動簽名。
要在App中手動簽名APK,操作步驟如下:
步驟01點擊Build→Generate Signed APK,打開Generate Signed APK對話框,如圖1-53所示。選擇剛生成的jks文件、密鑰庫密碼、密鑰標示、密鑰密碼,然后點擊Next按鈕。

圖1-53 簽名APK
步驟02在下一個對話框中,選擇APK簽名之后保存路徑,同時可以選擇渠道,由于我們沒有配置渠道列表,所以Flavors一欄是空的;接下來選擇簽名版本,V1和V2都選中,然后點擊Finish按鈕,如圖1-54所示。

圖1-54 生成簽名配置
簽名完成之后,就會在選擇的簽名文件保存路徑下生成一個簽名之后的APK文件,可以用這個APK發布到各大應用市場。保管好jks文件密碼,當每次需要更新版本到應用市場時,需要用這個jks文件進行簽名。
3. Gradle自動簽名
手動簽名很不方便,每次都要創建APK,Google早就想到了這個問題,只需要在build.gradle文件中加幾行代碼就可以了,以后每次運行App的時候就會用生成的jks文件簽名,而不是臨時手動簽名。
使用自動簽名需要修改app/build.gradle文件。在Android標簽下增加signingConfigs標簽(debug與release版本簽名信息設置),如圖1-55所示。

圖1-55 運行App自動簽名