gradle统一入口版本管理的初衷是解决一个项目只要一个地方修改,各个有引用的模块便可以自动生效,从而达到了一个地方修改各个地方生效的好处,同时能保持gradle引用库版本的一致,特别适合在多module项目中统一管理。
1.在根目录新建config.gradle文件, 并在项目的顶级 build.gradle 中引用它
android新建gradle文件的方法:
在project视图下
顶级文件用引用config.gradle
apply from:“config.gradle” 意思是所有的子项目或者所有的modules都可以从这个配置文件中读取内容.所以在整个项目的所有 build.gradle 中都可以使用 rootProject.xxx 来引用 config.gradle 中声明的内容。
2. config.gradle文件内容:
ext {
android = [
compileSdkVersion: 28,
buildToolsVersion: "28.0.3",
minSdkVersion : 16,
targetSdkVersion : 28,
versionCode : 1,
versionName : "1.0.0"
]
version = [
androidSupportSdkVersion: "28.0.0",
retrofitSdkVersion : "2.4.0",
dagger2SdkVersion : "2.19",
glideSdkVersion : "4.8.0",
butterknifeSdkVersion : "8.8.1",
rxlifecycleSdkVersion : "1.0",
rxlifecycle2SdkVersion : "2.2.2",
espressoSdkVersion : "3.0.1",
canarySdkVersion : "1.5.4"
]
dependencies = [
//support
"appcompat-v7" : "com.android.support:appcompat-v7:${version["androidSupportSdkVersion"]}",
"design" : "com.android.support:design:${version["androidSupportSdkVersion"]}",
"support-v4" : "com.android.support:support-v4:${version["androidSupportSdkVersion"]}",
"cardview-v7" : "com.android.support:cardview-v7:${version["androidSupportSdkVersion"]}",
"annotations" : "com.android.support:support-annotations:${version["androidSupportSdkVersion"]}",
"recyclerview-v7" : "com.android.support:recyclerview-v7:${version["androidSupportSdkVersion"]}",
]}
对config.gradle内容的使用:
也可以使用 config.gradle 来管理一些项目的基本信息, 这样有多个 module 也可以直接使用同一个值
dependencies {
testImplementation rootProject.ext.dependencies["junit"]
implementation rootProject.ext.dependencies["support-v4"]
implementation rootProject.ext.dependencies["gson"]
implementation rootProject.ext.dependencies["appcompat-v7"]
implementation rootProject.ext.dependencies["cardview-v7"]
implementation rootProject.ext.dependencies["autolayout"]
implementation rootProject.ext.dependencies["butterknife"]
implementation rootProject.ext.dependencies["androideventbus"]
}
android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
buildToolsVersion rootProject.ext.android["buildToolsVersion"]
useLibrary 'org.apache.http.legacy'
defaultConfig {
minSdkVersion rootProject.ext.android["minSdkVersion"]
targetSdkVersion rootProject.ext.android["targetSdkVersion"]
versionCode rootProject.ext.android["versionCode"]
versionName rootProject.ext.android["versionName"]
}
}