Gradle依赖的统一管理,解决依赖冲突
看见别人在用implementation rootProject.ext.dependencies["xxxx"]不知道是什么意思,上网查了一下,原来是为了解决或者说预防gradle依赖冲突的问题。
在项目开发中我们会经常引入多个Module,然而每个Module中又包含了V4、V7,为了升级新版本依赖包只用更改一次,我们决定采用Gradle依赖的统一管理,避免重复繁琐的劳动。
记录get到的新知识,用法如下:
1.在Project目录下新建config.gradle文件,文件名可自定义

具体内容如下:
ext {
android = [
compileSdkVersion : ,
buildToolsVersion : "27.0.0",
minSdkVersion : ,
targetSdkVersion : ,
versionCode : ,
versionName : "1.2.2",
renderscriptTargetApi :
]
version = [
supportLibraryVersion : "26.1.1",
okhttpVersion : "3.9.0",
retrofitVersion : "2.3.0",
glideVersion : "4.0.0",
butterknifeVersion : "8.8.1",
fragmentationVersion : "1.1.9",
]
dependencies = [
//base
"appcompat-v7" : "com.android.support:appcompat-v7:${version["supportLibraryVersion"]}",
"cardview-v7" : "com.android.support:cardview-v7:${version["supportLibraryVersion"]}",
"design" : "com.android.support:design:${version["supportLibraryVersion"]}",
"constraint-layout" : "com.android.support.constraint:constraint-layout:1.0.2",
//net
"gson" : "com.google.code.gson:gson:2.8.2",
"okhttp" : "com.squareup.okhttp3:okhttp:${version["okhttpVersion"]}",
"logging-interceptor" : "com.squareup.okhttp3:logging-interceptor:${version["okhttpVersion"]}",
"retrofit" : "com.squareup.retrofit2:retrofit:${version["retrofitVersion"]}",
"converter-gson" : "com.squareup.retrofit2:converter-gson:${version["retrofitVersion"]}",
"adapter-rxjava2" : "com.squareup.retrofit2:adapter-rxjava2:${version["retrofitVersion"]}",
//dao
"greendao" : "org.greenrobot:greendao:3.2.2",
//rx
"rxjava" : "io.reactivex.rxjava2:rxjava:2.1.5",
"rxandroid" : "io.reactivex.rxjava2:rxandroid:2.0.1",
"rxbinding" : "com.jakewharton.rxbinding2:rxbinding:2.1.0",
"rxpermissions" : "com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar",
//di
"javax_annotation" : "org.glassfish:javax.annotation:10.0-b28",
"butterknife" : "com.jakewharton:butterknife:${version["butterknifeVersion"]}",
"butterknife-compiler" : "com.jakewharton:butterknife-compiler:${version["butterknifeVersion"]}",
//multidex
"multidex" : "com.android.support:multidex:1.0.3",
//kotlin
"kotlin-stdlib" : "org.jetbrains.kotlin:kotlin-stdlib:1.2.10",
//ui test
"espresso-core" : "com.android.support.test.espresso:espresso-core:3.0.2",
"espresso-idling-resource" : "com.android.support.test.espresso:espresso-idling-resource:3.0.2",
//unit test , 为了整合mockito和PowerMockito,mockito暂时最高只支持2.8.9
"junit" : "junit:junit:4.12",
"mockito" : "org.mockito:mockito-core:2.8.9",
"powermock-module-junit4" : "org.powermock:powermock-module-junit4:1.7.4"
]
}
2.在Project的build.gradle中添加
apply from: "config.gradle"
3.在modle的build.gradle中添加引用
apply plugin: 'com.android.application'
android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
buildToolsVersion rootProject.ext.android["buildToolsVersion"]
defaultConfig {
applicationId "json.chao.com.wanandroid"
minSdkVersion rootProject.ext.android["minSdkVersion"]
targetSdkVersion rootProject.ext.android["targetSdkVersion"]
versionCode rootProject.ext.android["versionCode"]
versionName rootProject.ext.android["versionName"]
//AndroidJunitRunner必须要显示指定在defaultConfig中,使用Gradle依赖管理无法使其生效
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
renderscriptTargetApi rootProject.ext.android["renderscriptTargetApi"]
renderscriptSupportModeEnabled true // Enable RS support
multiDexEnabled true
vectorDrawables.useSupportLibrary = true
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//base
implementation rootProject.ext.dependencies["appcompat-v7"]
implementation rootProject.ext.dependencies["cardview-v7"]
implementation rootProject.ext.dependencies["design"]
implementation rootProject.ext.dependencies["constraint-layout"]
//net
implementation rootProject.ext.dependencies["gson"]
implementation rootProject.ext.dependencies["okhttp"]
implementation rootProject.ext.dependencies["retrofit"]
implementation rootProject.ext.dependencies["converter-gson"]
implementation rootProject.ext.dependencies["adapter-rxjava2"]
//dao
implementation rootProject.ext.dependencies["greendao"]
//rx
implementation rootProject.ext.dependencies["rxjava"]
implementation rootProject.ext.dependencies["rxandroid"]
implementation rootProject.ext.dependencies["rxbinding"]
implementation rootProject.ext.dependencies["rxpermissions"]
//UI测试
androidTestImplementation (rootProject.ext.dependencies["espresso-core"]) {
exclude group: 'com.android.support', module: 'support-annotations'
}
implementation (rootProject.ext.dependencies["espresso-idling-resource"]) {
exclude module: 'support-annotations'
}
}
(两个文件中有不对应的依赖方法,that's ok, 只是粘贴代码的时候删除了一些,知道用法就行了)
Gradle依赖的统一管理,解决依赖冲突的更多相关文章
- Android Studio 中 Gradle 依赖的统一管理(rootProjectt)
最近遇到Android Studio 中 Gradle 依赖的统一管理的不懂得地方,看大神的也没看懂,百度了一下,使用起来还挺方便 下面是链接,在这里我就不详细说明了, http://www.jian ...
- GRADLE依赖的统一管理
参考链接:http://stormzhang.com/android/2016/03/13/gradle-config/ 我想大部分人应该都在使用Gradle来依赖管理,还没有使用的去面壁思过,Gra ...
- SpringMVC------pom.xml添加spring依赖,统一管理版本
如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.or ...
- AngularJS开发指南15:AngularJS的创建服务,将服务注入到控制器,管理服务依赖详解
创建服务 虽然AngularJS提供了很多有用的服务,但是如果你要创建一个很棒的应用,你可能还是要写自己的服务.你可以通过在模块中注册一个服务工厂函数,或者通过Module#factory api或者 ...
- Maven如何利用父工程对版本进行统一管理
项目开发中我们该怎么对项目依赖的版本进行统一管理呢 答:创建一个父级工程,让所有的业务模块都继承该父级工程,即所有的业务都为Module 在父级工程pom文件添加<dependencyManag ...
- Android使用gradle依赖管理、依赖冲突终极解决方案(转)
Android使用gradle依赖管理.依赖冲突终极解决方案在Android开发中,相信遇到关于版本依赖的问题的同学有不少.虽然Android Studio一般都会自动帮我们去重,但是有时候去重失败了 ...
- maven冲突管理及依赖管理实践
1.“最近获胜策略(nearest wins strategy)”的方式处理依赖冲突 Maven采用“最近获胜策略(nearest wins strategy)”的方式处理依赖冲突,即如果一个项目最终 ...
- Maven 基础(二) | 解决依赖冲突的正确姿势
一.依赖原则 假设,在 JavaMavenService2 模块中,log4j 的版本是 1.2.7,在 JavaMavenService1 模块中,它虽然继承于 JavaMavenService2 ...
- Android Studio配置统一管理依赖版本号引用
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 本Demo采用的是其中一个方案,其他方案请阅读参考资料<Android Studio中统一管理版本号引用配置> 使用步骤 ...
随机推荐
- 11.1 正睿停课训练 Day14
目录 2018.11.1 正睿停课训练 Day14 A 字符串 B 取数游戏(贪心) C 魔方(模拟) 考试代码 B C 2018.11.1 正睿停课训练 Day14 时间:3.5h 期望得分:100 ...
- [BZOJ5427]最长上升子序列/[BZOJ4282]慎二的随机数列
[BZOJ5427]最长上升子序列/[BZOJ4282]慎二的随机数列 题目大意: 给你一个长度为\(n(n\le10^5)\)的整数序列,其中有一些数已经模糊不清了,现在请你任意确定这些整数的值,使 ...
- node+koa2获取请求参数
1.get方式: http://localhost:3000/?user=000001&body=0002&age=26 const router = require('koa-rou ...
- NullPointerExceptio异常出现的情况
NullPointerException是java.lang.NullPointerException的简称,是Java语言中的一个异常类,位于java.lang包中,父类是java.lang.Run ...
- 虚拟机性能监控与故障处理工具------JDK的命令行工具
①jps:虚拟机进程状况工具 功能:列出正在运行的虚拟机进程,并显示1.虚拟机执行主类名称以及2.这些进程的本地虚拟机唯一ID(LVMID). 使用频率最高的JDK命令行工具,其他的JDK工具大多需要 ...
- 【11.9校内测试】【倒计时1天】【ak欢乐赛】【多项式计算模拟】
然而AK失败了,就是因为这道摸你题:(最后一篇题解了吧?QAQ) Solution 模拟多项式乘法,其中的运算处理很像高精度,不过第$i$位代表的就是$x^i$前面的系数了. 好像去年的时候就讲了表达 ...
- emSecure Use Digital Signatures to protect your products
emSecure Use Digital Signatures to protect your products emSecure is an RSA based software solution ...
- 通过JPA注解映射视图的实体类 jpa 视图 无主键 @Query注解的用法(Spring Data JPA) jpa 使用sql语句
参考: https://blog.csdn.net/qq465235530/article/details/68064074 https://www.cnblogs.com/zj0208/p/6008 ...
- sql server management studio 查询的临时文件路径
C:\Users\你的登录名称\Documents\SQL Server Management Studio\Backup Files C:\Users\你的登录名称\AppData\Local\Te ...
- vscode 中使用php-cs-fixer和PHP Formatter 插件规范化PHP代码
什么是PHP-CS-Fixer? 它是php-fig组织定义的PHP代码规范,良好的代码规范可以提高代码可读性,团队沟通维护成本 使用它可以按照指定的规范格式化您的PHP代码,此工具不仅可 ...