官术网_书友最值得收藏!

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自動簽名

主站蜘蛛池模板: 大同市| 广宁县| 海宁市| 文水县| 辽源市| 霍州市| 财经| 阿尔山市| 清苑县| 报价| 湟源县| 高陵县| 荔浦县| 厦门市| 霍林郭勒市| 洛川县| 广水市| 广西| 阿鲁科尔沁旗| 昌宁县| 温州市| 疏勒县| 定襄县| 项城市| 星座| 通河县| 衡阳县| 昌宁县| 古浪县| 井陉县| 双柏县| 航空| 东乡县| 佛冈县| 得荣县| 锡林郭勒盟| 余江县| 巩义市| 龙海市| 盖州市| 绥滨县|