Android Studio多个Module依赖相同的库时对版本号进行统一配置

在Android项目中,一个项目经常会依赖其他的一个甚至多个库文件,在这种依赖的时候最常见的一个错误就是 jar包版本不同引起jar包冲突,最常见的做法就是 删掉其中一个,只留下一个,就不会发生版本不同的问题了(但是也有的时候可能不能删除)。所以就有另外一种解决方案 将所有的相同的jar包修改成相同的版本号 就可以了。但是像一些常用的包,每个依赖的Module中可能都有,导致我们 每一次修改版本的时候都需要查找每个Module看是否引用了相同的库文件,非常麻烦,要是有一种方法能够对所有的版本号进行统一配置就好了,我们只需要修改一下配置,其他的地方就都不用改了。这篇博客就说一下在Android Studio 中对多个Module中的相同依赖进行版本号的统一配置和管理几种方式(包括compileSdkVersion、buildToolsVersion等)。

方式一

1、在项目根目录下新建文件 config.gradle,如下图:

2、将新建的配置文件引入到项目中:在 项目的 build.gradle 文件 中添加 apply from: "config.gradle"

3、在 自己新建 config.gradle文件中指定版本号:

4、在 各个Module的 build.gradle 文件中引入 版本号:

方式二

不创建 xxx.gradle 文件,直接 将原本写在 config.gradle 中的内容写在项目根目录的build.gradle 文件 中:

buildscript {
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.1'
        classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'

// NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

ext {
    COMPILE_SDK_VERSION = 26
    BUILD_TOOLS_VERSION = "26.0.2"
    MIN_SDK_VERSION = 14
    TARGET_SDK_VERSION = 26
    ANDROID_SUPPORT_V7 = "26.1.0"
    ANDROID_SUPPORT_CONSTRAINT = "1.0.0-beta4"
    JUNIT_SUPPORT = "4.12"
    RXJAVA_VERSION = "2.0.1"
    RETROFIT_VERSION = "2.2.0"
    DAGGER_VERSION = "2.10"
    BUTTERKNIFE_VERSION = "8.8.1"
    JETBRAINS_ANNOTATIONS_VERSION = "15.0"
}

如上,最后一段在 ext {} 中的代码就是定义版本号,在Module的 build.gradel 文件中引入版本号和方式一一样。

方式三

在方式二的基础上进行改变,在 ext{} 中引入新的变量 ver(随意命名)。

1、修改 项目根目录下的 build.gradle 文件 ext 的内容 如下:

ext {
        ver = [
                BUTTERKNIFE_VERSION : "8.8.1",
                DAGGER_VERSION : "2.10",
                JETBRAINS_ANNOTATIONS_VERSION : "15.0"
        ]
    }

2、在 各个 Module 中的 build.gradel 文件中引入版本号 方法:

compile 'com.google.dagger:dagger:' + ver.DAGGER_VERSION
    annotationProcessor 'com.google.dagger:dagger-compiler:' + ver.DAGGER_VERSION
    compile 'com.jakewharton:butterknife:' + ver.BUTTERKNIFE_VERSION
    annotationProcessor 'com.jakewharton:butterknife-compiler:' + ver.BUTTERKNIFE_VERSION

随便一看,好像和上面的一样,根本就没区别;仔细看一下哦,还是 有区别的,在前面 多了我们自定义从变量名加.(点) ver.。

扩展一点

上面的三种方式,我们都是将 依赖库的版本号 放入到配置文件或者 项目根目录的 ext{} 中。其实我们也可以 将完整的 依赖库 + 版本号 都放入到它们的位置也是可以的,具体做法如下:

1、修改 项目根目录下的 build.gradle 文件 ext{} 的内容 如下:

ext {
        RETROFIT_VERSION = "2.2.0"
        CONVERTER_GSON = 'com.squareup.retrofit2:converter-gson:' + RETROFIT_VERSION
        CONVERTER_SCALARS = 'com.squareup.retrofit2:converter-scalars:' + RETROFIT_VERSION
        ver = [
                retrofit : 'com.squareup.retrofit2:retrofit:' + RETROFIT_VERSION,
                adapterRxjava2 : 'com.squareup.retrofit2:adapter-rxjava2:' + RETROFIT_VERSION,
        ]
    }

2、在 各个 Module 中的 build.gradel 文件中引入版本号 方法:

dependencies {
        // ... 其他的依赖
        compile CONVERTER_GSON
        compile CONVERTER_SCALARS
        compile ver.retrofit
        compile ver.adapterRxjava2
    }

当我们对这些信息进行统一配置之后,以后需要修改版本号时就不需要一个一个Module的检查一遍了,只需要修改配置信息就可以了,是不是方便很多了呢?

最新文章

  1. Java 解决约瑟夫问题
  2. db2循环
  3. 使用exe4j打包Java程序
  4. 【poj1738】 An old Stone Game
  5. Android中的五大布局和logcat打印日志
  6. 哪些问题困扰着我们?DevOps 使用建议
  7. 观察者模式(一)--《Head First DesignPattern》
  8. 【天池大数据赛题解析】资金流入流出预测(附Top4答辩ppt)
  9. Android开发之ViewPager实现多页面切换及动画效果(仿Android的Launcher效果)
  10. HTTP的报文格式解析
  11. 新学到的xss姿势,分享一下
  12. JAVA WEB快速入门之从编写一个基于SpringMVC框架的网站了解Maven、SpringMVC、SpringJDBC
  13. Spring及SpringBoot @Async配置步骤及注意事项
  14. Redis配置与安装
  15. threejs绕轴转,粒子系统,控制器操作等(二)
  16. ionic2集成sdk后,连接超时的问题
  17. Ubuntu命令行快捷启动Matlab
  18. C# Aspose.Cells方式导入Excel文件
  19. C#串口传输中文字符
  20. 【牛客OI赛制测试赛3】 毒瘤xor

热门文章

  1. shell爬虫简易脚本(线程数可控)
  2. RAID和LVM磁盘阵列
  3. Spring源码学习之IOC实现原理(二)-ApplicationContext
  4. Asp.NET 与 WebApi 共享Session
  5. COURSES---poj1469 hdu1083(最大匹配)
  6. Python开发【模块】:torndb
  7. MySQL不能启动 Can't start server : Bind on unix socke
  8. (转)二十三种设计模式及其python实现
  9. word安装楷体gb2312方法。
  10. python + unittest 做单元测试之学习笔记