Android Studio 中 Gradle 依赖的统一管理

为什么要对 Gradle 统一管理

在实际项目中,经常会出现一个 Project 中有多个 Module 的情况,如果每个 Module 又同时拥有相同的依赖,比如 v4 包,那么,每次 v4 包升级的时候修改多个 Module 中的 build.gradle 文件,更新其版本都是一件麻烦的事情,而且很有可能忘记某个 Module。所以,将依赖进行统一管理,对于一个 Project 下拥有多个 Module 的情况来说是非常必要的。

如何管理

假设你的 Project 结构如下:

1
2
3
4
5
6
7
root
--module1
--build.gradle
--module2
--build.gradle
 ...
--build.gradle

使用脚本 config.gradle

为了方便管理,可以在根目录下新建 config.gradle 文件

1
2
3
4
5
6
7
8
root
 --module1
   --build.gradle
 --module2
   --build.gradle
 ...
 --build.gradle
 --config.gradle

在 config.gradle 中添加如下代码(具体情况根据自己项目来定):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
ext {
   android = [
           compileSdkVersion: 23,
           buildToolsVersion: "24.0.0 rc1",
           applicationId    : "com.sivan.rxretrofitdemo",
           minSdkVersion    : 16,
           targetSdkVersion : 23,
           versionCode      : 1,
           versionName      : "1.0"
   ]

   dependencies = [
           "appcompat-v7"       : "com.android.support:appcompat-v7:23.3.0",
           "rxjava"             : "io.reactivex:rxjava:1.1.3",
           "rxandroid"          : "io.reactivex:rxandroid:1.1.0",
           "retrofit"           : "com.squareup.retrofit2:retrofit:2.0.0-beta4",
           "gson"               : "com.google.code.gson:gson:2.6.2",
           "converter-gson"     : "com.squareup.retrofit2:converter-gson:2.0.0-beta4",
           "adapter-rxjava"     : "com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4",
           "butterknife"        : "com.jakewharton:butterknife:7.0.1",
           "logging-interceptor": "com.squareup.okhttp3:logging-interceptor:3.0.1"
   ]
}

OK,依赖写完了,那如何在项目中使用呢

在 root 目录下的build.gradle 中加上apply from: "config.gradle"

Android Studio 中 Gradle 依赖的统一管理

接下来就剩下最后一步了,在需要添加依赖的 Module 中使用

  • android 节点的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
android {
   compileSdkVersion rootProject.ext.android.compileSdkVersion
   buildToolsVersion rootProject.ext.android.buildToolsVersion

   defaultConfig {
       applicationId rootProject.ext.android.applicationId
       minSdkVersion rootProject.ext.android.minSdkVersion
       targetSdkVersion rootProject.ext.android.targetSdkVersion
       versionCode rootProject.ext.android.versionCode
       versionName rootProject.ext.android.versionName
   }

}

  • dependencies 节点的使用

1
2
3
4
5
6
7
8
9
10
11
dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])
   compile rootProject.ext.dependencies["appcompat-v7"]
   compile rootProject.ext.dependencies["rxjava"]
   compile rootProject.ext.dependencies["rxandroid"]
   compile rootProject.ext.dependencies["gson"]
   compile rootProject.ext.dependencies["converter-gson"]
   compile rootProject.ext.dependencies["adapter-rxjava"]
   compile rootProject.ext.dependencies["retrofit"]
   compile rootProject.ext.dependencies["butterknife"]
}

以后再对依赖包升级的时候直接修改 config.gradle 文件就 OK 了

使用配置文件 gradle.properties

详细教程:http://blog.csdn.net/qq_19711823/article/details/51351120

对依赖进行统一管理的另一种方法是使用配置文件 gradle.properties(通常 IDE 会自动生成此文件),在此文件中添加键值对:

1
2
LOGGING_INTERCEPTOR=com.squareup.okhttp3:logging-interceptor:3.0.1
CARD_VIEW=com.android.support:cardview-v7:23.3.0

在 Module 的 build.gradle 中使用:

1
2
3
4
dependencies {
   compile LOGGING_INTERCEPTOR
   compile CARD_VIEW
}

So easy!

1.在build.gralde里面不要直接写版本号和引用名,要在项目根目录创建一个config.gradle,引用里面的内容;例如:

  • build.gralde

1
2
3
4
dependencies {
   compile rootProject.ext.dependencies["appcompat-v7"]
   compile rootProject.ext.dependencies["support-v4"]
}

  • config.gradle

1
2
3
4
5
dependencies = [
           //android-support
           "support-v4"          : "com.android.support:support-v4:${dependVersion.support}",
           "appcompat-v7"        : "com.android.support:appcompat-v7:${dependVersion.support}",
]

                        喜欢 就关注吧,欢迎投稿!

Android Studio 中 Gradle 依赖的统一管理