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'
}