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配置模板

為了提高項(xiàng)目開發(fā)效率,在實(shí)際項(xiàng)目開發(fā)過程中往往會(huì)引入一些開源框架,還有項(xiàng)目中使用的各種Module锣吼,當(dāng)引入Module過多時(shí)最好提供一種統(tǒng)一的方式去管理版本號(hào)扫夜,如:compileSdkVersion弄贿、buildToolsVersion茫打、minSdkVersion等混萝。

我在網(wǎng)上找了很多資料嘹吨,網(wǎng)上提供了好幾種方案搬味,寫法也有好幾種,不過最終原理其實(shí)都是差不多的躺苦,主要原理分為以下幾步:

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

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

情況一:文件放在項(xiàng)目的 app目錄下匹厘,如下圖:appConfig.png
appConfig.png
情況二:文件放在項(xiàng)目的 項(xiàng)目根目錄下嘀趟,如下圖:config.png
config.png

二. 找到配置文件config.gradle

情況一:文件放在項(xiàng)目的 app目錄下

一般來說,放在 app目錄下config.gradle配置信息愈诚,只能在主項(xiàng)目中引用她按,引用方式:
在app目錄下的build.gradle文件開頭,加上apply from: 'config.gradle'炕柔。如下圖


a.png
情況二:文件放在項(xiàng)目的 app目錄下

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


b.png

三. 引用配置信息里面的內(nèi)容

1. config.gradle應(yīng)該怎么寫

網(wǎng)上有好幾種寫法欢嘿,下面是我個(gè)人認(rèn)為比較方便的方案

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

    ApplicationId = "com.wanji.shop" //包名
    MinSdkVersion = 19    // 最低支持Android版本
    TargetSdkVersion = 26   // 目標(biāo)版本
    VersionCode = 1         //版本號(hào)
    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 = [
            //項(xiàng)目基本的(每個(gè)項(xiàng)目需要的)
            "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怎么引用

①: 對(duì)于ext下的變量衰琐,網(wǎng)上的寫法:rootProject.ext.CompileSdkVersion或者ext.CompileSdkVersion也糊,其實(shí)直接引用變量名CompileSdkVersion就可以了。
②:對(duì)于:roots數(shù)組羡宙,直接roots.appcompatV7這樣引用就可以了狸剃。總體寫法如下:

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
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末狗热,一起剝皮案震驚了整個(gè)濱河市钞馁,隨后出現(xiàn)的幾起案子轧抗,更是在濱河造成了極大的恐慌碉怔,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件址儒,死亡現(xiàn)場(chǎng)離奇詭異僻焚,居然都是意外死亡允悦,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門虑啤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來隙弛,“玉大人,你說我怎么就攤上這事狞山∪疲” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵萍启,是天一觀的道長总珠。 經(jīng)常有香客問我,道長勘纯,這世上最難降的妖魔是什么局服? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮驳遵,結(jié)果婚禮上淫奔,老公的妹妹穿的比我還像新娘。我一直安慰自己堤结,他們只是感情好唆迁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著竞穷,像睡著了一般唐责。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瘾带,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天鼠哥,我揣著相機(jī)與錄音,去河邊找鬼。 笑死肴盏,一個(gè)胖子當(dāng)著我的面吹牛科盛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播菜皂,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼厉萝!你這毒婦竟也來了恍飘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤谴垫,失蹤者是張志新(化名)和其女友劉穎章母,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翩剪,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乳怎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了前弯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚪缀。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖恕出,靈堂內(nèi)的尸體忽然破棺而出询枚,到底是詐尸還是另有隱情,我是刑警寧澤浙巫,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布金蜀,位于F島的核電站,受9級(jí)特大地震影響的畴,放射性物質(zhì)發(fā)生泄漏渊抄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一丧裁、第九天 我趴在偏房一處隱蔽的房頂上張望护桦。 院中可真熱鬧,春花似錦渣慕、人聲如沸嘶炭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽眨猎。三九已至,卻和暖如春强经,著一層夾襖步出監(jiān)牢的瞬間睡陪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留兰迫,地道東北人信殊。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像汁果,于是被迫代替她去往敵國和親涡拘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理据德,服務(wù)發(fā)現(xiàn)鳄乏,斷路器,智...
    卡卡羅2017閱讀 134,661評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,167評(píng)論 25 707
  • 用兩張圖告訴你棘利,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料橱野? 從這篇文章中你...
    hw1212閱讀 12,730評(píng)論 2 59
  • Android組件化項(xiàng)目地址:Android組件化項(xiàng)目AndroidModulePattern Android組件...
    半灬邊灬天閱讀 2,921評(píng)論 4 37
  • 姓名:王方河 公司:寧波大發(fā)化纖有限公司 寧波盛和塾《六項(xiàng)精進(jìn)》235期學(xué)員。 【日精進(jìn)打卡第31天】 【知~學(xué)習(xí)...
    北轅南轍閱讀 127評(píng)論 0 0