1. 統(tǒng)一SDK版本管理配置

1. 統(tǒng)一SDK版本管理配置
2. build.gradle 使用each循環(huán)引入第三方框架
3. build.gradle中buildConfigField使用
4. 優(yōu)化res資源管理, 使用SourceSets資源分包
5. gradle配置模板

為了提高項目開發(fā)效率,在實際項目開發(fā)過程中往往會引入一些開源框架,還有項目中使用的各種Module,當引入Module過多時最好提供一種統(tǒng)一的方式去管理版本號,如:compileSdkVersion、buildToolsVersion、minSdkVersion等。

我在網上找了很多資料,網上提供了好幾種方案,寫法也有好幾種,不過最終原理其實都是差不多的,主要原理分為以下幾步:

一. 創(chuàng)建配置文件config.gradle

配置信息就放在這個文件里, 文件名字隨便取,后綴是.gradle即可。

情況一:文件放在項目的 app目錄下,如下圖:appConfig.png
appConfig.png
情況二:文件放在項目的 項目根目錄下,如下圖:config.png
config.png

二. 找到配置文件config.gradle

情況一:文件放在項目的 app目錄下

一般來說,放在 app目錄下config.gradle配置信息,只能在主項目中引用,引用方式:
在app目錄下的build.gradle文件開頭,加上apply from: 'config.gradle'。如下圖


a.png
情況二:文件放在項目的 app目錄下

這種情況,config.gradle配置信息可以全局使用,在主工程和Module下都可以使用,統(tǒng)一SDK版本配置需要使用這種方式,引用方式:
在項目根目錄下的build.gradle文件加上apply from: 'config.gradle'。如下圖


b.png

三. 引用配置信息里面的內容

1. config.gradle應該怎么寫

網上有好幾種寫法,下面是我個人認為比較方便的方案

ext {
    //sdk版本管理
    CompileSdkVersion = 26  // 用于編譯的SDK版本
    BuildToolsVersion = "28.0.3" // 用于Gradle編譯項目的工具版本

    ApplicationId = "com.wanji.shop" //包名
    MinSdkVersion = 19    // 最低支持Android版本
    TargetSdkVersion = 26   // 目標版本
    VersionCode = 1         //版本號
    VersionName = "1.0"
    MinifyEnabled = false //是否混淆

    // App dependencies
    appcompatVersion = "26.1.0"
    constraintVersion = "1.1.3"
    junitVersion = "4.12"
    runnerVersion = "1.0.2"
    espressoVersion = "3.0.2"

    supportV4Version = "26.1.0"
    designVersion = "26.1.0"

    //公共的(系統(tǒng)的)
    roots = [
            //項目基本的(每個項目需要的)
            "appcompatV7"               :   "com.android.support:appcompat-v7:${appcompatVersion}",
            "constraint"                :   "com.android.support.constraint:constraint-layout:${constraintVersion}",
            "junit"                     :   "junit:junit:${junitVersion}",
            "runner"                    :   "com.android.support.test:runner:${runnerVersion}",
            "espresso"                  :   "com.android.support.test.espresso:espresso-core:${espressoVersion}",
    ]
2. build.gradle怎么引用

①: 對于ext下的變量,網上的寫法:rootProject.ext.CompileSdkVersion或者ext.CompileSdkVersion,其實直接引用變量名CompileSdkVersion就可以了。
②:對于:roots數(shù)組,直接roots.appcompatV7這樣引用就可以了??傮w寫法如下:

apply plugin: 'com.android.application'

android {
    compileSdkVersion CompileSdkVersion
    defaultConfig {
        applicationId ApplicationId
        minSdkVersion MinSdkVersion
        targetSdkVersion TargetSdkVersion
        versionCode VersionCode
        versionName VersionName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

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

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation roots.appcompatV7
    implementation roots.constraint
    testImplementation roots.junit
    androidTestImplementation roots.runner
    androidTestImplementation roots.espresso
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,057評論 25 709
  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,000評論 2 59
  • Android組件化項目地址:Android組件化項目AndroidModulePattern Android組件...
    半灬邊灬天閱讀 3,003評論 4 37
  • 姓名:王方河 公司:寧波大發(fā)化纖有限公司 寧波盛和塾《六項精進》235期學員。 【日精進打卡第31天】 【知~學習...
    北轅南轍閱讀 189評論 0 0

友情鏈接更多精彩內容