欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Gradle依赖的统一管理

程序员文章站 2022-05-31 20:22:28
...

在项目开发中我们会经常引入多个Module,然而每个Module中又包含了V4、V7,为了升级新版本依赖包只用更改一次,我们决定采用Gradle依赖的统一管理,避免重复繁琐的劳动。

在Project目录下新建config.gradle文件(文件名字可以自定义)

ext {
    android = [
            compileSdkVersion: 26,
            buildToolsVersion: "26.0.2",
            applicationId    : "com.wj.baseutils",
            minSdkVersion    : 15,
            targetSdkVersion : 26,
            versionCode      : 1,
            versionName      : "1.0.0"
    ]

    def dependVersion = [
            support    : "26.1.0",
            butterknife: "8.8.1",
            glide      : "4.5.0",
    ]

    dependencies = [
            //base
            "support-v4"          : "com.android.support:support-v4:${dependVersion.support}",
            "appcompat-v7"        : "com.android.support:appcompat-v7:${dependVersion.support}",
            "annotations"         : "com.android.support:support-annotations:${dependVersion.support}",
            "constraint-layout"   : "com.android.support.constraint:constraint-layout:1.0.2",
            //test
            "junit"               : "junit:junit:4.12",
            "runner"              : "com.android.support.test:runner:1.0.1",
            "espresso-core"       : "com.android.support.test.espresso:espresso-core:3.0.1",
            //eventbus
            "eventbus"            : "org.greenrobot:eventbus:3.1.1",
            //butterknife
            "butterknife"         : "com.jakewharton:butterknife:${dependVersion.butterknife}",
            "butterknife-compiler": "com.jakewharton:butterknife-compiler:${dependVersion.butterknife}",
            //Glide
            "glide"               : "com.github.bumptech.glide:glide:${dependVersion.glide}",
            "glide-compiler"      : "com.github.bumptech.glide:compiler:${dependVersion.glide}"
    ]
}

然后在Project的build.gradle中添加

apply from: "config.gradle"

在modle或者app中添加引用

apply plugin: 'com.android.library'

android {
    compileSdkVersion rootProject.ext.android.compileSdkVersion

    defaultConfig {
        minSdkVersion rootProject.ext.android.minSdkVersion
        targetSdkVersion rootProject.ext.android.targetSdkVersion
        versionCode rootProject.ext.android.versionCode
        versionName rootProject.ext.android.versionName

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation rootProject.ext.dependencies["constraint-layout"]
    //test
    testImplementation rootProject.ext.dependencies["junit"]
    androidTestImplementation rootProject.ext.dependencies["runner"]
    androidTestImplementation rootProject.ext.dependencies["espresso-core"]
    //support
    api(rootProject.ext.dependencies["support-v4"]) {
        exclude module: 'support-annotations'
    }
    api(rootProject.ext.dependencies["appcompat-v7"]) {
        exclude module: 'support-v4'
    }
    api rootProject.ext.dependencies["annotations"]

    //eventbus
    api rootProject.ext.dependencies["eventbus"]

    //butterknife
    api(rootProject.ext.dependencies["butterknife"]) {
        exclude module: 'support-annotations'
    }
    annotationProcessor rootProject.ext.dependencies["butterknife-compiler"]

    //glide
    api(rootProject.ext.dependencies["glide"]) {
        exclude module: 'support-fragment'
    }
    annotationProcessor(rootProject.ext.dependencies["glide-compiler"]) {
        exclude module: 'jsr305'
    }
}