根据flavors设置buildType中debug的签名文件
?
設置buildType中debug的簽名文件(不使用debug默認的簽名文件)
前言:android studio運行編譯安卓項目,其debug模式會使用默認的keystory。通過獲取flavor信息設置簽名文件,在debug模式下是不生效的,它仍然使用默認的keystory。此時通過studio安裝至客戶端的apk簽名信息并不是我們所需要的。
而我們往往需要給每一個包指定簽名文件。
?
這個默認簽名(keystore)是不需要密碼的,它的默認位置在?$HOME/.android/debug.keystore,如果不存在Android studio會自動創建它。
使用場景:?根據需求,給不同的包設置對應的簽名文件。
flavors?和 buildTypes設置。
productFlavors {_360 {}anzhi_oas {}huawei_fuming {}} buildTypes {release {}debug{}pre{}}flavor + BuildType
給不同的包設置對應的簽名文件(每個人根據自己需求來做)
//批量配置//獲取flavor集合def flavors = getProductFlavors()for (int i = 0; i < flavors.size(); i++) {//獲取flavor對象def at = flavors.getAt(i)//獲取flavor名String name = at.getName().toString()if (name.contains("XXXXX")) {SigningConfig fumingConfig = getSigningConfigs().findByName("customsigning1")at.setSigningConfig(fumingConfig)} else {at.setSigningConfig(signingConfigs.getByName("customsigning2"))}}個人認為buildType不同,不影響簽名文件。因為只要包名一樣,簽名文件就應該是一樣的。
需要解決的問題:解決在debug模式下,使用設置的簽名文件,而不是默認的簽名文件。
有的人會講到在buildType的debug中設置簽名。如下:
buildType{debug{signingConfig signingConfigs.customsigning1}}?
這樣是可以替換掉默認簽名的,但有局限性,因為所有Debug模式都使用了這個簽名。如果有馬甲包,有多個flaovrs就不適合了。一般來說同一個包名的apk使用同一個簽名。
通過flaovrs信息來設置簽名。但非常不幸的是,給所有flavor設置對應簽名后,在debug模式下不生效,仍然使用的是默認簽名,在非dubug模式(如release pre等)都可以生效。這是因為只有debug有默認的簽名文件。
?
重點:
如上在flavors集合中設置簽名文件,同時在debug中設置 signingConfig null? ?即可。
debug模式的簽名文件不會再使用默認的簽名文件,會使用flavor設置的簽名文件。
?
buildTypes {debug {signingConfig null} .... }?
備注:將debug模式的簽名文件設置與其它buildType模式相同,有利于開發工作。如果不一致會讓Debug release?pre(預發布)?等版本在覆蓋安裝時會先卸載掉已安裝的app,才能再安裝,這是因為debug模式特有的默認keystory導致的。這樣就會讓你重新登錄,重新進入歡迎界面等等一系列首次安裝工作,長時間這樣不是個事啊。。。。
?
?
總結
以上是生活随笔為你收集整理的根据flavors设置buildType中debug的签名文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 局域网桌面监控软件_如何促进局域网监控软
- 下一篇: 【入门】QSS基础入门笔记