Android深入Android进阶之路Android技术知识

组件化架构项目搭建——Gradle统一管理、依赖管理与配置

2022-07-19  本文已影响0人  码农的地中海

一、前言:

随着项目的不断迭代更新,项目变的也越来越大,为了减少编译时间,开发效率,大多采用模块化,组件化开发,moudle 的个数也会随着增加,那么一些依赖或sdk版本升级的时候,每个 moudle 的 gradle 可能都需要修改一遍,统一管理配置就显得比较重要了。网上也给出了几种实现方式,这里只针对个人觉得比较好的方式做介绍。

二、BuildConfig配置文件

Gradle中涉及到的相同的配置。例如不同的module的都要配置compileSdkVersion、buildToolsVersion等变量值,我们把这些公共的配置项称为共享变量。为了方便统一管理,在项目根目录的build.gradle中直接引入配置的build_config.gradle配置文件。

1.在config.gradle中配置统一变量(在根目录下New -> File -> config.gradle)

//基础配置  
ext{
    
android = [    
    compileSdkVersion:25,
    buildToolsVersion:26.0.0,
    applicationId:com.example.demo,
    minSdkVersion:19,
    targetSdkVersion:25
    ...
    ]
}



//统一版本号控制配置,方便查看和修改
version = [

androidSupportSdkVersion:"27.1.1.",

retrofitVersion:"2.2.0",

rx2javaVersion : "2.1.12"

...

]

//使用version中定义的变量统一规范依赖的版本号
dependencies = [

//support
"appcompat-v7" : "com.android.support:appcompat-v7:${version.androidSupportSdkVersion}",

//Retrofit
"retrofit":"com.squareup.retrofit2:${version.retorfitVerson}",

//Rx2Java
"rx2java":"io.reactivex.rxjava2:rxjava:${version.rx2javaVersion}"

...


]
    
}

2.在build.gradle(Project:demo)中引入自定义的config.gradle

apply from:"config.gradle"

3.在build.gralde(Module:app)中使用共享变量

android{
    
    compileSdkVersion rootProject.ext.android["compileSkdVersion"]
    
    targetSkdVersion rootProject.ext.android["targetSdkVersion"]
}


dependencies{
    
    compile fileTree(include:['*.jar'],dir:'libs')
    
    compile rootProject.ext.dependencies.appcompat-v7
    
    compile rootProject.ext.dependencies.retrofit
    
    compile rootProject.ext.dependencies.rx2java
    
}

三、GRADLE 依赖的统一管理

在实际项目中,经常会出现一个 Project 中有多个 Module 的情况,如果每个 Module 又同时拥有相同的依赖,比如 v4 包,那么,每次 v4 包升级的时候修改多个 Module 中的 build.gradle 文件,更新其版本都是一件麻烦的事情,而且很有可能忘记某个 Module。所以,将依赖进行统一管理,对于一个 Project 下拥有多个 Module 的情况来说是非常必要的。

假设你的 Project 结构如下:

root
  --module1
    --build.gradle
  --module2
    --build.gradle
  ...
  --build.gradle

使用脚本 CONFIG.GRADLE

为了方便管理,可以在根目录下新建 config.gradle 文件

root
  --module1
    --build.gradle
  --module2
    --build.gradle
  ...
  --build.gradle
  --config.gradle

在 config.gradle 中添加如下代码(具体情况根据自己项目来定):


ext {
    android = [
            compileSdkVersion: 23,
            buildToolsVersion: "24.0.0 rc1",
            applicationId    : "com.sivan.rxretrofitdemo",
            minSdkVersion    : 16,
            targetSdkVersion : 23,
            versionCode      : 1,
            versionName      : "1.0"
    ]
 
    dependencies = [
            "appcompat-v7"       : "com.android.support:appcompat-v7:23.3.0",
            "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",
            "logging-interceptor": "com.squareup.okhttp3:logging-interceptor:3.0.1"
    ]
}

OK,依赖写完了,那如何在项目中使用呢


image.png

接下来就剩下最后一步了,在需要添加依赖的 Module 中使用

android {
    compileSdkVersion rootProject.ext.android.compileSdkVersion
    buildToolsVersion rootProject.ext.android.buildToolsVersion
 
    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
    }
 
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile rootProject.ext.dependencies["appcompat-v7"]
    compile rootProject.ext.dependencies["rxjava"]
    compile rootProject.ext.dependencies["rxandroid"]
    compile rootProject.ext.dependencies["gson"]
    compile rootProject.ext.dependencies["converter-gson"]
    compile rootProject.ext.dependencies["adapter-rxjava"]
    compile rootProject.ext.dependencies["retrofit"]
    compile rootProject.ext.dependencies["butterknife"]
}

以后再对依赖包升级的时候直接修改 config.gradle 文件就 OK 了

使用配置文件 GRADLE.PROPERTIES

对依赖进行统一管理的另一种方法是使用配置文件 gradle.properties(通常 IDE 会自动生成此文件),在此文件中添加键值对:


LOGGING_INTERCEPTOR=com.squareup.okhttp3:logging-interceptor:3.0.1
CARD_VIEW=com.android.support:cardview-v7:23.3.0

在 Module 的 build.gradle 中使用:

dependencies {
    compile LOGGING_INTERCEPTOR
    compile CARD_VIEW
}

Android资深架构师学习【一键获取】

资料图解.png 最新版学习进阶路线图.png

文末

Android使用Gradle统一配置与依赖管理全部内容,希望文章能够帮你解决详解Android使用Gradle统一配置依赖管理所遇到的程序开发问题。

上一篇下一篇

猜你喜欢

热点阅读