場景:
隨著業(yè)務(wù)的增長,app程序越來越龐大风科,引用的library也越來越多。但是有些共同引用的庫在每個module版本的設(shè)置不同,每個module設(shè)置的minSdkVersion考廉、targetSdkVersion等也不盡相同秘豹。假如你使用butterknife或dagger2携御,需要在每個module配置annotationProcessor,如annotationProcessor‘com.google.dagger:dagger-compiler:2.10‘跟annotationProcessor‘com.jakewharton:butterknife-compiler:8.6.0‘既绕。如果發(fā)現(xiàn)該庫有更新啄刹,則需遍歷每個module一個個修改,這樣的工作明顯是浪費時間的凄贩。但是如何解決這個問題呢誓军?也許有人說只要設(shè)置版本為+自動更新,其實這是不可取的疲扎。萬一更新的庫不兼容舊版本昵时,你還不是得花費大力氣去查找問題,再去改回來椒丧。接下來我將介紹一個簡便的方法來統(tǒng)一各個庫版本問題壹甥。
首先,在工程根目錄下創(chuàng)建config.gradle文件壶熏,目錄如圖:
內(nèi)容如下:
是不是很熟悉句柠?是不是已經(jīng)知道接下來我們要干什么了?
在使用該配置前,還需要配置一定的信息溯职。在根目錄的build.gradle設(shè)置apply from:"config.gradle",意思是所有的子項目或者所有的modules都可以從這個配置文件中讀取內(nèi)容精盅。結(jié)果如圖:
如何引用config.gradle呢?很簡單谜酒,第一步:在module的build.gradle定義路徑:def config=rootProject.ext 意思是定義config的路徑為rootProject.ext叹俏,即config.gradle文件下的ext。如圖:
引用內(nèi)容時直接可以使用config.**,如上圖僻族,compileSdkVersion等都是使用該方法她肯。當(dāng)然,如果不用def config = rootProject.ext的話也是可以的鹰贵。路徑將變成rootProject.ext.** ;
library的使用也是大同小異晴氨,如圖:
筆者使用的是Android studio 3.0,所以沒有使用compile碉输,api籽前、implementation、compile的差別可以自行查找敷钾。注意枝哄,使用&{config.**}用的是雙引號,不是單引號