Gradle 統一版本管理

Gradle 統一版本管理

Gradle統一管理的目的是減少版本中的修改量以及避免漏修改的問題。

[TOC]

一、在項目頂級目錄中創建一個新的myApplication.gradle文件

名稱自定義,與最外層的build.gradle同級

1、gradle文件創建

7208373-d62b47828142189d.png
工程結構預覽

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'
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章