1. 統(tǒng)一SDK版本管理配置
2. build.gradle 使用each循環(huán)引入第三方框架
3. build.gradle中buildConfigField使用
4. 優(yōu)化res資源管理, 使用SourceSets資源分包
5. gradle配置模板
為了提高項(xiàng)目開發(fā)效率,在實(shí)際項(xiàng)目開發(fā)過程中往往會(huì)引入一些開源框架,還有項(xiàng)目中使用的各種Module锣吼,當(dāng)引入Module過多時(shí)最好提供一種統(tǒng)一的方式去管理版本號(hào)扫夜,如:compileSdkVersion弄贿、buildToolsVersion茫打、minSdkVersion等混萝。
我在網(wǎng)上找了很多資料嘹吨,網(wǎng)上提供了好幾種方案搬味,寫法也有好幾種,不過最終原理其實(shí)都是差不多的躺苦,主要原理分為以下幾步:
一. 創(chuàng)建配置文件config.gradle
配置信息就放在這個(gè)文件里, 文件名字隨便取身腻,后綴是.gradle即可。
情況一:文件放在項(xiàng)目的 app目錄下匹厘,如下圖:appConfig.png
情況二:文件放在項(xiàng)目的 項(xiàng)目根目錄下嘀趟,如下圖:config.png
config.png
二. 找到配置文件config.gradle
情況一:文件放在項(xiàng)目的 app目錄下
一般來說,放在 app目錄下config.gradle配置信息愈诚,只能在主項(xiàng)目中引用她按,引用方式:
在app目錄下的build.gradle文件開頭,加上apply from: 'config.gradle'炕柔。如下圖
情況二:文件放在項(xiàng)目的 app目錄下
這種情況酌泰,config.gradle配置信息可以全局使用,在主工程和Module下都可以使用匕累,統(tǒng)一SDK版本配置需要使用這種方式陵刹,引用方式:
在項(xiàng)目根目錄下的build.gradle文件加上apply from: 'config.gradle'。如下圖
三. 引用配置信息里面的內(nèi)容
1. config.gradle應(yīng)該怎么寫
網(wǎng)上有好幾種寫法欢嘿,下面是我個(gè)人認(rèn)為比較方便的方案
ext {
//sdk版本管理
CompileSdkVersion = 26 // 用于編譯的SDK版本
BuildToolsVersion = "28.0.3" // 用于Gradle編譯項(xiàng)目的工具版本
ApplicationId = "com.wanji.shop" //包名
MinSdkVersion = 19 // 最低支持Android版本
TargetSdkVersion = 26 // 目標(biāo)版本
VersionCode = 1 //版本號(hào)
VersionName = "1.0"
MinifyEnabled = false //是否混淆
// App dependencies
appcompatVersion = "26.1.0"
constraintVersion = "1.1.3"
junitVersion = "4.12"
runnerVersion = "1.0.2"
espressoVersion = "3.0.2"
supportV4Version = "26.1.0"
designVersion = "26.1.0"
//公共的(系統(tǒng)的)
roots = [
//項(xiàng)目基本的(每個(gè)項(xiàng)目需要的)
"appcompatV7" : "com.android.support:appcompat-v7:${appcompatVersion}",
"constraint" : "com.android.support.constraint:constraint-layout:${constraintVersion}",
"junit" : "junit:junit:${junitVersion}",
"runner" : "com.android.support.test:runner:${runnerVersion}",
"espresso" : "com.android.support.test.espresso:espresso-core:${espressoVersion}",
]
2. build.gradle怎么引用
①: 對(duì)于ext下的變量衰琐,網(wǎng)上的寫法:rootProject.ext.CompileSdkVersion或者ext.CompileSdkVersion也糊,其實(shí)直接引用變量名CompileSdkVersion就可以了。
②:對(duì)于:roots數(shù)組羡宙,直接roots.appcompatV7這樣引用就可以了狸剃。總體寫法如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion CompileSdkVersion
defaultConfig {
applicationId ApplicationId
minSdkVersion MinSdkVersion
targetSdkVersion TargetSdkVersion
versionCode VersionCode
versionName VersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled MinifyEnabled
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation roots.appcompatV7
implementation roots.constraint
testImplementation roots.junit
androidTestImplementation roots.runner
androidTestImplementation roots.espresso
}