前言:
在我们项目开发中,经常会通过gradle依赖使用很多jar文件,但是当多个Module时,往往管理版本不方便,依赖的第三方版本不同,所以更新版本号时,要改好多地方。当引入Module过多时最好提供一种统一的方式去管理版本号,如:compileSdkVersion、buildToolsVersion等,方便日后对版本号进行维护工作。
step1:新建一个叫.gradle的文件
在项目根目录下新建一个叫config.gradle的文件(名字可以任意),如下图1:
step2:在project中的build.gradle中添加
在根目录下的build.gradle文件中引入我们创建的配置文件,如下图2:
step3:配置第三方依赖库
修改config.gradle依赖库版本号,如下图3所示:
代码完整如下:
ext {
android = [
// 应用程序包名
applicationId : "com.dc.arcface",
// 用于编译的SDK版本
compileSdkVersion: 27,
// 用于Gradle编译项目的工具版本
buildToolsVersion: "27.0.3",
// 最低支持Android版本
minSdkVersion : 15,
// 目标版本
targetSdkVersion : 27,
versionCode : 1,
versionName : "1.0",
// 设置是否使用混淆
minifyEnabled : true,
minifyDisabled : false
]
dependVersion = [
support : "27.1.1",
junit : "4.12",
constraint : "1.0.2",
runner : "1.0.1",
espresso_core: "3.0.1",
okhttp3 : "3.10.0",
retrofit2 : "2.4.0"
]
dependencies = [
// ------------- Android -------------
supportV4 : "com.android.support:support-v4:${dependVersion.support}",
appcompatV7: "com.android.support:appcompat-v7:${dependVersion.support}",
constraint : "com.android.support.constraint:constraint-layout:${dependVersion.constraint}",
design : "com.android.support:design:${dependVersion.support}",
//------------- 测试 -------------
junit : "junit:junit:${dependVersion.junit}",
runner : "com.android.support.test:runner:${dependVersion.runner}",
espresso : "com.android.support.test.espresso:espresso-core:${dependVersion.espresso_core}",
// ------------- 网络请求 -------------
okhttp : "com.squareup.okhttp3:okhttp:${dependVersion.okhttp3}",
retrofit : "com.squareup.retrofit2:retrofit:${dependVersion.retrofit2}"
]
}
step4:在根目录下的build.gradle中引入
在app目录下的build.gradle中使用我们配置好的config.gradle文件中的版本号,如下图4:
图4
完整代码如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
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
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled rootProject.ext.android.minifyDisabled
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation rootProject.ext.dependencies.appcompatV7
implementation rootProject.ext.dependencies.constraint
testImplementation rootProject.ext.dependencies.junit
androidTestImplementation rootProject.ext.dependencies.runner
androidTestImplementation rootProject.ext.dependencies.espresso
}
原文链接:https://www.jianshu.com/p/5f4782c8c35d