Android Gradle全局配置

項目由于是有組件分模塊開發,所以會有很多個module,每一個module下都有一個gradle文件,其中都涉及到各種版本號的設置、尤其是編譯版本相關,如果一個改變其他的都得跟著變否則就可能導致編譯不過,這時候就可以把基本信息抽調出來另外自定義一個gradle專門配置這些基本信息,需改更改版本號時,只需要改配置的gradle了。

先貼一張我的項目結構圖出來

18561089-CB47-4200-8D16-E48F564AECA1.png
apply plugin: 'com.android.library'
android {
    compileSdkVersion 25   //編譯sdk版本
    buildToolsVersion "25.0.3" //構建工具版本
    //
    defaultConfig {
        minSdkVersion 14    //最小適應sdk版本
        targetSdkVersion 25  //目標sdk版本
        versionCode 1      //app版本號
        versionName "1.0"  //app 版本名
        resConfigs "zh"    //語言配置
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    testCompile 'junit:junit:4.12'
    compile project(':base')
}

我的項目里一跟分了很多模塊,每個模塊都有一個gradle,其中 版本信息都是一樣的,如果純粹這么寫,我改一個gradle 里的版本,然后每個都要改一遍就很麻煩了,所以我們需要建一個config.gradle 的文件來管理。

android {
    compileSdkVersion 25   //編譯sdk版本
    buildToolsVersion "25.0.3" //構建工具版本
    //
    defaultConfig {
        minSdkVersion 14    //最小適應sdk版本
        targetSdkVersion 25  //目標sdk版本
        versionCode 1      //app版本號
        versionName "1.0"  //app 版本名
        resConfigs "zh"    //語言配置
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    compile 'com.android.support:appcompat-v7:25.3.1'

步驟:
1、在根目錄建config.gradle

360C14E7-23A8-449B-AC2E-BEE7D8901224.png

在config.gradle 中我們可以這么寫

//support 包的版本號
def supportVersion = "25.2.0"

ext {
   //版本信息配置
    version = [
            "buildToolsVersion": "25.0.2",
            "compileSdkVersion": 25,
            "minSdkVersion"    : 15,
            "targetSdkVersion" : 25,
            "versionCode"      : 260,
            "versionName"      : "2.6.1"
    ]
    //support 包相關包的引用
    dependencies = [
            "support-v4"   : "com.android.support:support-v4:${supportVersion}",
            "appcompat-v7" : "com.android.support:appcompat-v7:${supportVersion}",
            "recyclerview-v7" : "com.android.support:recyclerview-v7:${supportVersion}",
            "design" : "com.android.support:design:${supportVersion}",
            "constraint-layout" : "com.android.support.constraint:constraint-layout:1.0.2"
    ]
}

2、在項目根目錄的build.gradle中apply config.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
apply from: "config.gradle"
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'
        classpath 'com.meituan.android.walle:plugin:1.1.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

3、在所有Module下的gradle中引用這些配置

apply plugin: 'com.android.library'
android {
    compileSdkVersion  rootProject.ext.version.compileSdkVersion
    buildToolsVersion  rootProject.ext.version.buildToolsVersion

    defaultConfig {
        minSdkVersion rootProject.ext.version.minSdkVersion
        targetSdkVersion rootProject.ext.version.targetSdkVersion
        versionCode rootProject.ext.version.versionCode as int
        versionName rootProject.ext.version.versionName
        resConfigs "zh"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile rootProject.ext.dependencies["appcompat-v7"]
    testCompile 'junit:junit:4.12'
    compile project(':base')
}

這樣就大功告成了,如果我們需要更改編譯版本號,只需要改掉config.gradle中的對應的版本號就可以,其余任何地方都不需要改動。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,076評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,869評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,941評論 6 342
  • 工作中我們要善于總結,就像我們做銷售一樣,遇到的顧客穿衣風格不同,消費水平也不一樣,我們要善于總結這些細節,抓住消...
    Ding欣欣閱讀 187評論 0 0
  • 如果你見過cc,一定會被她的雙商震撼~ 初見cc,濃眉深目,高挺的鼻梁,衣著樸素,臉上帶著些許堅毅和精明,身上卻微...
    珠圓玉潤的李大福閱讀 183評論 0 0