Gradle 統(tǒng)一版本管理
Gradle統(tǒng)一管理的目的是減少版本中的修改量以及避免漏修改的問題鸿捧。
[TOC]
一插掂、在項(xiàng)目頂級(jí)目錄中創(chuàng)建一個(gè)新的myApplication.gradle文件
名稱自定義浮入,與最外層的build.gradle同級(jí)
1、gradle文件創(chuàng)建
工程結(jié)構(gòu)預(yù)覽
2、然后在該gradle中編寫內(nèi)容:
ext {
android = [
applicationId : 'com.dionysus.display',
compileSdkVersion: 28,
minSdkVersion : 21,
targetSdkVersion : 28,
versionCode : 1,
versionName : '1.0'
]
}
寫完之后記得Sync Now
二、在項(xiàng)目最外層的build.gradle中依賴剛剛創(chuàng)建的myApplication.gradle
apply from: 'myApplication.gradle'
或者
apply from: this.rootProject.file('myApplication.gradle')
以上兩種寫法都沒有問題
三阀参、修改App下build.gradle中的內(nèi)容
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"
}
}
??這樣寫的話就很方便我們統(tǒng)一管理gradle中的內(nèi)容蛛壳,比方說,我們工程中module比較多湿镀,在進(jìn)行AndroidSDK版本升級(jí)的時(shí)候炕吸,就不會(huì)出現(xiàn)漏修導(dǎo)致上架失敗的問題。
四勉痴、依賴統(tǒng)一管理
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
}
五蒸矛、優(yōu)化
在使用的地方可以將
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'
}