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


原创粉丝点击