我是靠谱客的博主 积极台灯,最近开发中收集的这篇文章主要介绍Gradle依赖的统一管理,解决依赖冲突,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

看见别人在用implementation rootProject.ext.dependencies["xxxx"]不知道是什么意思,上网查了一下,原来是为了解决或者说预防gradle依赖冲突的问题。

在项目开发中我们会经常引入多个Module,然而每个Module中又包含了V4、V7,为了升级新版本依赖包只用更改一次,我们决定采用Gradle依赖的统一管理,避免重复繁琐的劳动。

记录get到的新知识,用法如下:
1.在Project目录下新建config.gradle文件,文件名可自定义

具体内容如下:

 1 ext {
 2
 3
android = [
 4
compileSdkVersion
: 27,
 5
buildToolsVersion
: "27.0.0",
 6
minSdkVersion
: 21,
 7
targetSdkVersion
: 27,
 8
versionCode
: 6,
 9
versionName
: "1.2.2",
10
renderscriptTargetApi
: 21
11 
]
12
13
version = [
14
supportLibraryVersion
: "26.1.1",
15
okhttpVersion
: "3.9.0",
16
retrofitVersion
: "2.3.0",
17
glideVersion
: "4.0.0",
18
butterknifeVersion
: "8.8.1",
19
fragmentationVersion
: "1.1.9",
20 
]
21
22
dependencies = [
23
//base
24
"appcompat-v7"
: "com.android.support:appcompat-v7:${version["supportLibraryVersion"]}",
25
"cardview-v7"
: "com.android.support:cardview-v7:${version["supportLibraryVersion"]}",
26
"design"
: "com.android.support:design:${version["supportLibraryVersion"]}",
27
"constraint-layout"
: "com.android.support.constraint:constraint-layout:1.0.2",
28
29
//net
30
"gson"
: "com.google.code.gson:gson:2.8.2",
31
"okhttp"
: "com.squareup.okhttp3:okhttp:${version["okhttpVersion"]}",
32
"logging-interceptor"
: "com.squareup.okhttp3:logging-interceptor:${version["okhttpVersion"]}",
33
"retrofit"
: "com.squareup.retrofit2:retrofit:${version["retrofitVersion"]}",
34
"converter-gson"
: "com.squareup.retrofit2:converter-gson:${version["retrofitVersion"]}",
35
"adapter-rxjava2"
: "com.squareup.retrofit2:adapter-rxjava2:${version["retrofitVersion"]}",
36
37
//dao
38
"greendao"
: "org.greenrobot:greendao:3.2.2",
39
40
//rx
41
"rxjava"
: "io.reactivex.rxjava2:rxjava:2.1.5",
42
"rxandroid"
: "io.reactivex.rxjava2:rxandroid:2.0.1",
43
"rxbinding"
: "com.jakewharton.rxbinding2:rxbinding:2.1.0",
44
"rxpermissions"
: "com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar",
45
46
//di
47
"javax_annotation"
: "org.glassfish:javax.annotation:10.0-b28",
48
"butterknife"
: "com.jakewharton:butterknife:${version["butterknifeVersion"]}",
49
"butterknife-compiler"
: "com.jakewharton:butterknife-compiler:${version["butterknifeVersion"]}",
50
51
//multidex
52
"multidex"
: "com.android.support:multidex:1.0.3",
53
54
//kotlin
55
"kotlin-stdlib"
: "org.jetbrains.kotlin:kotlin-stdlib:1.2.10",
56
57
//ui test
58
"espresso-core"
: "com.android.support.test.espresso:espresso-core:3.0.2",
59
"espresso-idling-resource"
: "com.android.support.test.espresso:espresso-idling-resource:3.0.2",
60
61
//unit test , 为了整合mockito和PowerMockito,mockito暂时最高只支持2.8.9
62
"junit"
: "junit:junit:4.12",
63
"mockito"
: "org.mockito:mockito-core:2.8.9",
64
"powermock-module-junit4"
: "org.powermock:powermock-module-junit4:1.7.4"
65
66 
]
67
68 }

2.在Project的build.gradle中添加

apply from: "config.gradle"

3.在modle的build.gradle中添加引用

 1 apply plugin: 'com.android.application'
 2
 3 android {
 4
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
 5
buildToolsVersion rootProject.ext.android["buildToolsVersion"]
 6
 7 
defaultConfig {
 8
applicationId "json.chao.com.wanandroid"
 9
minSdkVersion rootProject.ext.android["minSdkVersion"]
10
targetSdkVersion rootProject.ext.android["targetSdkVersion"]
11
versionCode rootProject.ext.android["versionCode"]
12
versionName rootProject.ext.android["versionName"]
13
//AndroidJunitRunner必须要显示指定在defaultConfig中,使用Gradle依赖管理无法使其生效
14
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
15
renderscriptTargetApi rootProject.ext.android["renderscriptTargetApi"]
16
renderscriptSupportModeEnabled true
// Enable RS support
17
multiDexEnabled true
18
vectorDrawables.useSupportLibrary = true
19 
}
20 }
21
22
23 
dependencies {
24
implementation fileTree(include: ['*.jar'], dir: 'libs')
25
26
//base
27
implementation rootProject.ext.dependencies["appcompat-v7"]
28
implementation rootProject.ext.dependencies["cardview-v7"]
29
implementation rootProject.ext.dependencies["design"]
30
implementation rootProject.ext.dependencies["constraint-layout"]
31
32
//net
33
implementation rootProject.ext.dependencies["gson"]
34
implementation rootProject.ext.dependencies["okhttp"]
35
implementation rootProject.ext.dependencies["retrofit"]
36
implementation rootProject.ext.dependencies["converter-gson"]
37
implementation rootProject.ext.dependencies["adapter-rxjava2"]
38
39
//dao
40
implementation rootProject.ext.dependencies["greendao"]
41
42
//rx
43
implementation rootProject.ext.dependencies["rxjava"]
44
implementation rootProject.ext.dependencies["rxandroid"]
45
implementation rootProject.ext.dependencies["rxbinding"]
46
implementation rootProject.ext.dependencies["rxpermissions"]
47
48
//UI测试
49
androidTestImplementation (rootProject.ext.dependencies["espresso-core"]) {
50
exclude group: 'com.android.support', module: 'support-annotations'
51 
}
52
implementation (rootProject.ext.dependencies["espresso-idling-resource"]) {
53
exclude module: 'support-annotations'
54 
}
55 }

(两个文件中有不对应的依赖方法,that's ok, 只是粘贴代码的时候删除了一些,知道用法就行了)

转载于:https://www.cnblogs.com/Sharley/p/9625839.html

最后

以上就是积极台灯为你收集整理的Gradle依赖的统一管理,解决依赖冲突的全部内容,希望文章能够帮你解决Gradle依赖的统一管理,解决依赖冲突所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部