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的检查一遍了,只需要修改配置信息就可以了,是不是方便很多了呢?

Android多个Module统一配置相同jar或库的版本号的更多相关文章

  1. Android OS 源码 引入和编译 jar / so库

    Android -- 源码平台下JAR包的引入与编译https://blog.csdn.net/csdn_of_coder/article/details/64538227 BUILD_JAVA_LI ...

  2. Android studio 将 Module 打包成 Jar 包

    整理记录 AndroidStudio 把一个 module 项目打包成 jar 包. 一.默认自动生成的 jar 包 众所周知 android studio 会在library所依赖的 app运行 或 ...

  3. Android 100多个Styles快速开发布局XML,一行搞定View属性,一键统一配置UI...

    Android开发中大量使用XML代码作为界面的布局,使用styles能大幅精简XML代码. 比如下面这个界面从AlertDialog至PlacePickerWindow有19个样式相同的跳转Item ...

  4. Android Studio创建JAR/AAR库

    [时间:2017-09] [状态:Open] [关键词:Android,Android Studio,gradle,jar,aar,library] 0 引言 最近在工作中遇到了升级Android S ...

  5. 安卓与Unity交互之-Android Studio创建Module库模块教程

    安卓开发工具创建Module库 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分 ...

  6. Android tips(八)-->Android Studio打包apk,aar,jar包

    文本我们将讲解android studio打包apk,aar,jar包的相关知识.apk包就是android系统的安装包,这里没什么好说的,aar包是android中独有的类库包,而jar包是java ...

  7. Maven的默认中央仓库以及修改默认仓库&配置第三方jar包从私服下载

    当构建一个Maven项目时,首先检查pom.xml文件以确定依赖包的下载位置,执行顺序如下: 1.从本地资源库中查找并获得依赖包,如果没有,执行第2步. 2.从Maven默认中央仓库中查找并获得依赖包 ...

  8. Android Studio打包apk,aar,jar包

    转载请标明出处:一片枫叶的专栏 文本我们将讲解android studio打包apk,aar,jar包的相关知识.apk包就是android系统的安装包,这里没什么好说的,aar包是android中独 ...

  9. 转:Maven的默认中央仓库以及修改默认仓库&配置第三方jar包从私服下载

    当构建一个Maven项目时,首先检查pom.xml文件以确定依赖包的下载位置,执行顺序如下: 1.从本地资源库中查找并获得依赖包,如果没有,执行第2步. 2.从Maven默认中央仓库中查找并获得依赖包 ...

随机推荐

  1. PreparedStatement vs Statement

    Statement和PreparedStatement之间的区别 1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程   2.使用 Statemen ...

  2. 记录用户操作历史命令history

    我们知道可以使用history命令,查看自己的操作记录,但如果你是root用户,如何查看其它用户的操作记录呢?   其实history命令只是把当前用户目录下的~/.bash_History文件内容列 ...

  3. 170801、VM性能调优

    最近因项目存在内存泄漏,故进行大规模的JVM性能调优 , 现把经验做一记录. 一.JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老 ...

  4. 170524、java.lang.IllegalArgumentException: No converter found for return value of type异常解决

    错误原因及解决步骤 1.原因:这是因为springmvc默认是没有对象转换成json的转换器的,需要手动添加jackson依赖. 2.解决步骤: 手动添加jackson依赖到pom.xml文件中 &l ...

  5. 关于cdn原理(就是内容分发网络)

    cdn,我理解其本质就是为了解决距离远产生的速度问题,使用就近的服务. 从中国请求美国一台服务器上的图片.一般比较慢,因为距离这么远,网络传输是存在损耗的,距离越远,传输的时间就越长.一般会看到浏览器 ...

  6. Log4Net的简单使用

    在前面的随笔中,已经异常处理过滤器中,我们已经将获取到的错误信息写到队列中去,然后又单独的线程对队列中的错误信息处理,将错误信息输出到制定的文件中,但是如果我们需要改变需求,打算将错误信息输出到数据库 ...

  7. 使用DBMS_SUPPORT包

    DBMS_SUPPORT包从Oracle7.2引入,主要功能用以提供更完整的用户session跟踪信息,这个包可以通过运行 dbmssupp.sql 和 prvtsupp.plb 两个脚本来创建.该脚 ...

  8. 设计模式之——浅谈strategy模式(策略模式)

    strategy模式,即策略模式.个人觉得吧,策略模式更多的是一种思维方式. 首先我们要知道,为什么需要策略模式.举个例子,比如用程序输出今天下午去玩什么. PlayGame 玩游戏 package ...

  9. Day06 DOM4J&schema介绍&xPath

    day06总结 今日内容 XML解析之JAXP( SAX ) DOM4J Schema   三.XML解析器介绍   操作XML文档概述   1 如何操作XML文档 XML文档也是数据的一种,对数据的 ...

  10. 两个提高工作效率的神器-Restlet Client和fe助手

    首先是要FQ,百度***或者直接下载蓝灯. 然后安装第一个WEB前端助手: