Gradle依赖统一管理

为什么要进行gradle依赖统一管理?

当项目开始越来越大的时候,模块也越来越多的时候,这时候统一管理就显的非常必要,只需修改一个地方就可以了,减少不必要的工作量。而且,可以避免每个模块依赖不同的版本导致依赖冲突的情况。

1

首先我们在project下新建.gradle文件,可以叫“common_config.gradle”,然后将要统一管理的信息写到这个文件里。

ext {
    android = [
            compileSdkVersion: 27,
            buildToolsVersion: "26.0.2",
            applicationId    : "com.lkp.modulesets",
            minSdkVersion    : 15,
            targetSdkVersion : 27,
            versionCode      : 1,
            versionName      : "1.0.0"
    ]

    dependencies = [

            "constraint-layout"     : 'com.android.support.constraint:constraint-layout:1.1.2',
            "appcompat-v7"          : 'com.android.support:appcompat-v7:27.1.1',
            "design"                : 'com.android.support:design:27.1.1',
            "gson"                  : 'com.google.code.gson:gson:2.8.5',
            "glide"                 : 'com.github.bumptech.glide:glide:4.8.0',
            "glide-compiler"        : 'com.github.bumptech.glide:compiler:4.8.0',

            /**
             * Libraries(Local)
             */
            "threadpool"            : project(':threadpool')
    ]
}

2

然后在Project的build.gradle中添加
apply from: "common_config.gradle"

3

然后在modle或者app中添加引用,如在app的引用

apply plugin: 'com.android.application'

android {
    compileSdkVersion rootProject.ext.android.compileSdkVersion
    defaultConfig {
        applicationId rootProject.ext.android.applicationId
        minSdkVersion rootProject.ext.android.minSdkVersion
        targetSdkVersion rootProject.ext.android.targetSdkVersion
        versionCode rootProject.ext.android.versionCode
        versionName rootProject.ext.android.versionName
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation rootProject.ext.dependencies["constraint-layout"]
    implementation rootProject.ext.dependencies["appcompat-v7"]
    implementation rootProject.ext.dependencies["design"]
}

推荐阅读更多精彩内容