Gradle 统一版本管理
Gradle统一管理的目的是减少版本中的修改量以及避免漏修改的问题。
[TOC]
一、在项目顶级目录中创建一个新的myApplication.gradle文件
名称自定义,与最外层的build.gradle同级
1、gradle文件创建
工程结构预览2、然后在该gradle中编写内容:
ext {
android = [
applicationId : 'com.dionysus.display',
compileSdkVersion: 28,
minSdkVersion : 21,
targetSdkVersion : 28,
versionCode : 1,
versionName : '1.0'
]
}
写完之后记得Sync Now
二、在项目最外层的build.gradle中依赖刚刚创建的myApplication.gradle
apply from: 'myApplication.gradle'
或者
apply from: this.rootProject.file('myApplication.gradle')
以上两种写法都没有问题
三、修改App下build.gradle中的内容
1、原先的写法
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.dionysus.display"
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
2、修改后的写法
android {
compileSdkVersion this.rootProject.android.compileSdkVersion
defaultConfig {
applicationId this.rootProject.android.applicationId
minSdkVersion this.rootProject.android.minSdkVersion
targetSdkVersion this.rootProject.android.targetSdkVersion
versionCode this.rootProject.android.versionCode
versionName this.rootProject.android.versionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
这样写的话就很方便我们统一管理gradle中的内容,比方说,我们工程中module比较多,在进行AndroidSDK版本升级的时候,就不会出现漏修导致上架失败的问题。
四、依赖统一管理
1、myApplication.gradle
dependencies = [
appcompat : 'com.android.support:appcompat-v7:28.0.0',
constraintLayout: 'com.android.support.constraint:constraint-layout:1.1.3'
]
2、build.gradle
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation this.rootProject.ext.dependencies.appcompat
implementation this.rootProject.ext.dependencies.constraintLayout
}
五、优化
在使用的地方可以将
this.rootProject.ext.android
抽取出来
apply plugin: 'com.android.application'
def config = this.rootProject.ext.android
def deps = this.rootProject.ext.dependencies
android {
compileSdkVersion config.compileSdkVersion
defaultConfig {
applicationId config.applicationId
minSdkVersion config.minSdkVersion
targetSdkVersion config.targetSdkVersion
versionCode config.versionCode
versionName config.versionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation deps.appcompat
implementation deps.constraintLayout
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
网友评论