Gradle是使用Groovy語言構建,因此既然是語言,那麼就有他的語法,而不是簡單的配置項。關於Gradle有時間會出一系列的文章。android
本配置爲Android studio3.0及以上的配置,3.0如下版本適用,下面的配置會將全部的Variants都輸出。微信
// 便利全部的Variants,all是迭代遍歷操做符,至關於for
applicationVariants.all { variant ->// 遍歷得出全部的variant
variant.outputs.all {// 遍歷全部的輸出類型,通常是debug和replease
// 定義apk的名字,拼接variant的版本號
def apkName = "app_${variant.versionName}"
// 判斷是否爲空
if (!variant.flavorName.isEmpty()) {
apkName += "_${variant.flavorName}"
}
// 賦值屬性
outputFileName = apkName + ".apk"
}
}
複製代碼
配置到buildTypes的release和debug下面app
咱們在使用百度地圖和微信相關的API的時候,是須要咱們填入相關的的app簽名進行校驗後才能進行操做,而默認咱們在調試模式下使用的是AS爲咱們提供的android.keystore,所幸,Gradle爲咱們提供了相關的方法,咱們能夠爲debug和release指定密鑰文件和前面。咱們須要先在app.gradle的android節點作作相關的配置。gradle
android{
...
signingConfigs {
debug {
try {
storeFile file("../簽名文件.jks")
storePassword "密碼"
keyAlias "別名"
keyPassword "密碼"
v1SigningEnabled true
v2SigningEnabled false
}
catch (ex) {
ex.printStackTrace()
throw new InvalidUserDataException("祕鑰用戶名或密碼錯誤${ex.getMessage()}")
}
}
release {
try {
storeFile file("../簽名文件.jks")
storePassword "密碼"
keyAlias "別名"
keyPassword "密碼"
v1SigningEnabled true
v2SigningEnabled false
}
catch (ex) {
throw new InvalidUserDataException("祕鑰用戶名或密碼錯誤")
}
}
}
...
}
複製代碼
buildTypes{
release{
signingConfig signingConfigs.release
...
}
debug{
signingConfig signingConfigs.debug
...
}
}
複製代碼
雖然不指定這一步,咱們依然可以正常運行,可是爲了出沒必要要的幺蛾子,咱們仍是把它加上吧。ui
寫程序就會要有log,有log咱們就須要在打release包的時候就須要手動的設置debug開關爲false,可是在某些狀況下咱們可能會忘記關閉的。因此能夠選擇在gradle中經過buildConfigField定義變量,而後再須要的時候直接進行引用。spa
buildTypes {
release {
...
buildConfigField "boolean", "isDebug", "false"
...
}
debug {
...
buildConfigField "boolean", "isDebug", "true"
...
}
}
複製代碼
以上,咱們在兩種模式中都建立了一個叫作isDebug的布爾值的變量,根據類型不一樣設置值,而後須要從新編譯一下。 編譯完成後直接調用BuildConfig.isDebug做爲開關設置便可debug
關於BuildConfig的內容,能夠看下面的截圖3d
既然有了全局debug開關的設置,那麼就確定有這麼一個需求:debug和release下使用不一樣的API請求地址,其實也就是和前面一個套路,直接經過buildConfigField定義變量。調試
buildTypes {
release {
...
buildConfigField "boolean", "isDebug", "false"
buildConfigField "String", "API", "http://192.168.1.1/release"
...
}
debug {
...
buildConfigField "boolean", "isDebug", "true"
buildConfigField "String", "API", "\"http://192.168.1.1/debug\""
...
}
}
複製代碼
String類型必定要記得加雙引用轉義。 String類型必定要記得加雙引用轉義。 String類型必定要記得加雙引用轉義。code
後續敬請期待! 免爲其難的關注一下公衆號吧!!