標籤:uil 選項卡 conf 接下來 blog default 覆蓋 gravity 技術分享
在Android Studio中,能夠使用Gradle進行打包時自己主動簽名。
事實上Android Studio預設會給調試應用加上Debug簽名,但有時候調一些第三方SDK時。須要正式簽名才幹調起來。所以接下來分享一下使用Gradle自己主動簽名的方法。
一、建立簽名檔案
開啟AS,選擇Build->Generate Signed APK,選擇要打包的項目,點擊Next。再點擊Create new...建立簽名檔案
填寫簽名檔案響應資訊。例如以下所看到的。Password、Key-Alias、Key-Password這三個值須要記住,然後點擊OK,完畢建立。
完畢之後,在相應路徑產生一個jks簽名檔案。假設選擇手動再進行打包,就能夠選擇該簽名檔案,然後相應填入password與別名,進行簽名,也能夠。
二、配置Gradle自己主動打包
拷貝簽名檔案到主project根資料夾,開啟主project的build.gradle檔案,在android節點下,添加下面內容:
signingConfigs { release { storeFile file(‘keystore.jks‘) storePassword ‘123456‘ keyAlias ‘yyh‘ keyPassword ‘123456‘ } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.txt‘ signingConfig signingConfigs.release } debug { signingConfig signingConfigs.release } } storeFile file:簽名檔案,假設放在其它路徑,須要相應改動
storePassword:password(剛才填的第一個password)
keyAlias:別名
keyPassword:別名password
然後又一次build一下project,展開右側邊欄Gradle選項卡,例如以下所看到的:
assembleRelease,即為正式簽名。
雙擊assembleRelease,則會開始運行命令:
運行完成能夠看到BUILD SUCCESSFUL,說明正式簽名打包成功了。展開project的build目錄。可發現有app-release.apk,即為正式版本號碼。
下次直接run起來的時候。就帶正式簽名了。這可比手動簽名省事多啦~~
當然,為了提高安全性,我們還能夠把那四個屬性作為變數配置在主project的gradle.propreties,然後在build.gradle引用變數就能夠了。
例如以下:
這樣也能起到相同的效果。
三、應用程式簽名的意義
(1)保障開發人員的合法權益
在我們相應用程式進行打包簽名後,即表示此應用程式是簽名人或機構所開發的,對此應用程式具有全部權。
(2)預防應用程式替換
應用程式簽名能夠防止部分人通過使用同樣的Package Name來混淆替換已經安裝的程式,從而出現一些惡意篡改。
APK假設使用一個key簽名,公布時還有一個key簽名的檔案將無法安裝或覆蓋老的版本號碼。這樣能夠防止你已安裝的應用被惡意的第三方覆蓋或替換掉。
實際上就是一種標識。
(3)保證應用程式版本號碼的一致性
一般應用程式都會有更新,即版本號碼的升級。假設應用程式的簽名不一致,是無法進行更新替代的。所以應用程式的簽名是保證當前應用程式順利進行更新安裝的前提。
(4)能夠通過許可權(permission)的方式在多個程式間共用資料和代碼
Android提供了基於數位憑證的許可權賦予機制。應用程式能夠和其它的程式共用概功能或者資料給那那些與自己擁有同樣數位憑證的程式。假設某個許可權(permission)的protectionLevel是signature,則這個許可權就僅僅能授予那些跟該許可權所在的包擁有同一個數位憑證的程式。
還有一方面。Android系統同意擁有同一個數位簽章的程式執行在一個進程中,Android程式會將他們視為同一個程式。所以開發人員能夠將自己的程式分模組開發。而使用者僅僅須要在須要的時候下載適當的模組。
Android Studio 使用正式簽名進行調試