在日常开发中,随着项目的迭代,工程会越来越大,module也会越来越多,每个module都有各自的gradle进行管理,可能不同的module引用了相同的三方依赖库,稍不留神会引用不同版本的库,因此我们需要版本统一。这样的好处就是一来统一了版本,二来又方便管理。
一、新建一个config.gradle文件
这个文件要建立在项目的根目录(和project的build.gradle同级),这个文件作为整个项目的依赖库管理
配置方式如下
可以看到我们不仅整理了三方依赖库,而且把APP的编译版本等信息也配置好了。
二、配置build.gradle(Project)文件
在文件的第一行加入
//很重要,配置了这一步,config.gradle文件才生效
apply from: "config.gradle"
三、如何在module中使用
可见我们只需要引入在config.gradle对依赖库的自定义的名字即可
方式就是rootProject.ext.android[‘自定义的命名’],这样所有的module引用库的话都要在这个文件里找,因此避免了版本号不统一的问题,后期改版本号的话也很方便,当然也可以在这基础上改进,把版本号都放在dependVersion中即可。
android {
compileSdkVersion rootProject.ext.android['compileSdkVersion']
defaultConfig {
applicationId "com.**.**"
minSdkVersion rootProject.ext.android['minSdkVersion']
targetSdkVersion rootProject.ext.android['targetSdkVersion']
versionCode rootProject.ext.android["versionCode"]
versionName rootProject.ext.android["versionName"]
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation rootProject.ext.dependencies["appcompat-v7"]
implementation rootProject.ext.dependencies["support-v4"]
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation rootProject.ext.dependencies["gson"]
implementation rootProject.ext.dependencies["rxjava"]
implementation rootProject.ext.dependencies["rxandroid"]
implementation rootProject.ext.dependencies["retrofit"]
implementation rootProject.ext.dependencies["adapter-rxjava2"]
implementation rootProject.ext.dependencies["converter-scalars"]
implementation rootProject.ext.dependencies["converter-fastjson-android"]
implementation rootProject.ext.dependencies["fastjson"]
implementation rootProject.ext.dependencies["okhttp"]
implementation rootProject.ext.dependencies["logging-interceptor"]
implementation rootProject.ext.dependencies["rxlifecycle"]
implementation rootProject.ext.dependencies["rxlifecycle-android"]
implementation rootProject.ext.dependencies["rxlifecycle-components"]
}
为方便大家复制我把config.gradle文件格式也贴出来
ext {
android = [
compileSdkVersion: 28,
minSdkVersion : 17,
targetSdkVersion : 28,
versionCode : 1,
versionName : "0.0.1"
]
dependVersion = [support: "28.0.0"]
dependencies = [
"support-v4" : "com.android.support:support-v4:${dependVersion.support}",
"appcompat-v7" : "com.android.support:appcompat-v7:${dependVersion.support}",
"design" : "com.android.support:design:${dependVersion.support}",
"recyclerview" : "com.android.support:recyclerview-v7:${dependVersion.support}",
"gson" : "com.google.code.gson:gson:2.8.0",
//rxjava
"rxjava" : "io.reactivex.rxjava2:rxjava:2.1.6",
"rxandroid" : "io.reactivex.rxjava2:rxandroid:2.0.1",
//retrofit
"retrofit" : "com.squareup.retrofit2:retrofit:2.3.0",
"adapter-rxjava2" : "com.squareup.retrofit2:adapter-rxjava2:2.3.0",
"converter-scalars" : "com.squareup.retrofit2:converter-scalars:2.3.0",
"converter-fastjson-android" : "org.ligboy.retrofit2:converter-fastjson-android:2.1.0",
"fastjson" : "com.alibaba:fastjson:1.1.70.android",
//okhttp
"okhttp" : "com.squareup.okhttp3:okhttp:3.11.0",
"logging-interceptor" : "com.squareup.okhttp3:logging-interceptor:3.11.0",
//rxlifecycle
"rxlifecycle" : "com.trello.rxlifecycle2:rxlifecycle:2.0.1",
"rxlifecycle-android" : "com.trello.rxlifecycle2:rxlifecycle-android:2.0.1",
"rxlifecycle-components" : "com.trello.rxlifecycle2:rxlifecycle-components:2.0.1",
"permission" : "com.yanzhenjie:permission:1.1.0",
"autosize" : "me.jessyan:autosize:1.1.2",
]
}