在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,則會開始運行命令:

下次直接run起來的時候。就帶正式簽名了。這可比手動簽名省事多啦~~
當然,為了提高安全性,我們還能夠把那四個屬性作為變量配置在主project的gradle.propreties,然后在build.gradle引用變量就能夠了。
例如以下:
這樣也能起到相同的效果。
三、應用程序簽名的意義
(1)保障開發人員的合法權益
在我們相應用程序進行打包簽名后,即表示此應用程序是簽名人或機構所開發的,對此應用程序具有全部權。
(2)預防應用程序替換
應用程序簽名能夠防止部分人通過使用同樣的Package Name來混淆替換已經安裝的程序,從而出現一些惡意篡改。
APK假設使用一個key簽名,公布時還有一個key簽名的文件將無法安裝或覆蓋老的版本號。這樣能夠防止你已安裝的應用被惡意的第三方覆蓋或替換掉。
實際上就是一種標識。
(3)保證應用程序版本號的一致性
一般應用程序都會有更新,即版本號的升級。假設應用程序的簽名不一致,是無法進行更新替代的。所以應用程序的簽名是保證當前應用程序順利進行更新安裝的前提。
(4)能夠通過權限(permission)的方式在多個程序間共享數據和代碼
Android提供了基於數字證書的權限賦予機制。應用程序能夠和其它的程序共享概功能或者數據給那那些與自己擁有同樣數字證書的程序。假設某個權限(permission)的protectionLevel是signature,則這個權限就僅僅能授予那些跟該權限所在的包擁有同一個數字證書的程序。
還有一方面。Android系統同意擁有同一個數字簽名的程序執行在一個進程中,Android程序會將他們視為同一個程序。所以開發人員能夠將自己的程序分模塊開發。而用戶僅僅須要在須要的時候下載適當的模塊。