一 为什么我们要对 Gradle 统一管理?
在工作中我们所接触的项目一般都是一个Project
中至少会存在两个甚至多个Module
。试想,如果每个Module
又同时拥有相同的依赖,比如v4
、v7
,当进行版本升级的时候岂不是每个Module
的build.gradle
文件都要改动,这样不仅麻烦不利于维护而且容易出错,所以,将依赖进行统一管理,这对于一个 Project
下拥有多个 Module
的情况来说是非常必要的。本文我们介绍使用脚本 config.gradle
和使用配置文件 gradle.properties
这两种方式进行Android Studio 中 Gradle 依赖的统一管理。
二 使用脚本 config.gradle
1、假设我们的 Project 目录结构如下
root
--module1
--build.gradle
--module2
--build.gradle
...
--build.gradle
2、在根目录下新建 config.gradle 文件
root
--module1
--build.gradle
--module2
--build.gradle
...
--build.gradle
--config.gradle
3、在 config.gradle 中添加如下代码(具体情况根据自己项目来定)
ext {
android = [
compileSdkVersion: 27,
buildToolsVersion: '27.0.3',
minSdkVersion : 19,
targetSdkVersion : 27,
applicationId : "com.yonbor.mydicapp",
versionCode : 1,
versionName : '1.0.0'
]
def dependVersion = [
support : "27.1.1",
retrofit : "2.2.0",
okhttp : "3.4.1",
butterknife: "8.5.1",
rxbinding : "2.1.1",
rxlifecycle: "2.0.1"
]
dependencies = [
//base
"appcompat-v7" : "com.android.support:appcompat-v7:${dependVersion.support}",
"cardview-v7" : "com.android.support:cardview-v7:${dependVersion.support}",
"recyclerview-v7" : "com.android.support:recyclerview-v7:${dependVersion.support}",
"design" : "com.android.support:design:${dependVersion.support}",
"support-core-ui" : "com.android.support:support-core-ui:${dependVersion.support}",
//network
"retrofit" : "com.squareup.retrofit2:retrofit:${dependVersion.retrofit}",
"converter-fastjson-android": "org.ligboy.retrofit2:converter-fastjson-android:2.1.0",
"okhttp-logging-interceptor": "com.squareup.okhttp3:logging-interceptor:${dependVersion.okhttp}",
"retrofit-adapter-rxjava2" : "com.squareup.retrofit2:adapter-rxjava2:${dependVersion.retrofit}",
//rx
"rxjava" : "io.reactivex.rxjava2:rxjava:2.0.7",
"rxandroid" : "io.reactivex.rxjava2:rxandroid:2.0.1",
"rxbinding" : "com.jakewharton.rxbinding2:rxbinding:${dependVersion.rxbinding}",
"rxbinding-support-v4" : "com.jakewharton.rxbinding2:rxbinding-support-v4:${dependVersion.rxbinding}",
"rxbinding-appcompat-v7" : "com.jakewharton.rxbinding2:rxbinding-appcompat-v7:${dependVersion.rxbinding}",
"rxbinding-design" : "com.jakewharton.rxbinding2:rxbinding-design:${dependVersion.rxbinding}",
"rxbinding-recyclerview-v7" : "com.jakewharton.rxbinding2:rxbinding-recyclerview-v7:${dependVersion.rxbinding}",
"rxlifecycle" : "com.trello.rxlifecycle2:rxlifecycle:${dependVersion.rxlifecycle}",
"rxlifecycle-android" : "com.trello.rxlifecycle2:rxlifecycle-android:${dependVersion.rxlifecycle}",
"rxlifecycle-components" : "com.trello.rxlifecycle2:rxlifecycle-components:${dependVersion.rxlifecycle}",
"rxlifecycle-navi" : "com.trello.rxlifecycle2:rxlifecycle-navi:${dependVersion.rxlifecycle}",
"rx-preferences" : "com.f2prateek.rx.preferences2:rx-preferences:2.0.0-RC1",
"rxpermissions" : "com.github.tbruyelle:rxpermissions:0.10.2",
"rxbroadcast" : "com.cantrowitz:rxbroadcast:2.0.0",
// arouter
"arouter" : "com.alibaba:arouter-api:1.2.4",
"arouter-compiler" : "com.alibaba:arouter-compiler:1.1.4",
// 图片
"fresco" : "com.facebook.fresco:fresco:0.14.1",
"glide" : "com.github.bumptech.glide:glide:4.7.1",
"glide-compiler" : "com.github.bumptech.glide:compiler:4.7.1",
// 日志打印
"logger" : "com.orhanobut:logger:2.2.0",
// 下拉刷新
"ultra-ptr" : "in.srain.cube:ultra-ptr:1.0.11",
"recyclerview-swipe" : "com.yanzhenjie:recyclerview-swipe:1.1.4",
"fastjson" : "com.alibaba:fastjson:1.1.56.android",
"ConvenientBanner" : "com.bigkoo:ConvenientBanner:2.1.4",
"eventbus" : "org.greenrobot:eventbus:3.0.0",
// 分包
"multidex" : "com.android.support:multidex:1.0.1",
//autolayout
"autolayout" : "com.zhy:autolayout:1.4.5",
//butterknife
"butterknife" : "com.jakewharton:butterknife:${dependVersion.butterknife}",
"butterknife-compiler" : "com.jakewharton:butterknife-compiler:${dependVersion.butterknife}",
"constraint-layout" : "com.android.support.constraint:constraint-layout:1.1.2",
]
}
4、在 root 目录下的build.gradle 中加上下面这行代码
apply from: "config.gradle"
5、在需要添加依赖的 Module 中使用
android 节点的使用
dependencies 节点的使用
以后再对依赖包进行升级的时候只需修改 config.gradle
文件就 OK 了,是不是相当滴方便。
三 使用配置文件 gradle.properties
对依赖进行统一管理的另一种方法是使用配置文件 gradle.properties
(通常 IDE 会自动生成此文件),在此文件中添加键值对:
CARD_VIEW=com.android.support:cardview-v7:27.1.1
RETROFIT=com.squareup.retrofit2:retrofit:2.2.0
在 Module 的 build.gradle
中使用:
dependencies {
implementation CARD_VIEW
implementation RETROFIT
}