前言 在Android的实际开发中,我们会经常使用到多Module开发,而当我们修改一些版本信息或者SDK升级时,可能涉及多个Module都需要修改。
显然逐个修改Module中的build.gradle文件是非常繁杂而且容易出错的一件事情,基于此种 情况,我们需要对整个工程中的配置和依赖进行统一管理。
一、建立单独config.gradle文件统一配置 我们可以在项目根目录下建立config.gradle文件,然后在项目的build.gradle文件中中引入:
1 apply from:"config.gradle" 2 buildscript { 3 ... 4 }
BuildConfig管理 首先是对BuildConfig的管理,如buildToolsVersion,targetSdkVersion等基本的config信息。
config.gradle文件中添加:
1ext { 2 android = [ 3 sourceCompatibilityVersion: JavaVersion.VERSION_1_8, 4 targetCompatibilityVersion: JavaVersion.VERSION_1_8, 5 minSdkVersion : 21, 6 targetSdkVersion : 28, 7 compileSdkVersion : 30, 8 buildToolsVersion : "28.0.3", 9 versionCode : 1, 10 versionName : "1.0.0" 11 ] 12}
然后在Module里的build.gradle文件中可以使用上述参数:
1 compileSdkVersion rootProject.ext.android["compileSdkVersion"] 2 buildToolsVersion rootProject.ext.android["buildToolsVersion"] 3 4 defaultConfig { 5 applicationId "com.example.demowork1" 6 minSdkVersion rootProject.ext.android["minSdkVersion"] 7 targetSdkVersion rootProject.ext.android["targetSdkVersion"] 8 versionCode rootProject.ext.android["versionCode"] 9 versionName rootProject.ext.android["versionName"] 10 ... 11 }
三、依赖管理 我们在多个Module中可以存在一些相同的依赖,如果我们对这些依赖升级,则需要多个Module配置都更改,容易疏漏。因此对依赖进行统一管理是十分有必要的,我们同样可以使用config.gradle文件实现依赖管理。
在config.gradle文件中添加各个依赖的版本及库名称,使用versions统一管理依赖的版本,dependencies统一管理引入的依赖,详细代码如下:
1 versions = [ 2 // androidx libs 3 appCompatVersion : "1.0.2", 4 recyclerViewVersion : "1.2.0", 5 constraintLayoutVersion : "2.0.4", 6 materialVersion : "1.2.1" 7 ] 8 dependencies = [ 9 // androidx libs 10 appcompat : "androidx.appcompat:appcompat:${versions.appCompatVersion}", 11 recyclerView : "androidx.recyclerview:recyclerview:${versions.recyclerViewVersion}", 12 constraintLayout : "androidx.constraintlayout:constraintlayout:${versions.constraintLayoutVersion}", 13 material : "com.google.android.material:material:${versions.materialVersion}" 14 ]
完成在config中的配置后,我们就可以在Module的build.gradle中引用上述的依赖配置:
1dependencies { 2 3 implementation rootProject.ext.dependencies.appcompat 4 implementation rootProject.ext.dependencies.okhttp 5 6 implementation rootProject.ext.dependencies.recyclerView 7 implementation rootProject.ext.dependencies.constraintLayout 8 implementation rootProject.ext.dependencies.material 9}
我们的config.build是在根目录下,所有Module中都可以引入对应的依赖,这样在升级SDK时直接更新config中的配置即可,达到一个统一管理的效果。
总结 通过自定义config.build文件可以实现依赖的统一管理,对于组件化开发的工程提供维护便利。
