Android多个Module统一配置相同jar或库的版本号
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或库的版本号的更多相关文章
- Android OS 源码 引入和编译 jar / so库
Android -- 源码平台下JAR包的引入与编译https://blog.csdn.net/csdn_of_coder/article/details/64538227 BUILD_JAVA_LI ...
- Android studio 将 Module 打包成 Jar 包
整理记录 AndroidStudio 把一个 module 项目打包成 jar 包. 一.默认自动生成的 jar 包 众所周知 android studio 会在library所依赖的 app运行 或 ...
- Android 100多个Styles快速开发布局XML,一行搞定View属性,一键统一配置UI...
Android开发中大量使用XML代码作为界面的布局,使用styles能大幅精简XML代码. 比如下面这个界面从AlertDialog至PlacePickerWindow有19个样式相同的跳转Item ...
- Android Studio创建JAR/AAR库
[时间:2017-09] [状态:Open] [关键词:Android,Android Studio,gradle,jar,aar,library] 0 引言 最近在工作中遇到了升级Android S ...
- 安卓与Unity交互之-Android Studio创建Module库模块教程
安卓开发工具创建Module库 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分 ...
- Android tips(八)-->Android Studio打包apk,aar,jar包
文本我们将讲解android studio打包apk,aar,jar包的相关知识.apk包就是android系统的安装包,这里没什么好说的,aar包是android中独有的类库包,而jar包是java ...
- Maven的默认中央仓库以及修改默认仓库&配置第三方jar包从私服下载
当构建一个Maven项目时,首先检查pom.xml文件以确定依赖包的下载位置,执行顺序如下: 1.从本地资源库中查找并获得依赖包,如果没有,执行第2步. 2.从Maven默认中央仓库中查找并获得依赖包 ...
- Android Studio打包apk,aar,jar包
转载请标明出处:一片枫叶的专栏 文本我们将讲解android studio打包apk,aar,jar包的相关知识.apk包就是android系统的安装包,这里没什么好说的,aar包是android中独 ...
- 转:Maven的默认中央仓库以及修改默认仓库&配置第三方jar包从私服下载
当构建一个Maven项目时,首先检查pom.xml文件以确定依赖包的下载位置,执行顺序如下: 1.从本地资源库中查找并获得依赖包,如果没有,执行第2步. 2.从Maven默认中央仓库中查找并获得依赖包 ...
随机推荐
- C++中堆和栈的完全解析
C++中堆和栈的完全解析 内存分配方面: 堆: 操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删 除,并 ...
- html<input>输入框中各种正则表达式设置
<%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding ...
- 善用缓存提高你的Spring工程效率
欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...
- js判断移动端和PC端跳转不同页面
方法一: /* * * 判断PC端与WAP端 */ var mobile_bs = { versions: function() { var u = navigator.userAgent; retu ...
- (2.5)DDL增强功能-触发器trigger
SQL Server:触发器详解 1. 概述 2. 触发器的分类 3. Inserted和Deleted表 4. 触发器的执行过程 5. 创建触发器 6. 修改触发器: 7. 删除触发器: 8. ...
- MySQL 储存过程-原理、语法、函数详细说明
Mysql储存过程是一组为了完成特定功能的SQL语句集,经过编译之后存储在数据库中,当需要使用该组SQL语句时用户只需要通过指定储存过程的名字并给定参数就可以调用执行它了,简而言之就是一组已经写好的命 ...
- angry_birds_again_and_again(2014年山东省第五届ACM大学生程序设计竞赛A题)
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2877 题目描述 The problems ca ...
- mysql数据库访问权限限制设置
---只能本地访问,设置随意访问 update user set host='%' where host='localhost': flush privileges; ---随意访问,设置只能本地访问 ...
- RedHat Linux文本模式下乱码解决方法
如果在安装RedHat Linux时选择中文未缺省语言,在文本模式下会出现乱码情况,对于在CLI(command-line interface,命令行界面)方式下调试程序时诸多不便,因为出错信息全是乱 ...
- MapReduce的几个实现
1.倒排索引的实现 import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.con ...