gradle小技巧--项目依赖库的统一版本管理
来源:互联网 发布:java 乐观锁 例子 编辑:程序博客网 时间:2024/06/05 14:29
引用自 http://www.jianshu.com/p/a092bcc3de7d
日常开发项目中, 有时候会有需要在本地依赖多个库module的情况, 那么我们为了保证所有库支持的版本统一. 就需要用到这个技巧了.
首先我们在项目根目录下创建一个任意命名的xxx.gradle文件. 例如 : custom.gradle
在里面按照下面例子写入我们依赖的库版本.
custom.gradle
ext { android = [ compileSdkVersion : 26, buildToolsVersion : "26.0.1", applicationId : "com.ingdan.innews", minSdkVersion : 15, targetSdkVersion : 26, versionCode : 1, versionName : "1.0", testInstrumentationRunner: "android.support.test.runner.AndroidJUnitRunner" ] dependencies = [ "appcompat-v7" : "com.android.support:appcompat-v7:26.0.1", "kotlin_version" : "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version", "constraint-layout" : "com.android.support.constraint:constraint-layout:1.0.2", "junit" : "junit:junit:4.12", "runner" : "com.android.support.test:runner:1.0.0", "espresso-core" : "com.android.support.test.espresso:espresso-core:3.0.0", "ahbottomnavigation": "com.aurelhubert:ahbottomnavigation:2.0.6", "rxjava" : "io.reactivex:rxjava:1.1.3", "rxandroid" : "io.reactivex:rxandroid:1.1.0", "retrofit" : "com.squareup.retrofit2:retrofit:2.0.0-beta4", "gson" : "com.google.code.gson:gson:2.6.2", "converter-gson" : "com.squareup.retrofit2:converter-gson:2.0.0-beta4", "adapter-rxjava" : "com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4", "butterknife" : "com.jakewharton:butterknife:7.0.1", ]}
接着打开项目根目录下的build.gradle, 在最顶上依赖我们刚刚创建的custom.gradle. 实例如下:
build.gradle
//Top-level build file where you can add configuration options common to all sub-projects/modules.apply from : "custom.gradle"buildscript { ext.kotlin_version = '1.1.3-2' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0-beta3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }}allprojects { repositories { google() jcenter() }}task clean(type: Delete) { delete rootProject.buildDir}
接着打开app module中的build.gradle文件, 按照下面实例格式修改:
(PS: 看第一句代码就可以知道, 这里是获取刚刚写的custom.gradle中的ext块中两个配置的对象, 典型的面向对象编程, 下面大家应该就都能看懂了. 不同的是android节点的可以使用 obj.xx的方式来调用, 而dependencies是使用类似数组的["xxx"]来调用 )
build.gradle
apply plugin: 'com.android.application'apply plugin: 'kotlin-android'apply plugin: 'kotlin-android-extensions'def cfg = rootProject.ext.androiddef dpc = rootProject.ext.dependenciesandroid { compileSdkVersion cfg.compileSdkVersion buildToolsVersion cfg.buildToolsVersion defaultConfig { applicationId cfg.applicationId minSdkVersion cfg.minSdkVersion targetSdkVersion cfg.targetSdkVersion versionCode cfg.versionCode versionName cfg.versionName testInstrumentationRunner cfg.testInstrumentationRunner } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation dpc["kotlin_version"] implementation dpc["appcompat-v7"] implementation dpc["constraint-layout"] testImplementation dpc["junit"] androidTestImplementation dpc["runner"] androidTestImplementation dpc["espresso-core"] //底部导航 compile dpc["ahbottomnavigation"]}
之后我们要改动的话直接在custom.gradle中的ext区域改就行了.
PS: 这里注意一下, implementation 以及 testImplementation 以及 androidTestImplementation 这些依赖修饰符我也不清楚有啥区别, 但是我测试了下使用compile来写也没啥问题, 照样跑的动.
再补充学习另一种统一配置方式
在项目根目录下有个gradle.properties文件, 在文件中这样写
APPCOMPAT = com.android.support:appcompat-v7:26.0.1GSON = com.google.code.gson:gson:2.6.2
然后在app module中的build.gradle文件dependencies{}中引用
compile APPCOMPATcompile GSON
阅读全文
0 0
- gradle小技巧--项目依赖库的统一版本管理
- Gradle统一依赖管理
- Gradle统一依赖管理
- android使用Gradle统一配置依赖版本
- Android使用Gradle统一配置依赖版本
- Android使用Gradle统一配置依赖版本
- Android 使用 Gradle 统一配置依赖管理
- Android 多渠道打包 Gradle统一依赖管理
- 使用Gradle进行统一依赖管理
- android使用Gradle统一依赖库的版本号
- Gradle的大型项目常用库和版本管理
- Gradle的大型项目常用库和版本管理
- Gradle的大型项目常用库和版本管理
- Gradle的大型项目常用库和版本管理
- Gradle的大型项目常用库和版本管理
- Gradle的大型项目常用库和版本管理
- Gradle对多版本项目的管理
- AndroidStudio使用进阶二:搭建自己的maven私服,并使用Gradle统一依赖管理
- cookie个人总结
- 暑假训练day2 : zoj选练
- Linux下" >/dev/null 2>&1 "相关知识说明
- 简述TCP协议的六个标志位和三次握手与四次挥手的过程及原理
- ORA-00600[kcratr_nab_less_than_odr]故障解决
- gradle小技巧--项目依赖库的统一版本管理
- 计算机网络(笔记)
- lintcode--合并k个排序链表
- 拜访
- 理解架构中的设计原则
- 制学科Siemens.Tecnomatix.Machine.Configurator.1.0.0.1027
- Xshell如何修改字体大小和颜色
- SQL join中级篇--hive中 mapreduce join方法分析
- 代码优化之ViewStub