這裏我在網上找了一些資料總結了一下,這個理解一下就能夠了。android
簽名的方法git
一、安全
第一步: Build --->> Generate Signed APKapp
第二步:Create New···(已經建立過keystore選Choose existing···)模塊化
第三步:填寫相關信息測試
設置keystore路徑、密碼,設置key:別名、密碼、有效期,證書等gradle
Key store path:存放路徑ui
Keyspa
Alias:別名.net
Validity(years):有效期(通常默認25年)
Certificate:證書
First and Last Name:姓名
Organization Unit:組織單位
Organization:組織
City or Locality:城市或地區
State or Province:州或省
Country Code(XX):國家代碼(XX),中國:86
第四步:輸入key、keystore密碼
第五步:選擇發佈app的路徑,默認便可 選擇release方式發佈
OK,發佈成功,能夠到 剛纔設置的目標文件夾下面找到發佈的apk
那對一些人來講,這樣也太麻煩了,每次都得輸入相關信息,還得進行選擇,那麼有更簡單快捷的方法嗎?答案是有的。
咱們能夠在項目的app目錄下的build.gradle中進行簽名的配置。
2
release模式配置keystore
Project structure-signing,輸入已建立的keystore信息
使得簽名生效需配置Build Types
點擊OK便可,而後查看對應build.gradle的配置文件應該是這樣的。固然了,你也能夠經過直接在build.gradle裏面寫下面這段。
1 signingConfigs { 2 release { 3 keyAlias 'androiddebugkey' 4 keyPassword 'android' 5 storeFile file('C:/Users/ssc/.android/debug.keystore') 6 storePassword 'android' 7 } 8 } 9 10 ········· 11 12 buildTypes { 13 release { //是否混淆 14 minifyEnabled false //是否移除無用資源 15 zipAlignEnabled true //混淆的配置文件 16 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 17 signingConfig signingConfigs.release 18 } 19 }
三、
上述的配置雖然配置簡單,可是存在不安全性,假如你的項目是開源的,你把簽名文件的配置密碼之類的信息用明文寫在build.gradle裏面,那是否是很不安全呢?
能夠將簽名文件的配置密碼之類的信息直接寫在local.properties下,由於在Git版本控制的項目中,咱們能夠看到咱們項目project模式根目錄下有一個.gitignore的文件,裏面的配置大概以下所示
咱們能夠看到/local.properties,意思就是說local.properties默認是不添加到版本控制裏面的,由於local.properties存儲的是咱們環境資源的一些相關信息,如sdk的路徑。故咱們能夠在local.properties下配置簽名信息而不用擔憂密鑰外泄。對於開源項目來講,是很是好的。
在local.properties下直接添加相關信息
在build.gradle裏,爲了避免用明文顯示,咱們首先要得到key的相關配置,因此咱們能夠在app的build.gradle裏
android {}之上新增代碼
app/build.gradle下的signingConfigs能夠改成:
1 2 3 4 5 6 7 8 |
|
設置後Signing中keystore值無需關心
相應的,buildTypes也能夠配置成這樣
1 buildTypes { 2 release { 3 minifyEnabled false 4 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 5 // signingConfig signingConfigs.release 6 //簽名文件存在,則簽名 7 if (keyfile.exists()) { 8 println("WITH -> buildTypes -> release: using jks key") 9 signingConfig signingConfigs.release 10 } else { 11 println("WITH -> buildTypes -> release: using default key") 12 } 13 23 } 24 }
最後 有時候Android已安裝了存在簽名衝突的同名數據包!!!
應爲:手機上安裝的是從AndroidStudio直接運行的apk,測試版;而提示有新版本下載的安裝包是已發佈過得,正式版;因此兩個版本的簽名不相同,因此會報錯。
若想繼續測試自動更新,手工刪除該軟 件的舊版(),而後安裝新版。
或者直接在你的debug版本也設置相同的簽名就好 第二種 或者第三種 看需求,是否須要保密選擇設置