[备忘]Android Studio 简单管理依赖包版本

前言

当一个app存在着很多module,并且module当中又有重复的依赖引用,10个module可以手动一个个改,那么100个module呢?手动改,那你手就要废了。

如何统一管理

先看看下面这句代码,经常可以看到其他开源项目中build.gradle有这句引用

apply from: "config.gradle" // 引入该文件,加载root build.gradle当中,所有的module就都可以使用

在根目录当中创建config.gradle,那么config.gradle当中又哪些内容呢,来看一下我的配置清单

//这边很熟悉吧,不用再解释
ext {
    android = [
            minSdkVersion    : 15,
            targetSdkVersion : 22,
            compileSdkVersion: 25,
            buildToolsVersion: "25.0.0",
            applicationId    : "com.xxx.app.xxx",//包名
            versionCode      : 3,//版本号
            versionName      : "1.0.2"
    ]
//google的支持包版本
    support=[
            support_version:"25.0.0"
    ]
//其他第三方
    other=[
            retrofit:"2.1.0",
            rxjava:"1.1.7",
            rxandroid:"1.2.1",
            okhttp:"3.3.1",
            butterknife:"7.0.1",
            material_dialogs:"0.9.1.0",
            baseitemlayoutlibrary:"2.1.1",
            gson:"2.2.4",
            recovery:"0.0.8",
            multidex:"1.0.1",
            fragmentation:"0.10.1",
            WheelPicker:"1.2.4"
    ]

}

接着引入该文件,上面已经讲过了。

使用方式

def support = rootProject.ext.support
def other = rootProject.ext.other
def dev = rootProject.ext.android 拆分一下rootProject//固定的方法,ext 也是固定的方法 ,android 这个就是config.gradle定义的android。
android {
    compileSdkVersion dev.compileSdkVersion  //一一对应使用,以下都是类似
    buildToolsVersion dev.buildToolsVersion

    //recommend
    dexOptions {
        jumboMode = true
    }
    defaultConfig {
        applicationId dev.applicationId
        minSdkVersion dev.minSdkVersion
        targetSdkVersion dev.targetSdkVersion
        versionCode dev.versionCode
        versionName dev.versionName
}
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:support-annotations:' + support.support_version
    compile 'com.android.support:appcompat-v7:' + support.support_version
    compile 'com.android.support:design:' + support.support_version
    compile 'com.android.support:cardview-v7:' + support.support_version
    compile 'com.android.support:recyclerview-v7:' + support.support_version
    compile 'com.squareup.retrofit2:retrofit:' + other.retrofit
    compile 'com.squareup.retrofit2:adapter-rxjava:' + other.retrofit
    compile 'com.squareup.retrofit2:converter-gson:' + other.retrofit
    compile 'io.reactivex:rxjava:' + other.rxjava
    compile 'io.reactivex:rxandroid:' + other.rxandroid
    compile 'com.squareup.okhttp3:okhttp:' + other.okhttp
    compile 'com.squareup.okhttp3:logging-interceptor:' + other.okhttp
    compile 'com.jakewharton:butterknife:' + other.butterknife
    compile 'com.afollestad.material-dialogs:commons:' + other.material_dialogs
    compile 'com.maiml:baseitemlayoutlibrary:' + other.baseitemlayoutlibrary
    compile 'com.android.support:multidex:' + other.multidex
    compile 'me.yokeyword:fragmentation:' + other.fragmentation
}

这样你所有的module都可以这样使用来进行版本控制。

小记

这是参考其他同志的写法,如果你有更好的方式,欢迎帮我提出,记录在这。以备后用。谢谢

    原文作者:吴彦辉
    原文地址: https://www.jianshu.com/p/d706e25958ec
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞