• Android中依赖版本统一管理


    前言

    在Android的实际开发中,我们会经常使用到多Module开发,而当我们修改一些版本信息或者SDK升级时,可能涉及多个Module都需要修改。

    显然逐个修改Module中的build.gradle文件是非常繁杂而且容易出错的一件事情,基于此种
    情况,我们需要对整个工程中的配置和依赖进行统一管理。

    一、建立单独config.gradle文件统一配置

    我们可以在项目根目录下建立config.gradle文件,然后在项目的build.gradle文件中中引入:

        apply from:"config.gradle"
        buildscript {
        ...
        }
    
    • 1
    • 2
    • 3
    • 4

    BuildConfig管理

    首先是对BuildConfig的管理,如buildToolsVersion,targetSdkVersion等基本的config信息。

    config.gradle文件中添加:

    ext {
        android = [
                sourceCompatibilityVersion: JavaVersion.VERSION_1_8,
                targetCompatibilityVersion: JavaVersion.VERSION_1_8,
                minSdkVersion             : 21,
                targetSdkVersion          : 28,
                compileSdkVersion         : 30,
                buildToolsVersion         : "28.0.3",
                versionCode               : 1,
                versionName               : "1.0.0"
        ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    然后在Module里的build.gradle文件中可以使用上述参数:

        compileSdkVersion rootProject.ext.android["compileSdkVersion"]
        buildToolsVersion rootProject.ext.android["buildToolsVersion"]
    
        defaultConfig {
            applicationId "com.example.demowork1"
            minSdkVersion rootProject.ext.android["minSdkVersion"]
            targetSdkVersion rootProject.ext.android["targetSdkVersion"]
            versionCode rootProject.ext.android["versionCode"]
            versionName rootProject.ext.android["versionName"]
            ...
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    三、依赖管理

    我们在多个Module中可以存在一些相同的依赖,如果我们对这些依赖升级,则需要多个Module配置都更改,容易疏漏。因此对依赖进行统一管理是十分有必要的,我们同样可以使用config.gradle文件实现依赖管理。

    config.gradle文件中添加各个依赖的版本及库名称,使用versions统一管理依赖的版本,dependencies统一管理引入的依赖,详细代码如下:

        versions = [
                // androidx libs
                appCompatVersion              : "1.0.2",
                recyclerViewVersion           : "1.2.0",
                constraintLayoutVersion       : "2.0.4",
                materialVersion               : "1.2.1"
            ]
        dependencies = [
                // androidx libs
                appcompat                   : "androidx.appcompat:appcompat:${versions.appCompatVersion}",
                recyclerView                : "androidx.recyclerview:recyclerview:${versions.recyclerViewVersion}",
                constraintLayout            : "androidx.constraintlayout:constraintlayout:${versions.constraintLayoutVersion}",
                material                    : "com.google.android.material:material:${versions.materialVersion}"
            ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    完成在config中的配置后,我们就可以在Module的build.gradle中引用上述的依赖配置:

    dependencies {
    
        implementation rootProject.ext.dependencies.appcompat
        implementation rootProject.ext.dependencies.okhttp
    
        implementation rootProject.ext.dependencies.recyclerView
        implementation rootProject.ext.dependencies.constraintLayout
        implementation rootProject.ext.dependencies.material
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    我们的config.build是在根目录下,所有Module中都可以引入对应的依赖,这样在升级SDK时直接更新config中的配置即可,达到一个统一管理的效果。

    总结

    通过自定义config.build文件可以实现依赖的统一管理,对于组件化开发的工程提供维护便利。

  • 相关阅读:
    你小子,又在偷偷学this指向
    11——go语言数字类型
    我用shell脚本实现项目容器化自动部署
    数据结构-排序
    clusterProfiler包学习
    《最新出炉》系列初窥篇-Python+Playwright自动化测试-6-元素定位大法-下篇
    Dynamics 365 QueryExpression生成工具
    BiMPM实战文本匹配【下】
    【C语音 || 数据结构】二叉树--堆
    linux学习2 — ubuntu 常用的命令总结
  • 原文地址:https://blog.csdn.net/cat_is_so_cute/article/details/126988834