版本冲突

  Gradle提供了两种解决版本冲突的策略:Newest和Fail.默认策略是Newest,配置Fail模式:

  configurations.all {
    resolutionStrategy.failOnVersionConflict()
  }

这两种策略一般能够满足使用,但Gradle提供了颗粒度更细的控制:

强制依赖

configurations.all {
  //如果有冲突,强制依赖asm-all的3.31版本和commons-io的1.4版本
  resolutionStrategy.force 'asm:asm-all:3.3.1', 'commons-io:commons-io:1.4'
}

排除传递中的依赖

dependencies {
  compile('org.hibernate:hibernate:3.1') {
    //如果有冲突,强制使用3.1版本
    force = true
    //排除传递中的依赖
    exclude module: 'cglib' //通过artifact的名字排除
    exclude group: 'org.jmock' //通过artifact的group名字排除
    exclude group: 'org.unwanted', module: 'iAmBuggy' //通过artifact的名字和grop名字排除
    //禁止该依赖传递
    transitive = false
  }
}

自定义模块优先

有时自己fork了别人的模块,做了修改,此时希望Gradle依赖自己的fork而不是官方的,这是就可以

configurations.all {
  resolutionStrategy.preferProjectModules()
}

版本冲突排查

使用命令行”gradle dependencies xxx”可以查看项目的依赖

依赖更新

方案一:自动更新

项目依赖的远程包如果有更新,会有提醒或者自动更新吗? 不会的,需要你手动设置changing标记为true,这样gradle会每24小时检查更新(默认更新时间),通过更改resolutionStrategy可以修改检查周期。

configurations.all {
//每隔24小时检查远程依赖是否存在更新
resolutionStrategy.cacheChangingModulesFor 24, 'hours'
//每隔10分钟..
//resolutionStrategy.cacheChangingModulesFor 10, 'minutes'
// 采用动态版本声明的依赖缓存10分钟
resolutionStrategy.cacheDynamicVersionsFor 10*60, 'seconds'
} dependencies {
compile('group:module:1.0.0-SNAPSHOT') {
changing = true
}
}
方案二:强制刷新依赖
在执行build、compile等任务时会解析项目配置的依赖并按照配置的仓库去搜寻下载这些依赖。默认情况下,Gradle会依照Gradle缓存->你配置的仓库的顺序依次搜寻这些依赖,并且一旦找到就会停止搜索。如果想要忽略本地缓存每次都进行远程检索可以通过在执行命令时添加--refresh-dependencies参数来强制刷新依赖。
gradle build --refresh-dependencies

Android Studio Gradle依赖冲突的更多相关文章

  1. Android Studio 解决 Gradle 依赖冲突的问题

    Android Studio 解决 Gradle 依赖冲突的问题 参考链接: Android Studio(Gradle)解决库依赖冲突问题:http://www.mobibrw.com/2016/3 ...

  2. Android使用gradle依赖管理、依赖冲突终极解决方案(转)

    Android使用gradle依赖管理.依赖冲突终极解决方案在Android开发中,相信遇到关于版本依赖的问题的同学有不少.虽然Android Studio一般都会自动帮我们去重,但是有时候去重失败了 ...

  3. [转]加速Android Studio/Gradle构建

    加速Android Studio/Gradle构建 android android studio gradle   已经使用Android Studio进行开发超过一年,随着项目的增大,依赖库的增多, ...

  4. Android studio gradle配置完整版(转)

    Android studio gradle配置完整版https://my.oschina.net/u/1471093/blog/539075 Android studio 自定义打包apk名 - pe ...

  5. 【Android Studio探索之路系列】之六:Android Studio加入依赖

    作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.co ...

  6. 解决Android Studio Gradle Build Running慢的问题

    Android Studio方便好用,但是Android Studio Gradle Build Running很慢 解决方法: C:\Users\你的用户名\.gradle 目录下新建一个文件名为 ...

  7. Android studio gradle 打包 那些事

    总结了一下 目前觉得比较好用的gradle 和一些打包 经验.放在这里. 首先说下 渠道号 这个概念,我们经常会统计我们的api 访问来源 是来自于那个app store,这有利于 我们针对性的推广. ...

  8. 解决Android Studio Gradle Build特别慢的问题

    解决Android Studio Gradle Build 特别慢的问题 C:\Users\你的用户名\.gradle目录下新建一个文件名为gradle.properties的文件.内容为:org.g ...

  9. android studio gradle 两种更新方法更新

    android studio gradle 两种更新方法更新 第一种.Android studio更新 第一步:在你所在项目文件夹下:你项目根目录gradlewrappergradle-wrapper ...

随机推荐

  1. Navicat连接mysql出现1045错误

    使用Navicat连接mysql出现1045,可能的原因为忘记密码,下面方法可以帮助重置密码. 1,以管理员权限运行cmd程序: 2,cd C:\Program Files (x86)\MySQL\M ...

  2. IOS 极光推送自定义通知遇到的一些坑

    主要方法: //自定义推送 - (void)networkDidReceiveMessage:(NSNotification *)notification { NSDictionary * userI ...

  3. 玩转BLE(1)_Eddystone beacon

    1. 前言 你相信两条命令就可以把自己的破手机变成一个Beacon节点吗?不相信的话就接着往下看吧. 通过前几篇“蓝牙协议分析”相关的文章,特别是“蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍” ...

  4. openSUSE XFCE桌面 多媒体解码器安装

    openSUSE15 leap 在终端命令行安装编解码器: 添加必要的软件源 zypper addrepo -f http://packman.inode.at/suse/openSUSE_Leap_ ...

  5. ubuntu16.04 解决boot空间不足

    1. dpkg --get-selections |grep linux-image #查看已安装内核版本号 2. uname -a #查看现运行版本 3. sudo apt-get purge 版本 ...

  6. PHP基本随笔

    1:制作一个永不重复的数字: private function getMillisecond(){ list($t1, $t2) = explode(' ', microtime()); return ...

  7. fabric一些资料网站,长期更新

    nodejs的入门教程 http://nqdeng.github.io/7-days-nodejs/#1.2 http://blog.fens.me/series-nodejs/ fabric的知识博 ...

  8. mysql 命令汇总

    1.连接master和slave CHANGE MASTER TO:将slave定向到master,然后用START SLAVE启动复制 change master to master_host='' ...

  9. 【论文阅读】Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks

    Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks 参考 1. 人脸关键点: 2. ...

  10. php中print、echo、print_r、var_dump的区别

    echo,print,print_r,var_dump区别 print只能接收一个字符串:print有返回值1(可在表达式中使用) e.g print 'string 1' e.g if($exp & ...