Android中依赖版本统一管理

九路
• 阅读 537

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

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

一、建立单独config.gradle文件统一配置 我们可以在项目根目录下建立config.gradle文件,然后在项目的build.gradle文件中中引入:

    apply from:"config.gradle"
    buildscript {
    ...
    }

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"
    ]
}

然后在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"]
        ...
    }

三、依赖管理 我们在多个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}"
        ]

完成在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
}

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

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

点赞
收藏
评论区
推荐文章
浪人 浪人
3年前
Android 代码动态修改RelativeLayout布局
Android代码动态修改RelativeLayout布局前言有时我们会遇到在xml布局文件中设置好界面后,但是又需要从代码中进行动态布局修改。之前从网上寻找了好多资料,看到的都是新建一个布局文件但是我的需求又是从当前布局文件的基础上进行修改。下面用一个示例大家介绍一个比较简单的办
Easter79 Easter79
3年前
sql循环语句在update中的应用
sql循环语句在update中的应用在实际的开发场景中,我们有时候要对表中的所有数据进行批量修改,但是当数据量十分盘庞大时,比如几百万几千万条数据,这时候我们执行update语句的话就会长时间锁住该表。这样非常容易造成死锁现象(在企业中DBA肯定是不允许执行这种sql语句的)。所以为了避免出现这种问题,我们在执行批量
Wesley13 Wesley13
3年前
ES6模块与CommonJS模块有什么区别?
ES6Module和CommonJS模块的区别:CommonJS是对模块的浅拷贝,ES6Module是对模块的引用,即ES6Module只存只读,不能改变其值,具体点就是指针指向不能变,类似constimport的接口是readonly(只读状态),不能修改其变量值。即不能修改其变量的指针指向,但可以改变变量内部指针指向,可以对comm
Stella981 Stella981
3年前
Android SDK Manager详解
Android基础知识——AndroidSDKManager详解做Android开发时,免不了使用AndroidSDKManager,安装需要的sdk版本、buildTools版本等等。下图展示了2016.11.16号AndroidSDKManager所有的package。很多Android开发的新人在使用的时候可能会疑惑了:这些pack
Wesley13 Wesley13
3年前
CAS二次开发记录
创建项目下载cas4.1.10的源代码,里面有非常多的module,我们使用casserverwebapp来作为模块进行二次开发。自己创建一个项目,将casserverwebapp拷贝相关文件过来,注意整理pom的依赖。数据源的修改我们这里数据源使用的是jndi的方式,所以修改deployerConfigCo
Stella981 Stella981
3年前
HarmonyOS应用开发引入第三方库的三种方式
我们在做应用开发的时候,往往需要引入些优秀的第三方库来进行开发,下面就讲讲我们在做HarmonyOS应用开发中引入第三方库的三种方式。1、通过编写gradle依赖进行引入,熟悉maven或者gradle的朋友对这个就太熟悉了。针对这个方式,我就拿个fastjson库的引入进行举例吧,在对应的Module下的build.gradle文件中添加依赖项即可
Stella981 Stella981
3年前
Android Studio 3.0+ Annotation processors must be explicitly declared now
把AndroidStudio升级到3.0版本的时候出现该问题:可以看到给了我们两种解决办法:1、即给出现问题的三方加上annotationProcessor配置2在相应的module的gradle文件中,使用javaCompileOptionsdefaultConfig{appli
Wesley13 Wesley13
3年前
Android应用程序架构
src/ java原代码存放目录gen/自动生成目录gen目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。这个文件由Android开发工具自动产生的。Android开发工具会自动根据你放入res目录的资源,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以我们应避免手工修改R
Stella981 Stella981
3年前
SVN协作理解下面的版本模型概念很重要
前言所有的版本控制系统都需要解决这样一个基础问题:怎样让系统允许用户共享信息,而不会让他们因意外而互相干扰?版本库里意外覆盖别人的更改非常的容易。文件共享的问题考虑这个情景,我们有两个共同工作者,Harry和Sally,他们想同时编辑版本库里的同一个文件,如果首先Harry保存它的修改,过了一会,Sally
Easter79 Easter79
3年前
SVN协作理解下面的版本模型概念很重要
前言所有的版本控制系统都需要解决这样一个基础问题:怎样让系统允许用户共享信息,而不会让他们因意外而互相干扰?版本库里意外覆盖别人的更改非常的容易。文件共享的问题考虑这个情景,我们有两个共同工作者,Harry和Sally,他们想同时编辑版本库里的同一个文件,如果首先Harry保存它的修改,过了一会,Sally