Gradle统一管理版本号引用配置
为了提高项目开发效率,在实际项目开发过程中往往会引入一些开源框架,还有项目中使用的各种Module,当引入Module过多时最好提供一种统一的方式去管理版本号,如:compileSdkVersion、buildToolsVersion、androidTestCompile 等,便于日后对版本号进行维护,此处记录2种方式处理上述问题。推荐方式二和方式三
方式一
1.在项目根目录下创建.gradle文件,如:config.gradle
2.在根目录下的build.gradle文件中引入我们创建的配置文件
3.config.gradle中文件内容可以自己定义,如下示例:
ext {
// 用于编译的SDK版本
COMPILE_SDK_VERSION = 23
// 用于Gradle编译项目的工具版本
BUILD_TOOLS_VERSION = "24.0.2"
// 最低支持Android版本
MIN_SDK_VERSION = 14
// 目标版本
TARGET_SDK_VERSION = 23
// 设置是否使用混淆
MINIFY_ENABLED = true
MINIFY_DISABLED = false
// 应用程序包名
APPLICATION_ID = 'com.mainiway.eworkpal'
// Version of "com.android.support:appcompat-v7", refer it as folow:
// compile "com.android.support:appcompat-v7:${APPCOMPAT_VERSION}"
APPCOMPAT_VERSION = '23.2.1'
}
4.在app目录下的build.gradle中使用
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile "com.android.support:cardview-v7:${APPCOMPAT_VERSION}"
compile "com.android.support:appcompat-v7:${APPCOMPAT_VERSION}"
compile "com.android.support:design:${APPCOMPAT_VERSION}"
compile 'com.github.bumptech.glide:glide:3.7.0'
}
方式二(推荐)
1.在根目录下的build.gradle文件下添加 ext{ .... } 中的内容
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
// Define versions in a single place
ext {
// SDK And Tools
minSdkVersion = 14
targetSdkVersion = 23
compileSdkVersion = 23
buildToolsVersion = '24.0.2'
//Dependencies
supportLibraryVersion = '23.2.1'
}
2.在app目录下build.gradle中使用 $rootProject.supportLibraryVersion
apply plugin: 'com.android.application'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId 'com.mainiway.demo'
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0.0"
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile "com.android.support:cardview-v7:$rootProject.supportLibraryVersion"
compile "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
compile "com.android.support:design:$rootProject.supportLibraryVersion"
}
方式三(推荐)
也可以在根目录下的 build.gradle 文件中声明 ext{ .... } 时, 加上一个变量 var ,如:
ext {
var = [
// SDK And Tools
minSdkVersion : 14,
targetSdkVersion : 25,
compileSdkVersion : 25,
buildToolsVersion : "25.0.2",
versionName : "1.0.0",
//Dependencies
supportLibraryVersion: "25.2.0"
]
}
对应的引用方式:
android {
compileSdkVersion var.compileSdkVersion
buildToolsVersion var.buildToolsVersion
defaultConfig {
applicationId "com.xxx.xxx"
minSdkVersion var.minSdkVersion
targetSdkVersion var.targetSdkVersion
versionCode 1
versionName var.version
}
......
}
dependencies {
compile "com.android.support:appcompat-v7:$var.supportLibraryVersion"
compile "com.android.support:recyclerview-v7:$var.supportLibraryVersion"
compile "com.android.support:cardview-v7:$var.supportLibraryVersion"
}
或者像这样:
ext {
minSdkVersion: 14,
targetSdkVersion: 25,
compileSdkVersion: 25,
buildToolsVersion: "25.0.2",
versionName: "1.0.0",
//Dependencies
supportLibraryVersion: "25.2.0"
var = [
SupportV7 : "com.android.support:appcompat-v7:$supportLibraryVersion",
SupportV4 : "com.android.support:support-v4:$supportLibraryVersion",
SupportRecyclerviewV7 : "com.android.support:recyclerview-v7:$supportLibraryVersion"
]
}
那么对应的引用方式要做一点点变化:
android {
compileSdkVersion rootProject.compileSdkVersion
buildToolsVersion rootProject.buildToolsVersion
defaultConfig {
applicationId "com.xxx.xxx"
minSdkVersion rootProject.minSdkVersion
targetSdkVersion rootProject.targetSdkVersion
versionCode 1
versionName var.version
}
... ...
}
dependencies {
compile var.SupportV7
compile var.SupportV4
compile var.SupportRecyclerviewV7
}
选一种适合规范方式,这样一来,管理各个版本号就方便多了。