Android Gradle 批量引用aar

在項目的發(fā)展過程中膘螟,可能需要不斷地引入新的第三方包笙僚,通常都是aar的形式。當項目不斷地擴展灵再,aar越來越多肋层,會發(fā)現維護aar也是一件麻煩的事。

通常引用第三方aar會有兩種形式翎迁,一種是遠程訪問栋猖,一種是本地訪問。

Demo工程地址汪榔,通過代碼可以更容易理解蒲拉。

一是通過遠程訪問maven庫地址的形式。需要做兩件事:

第一步在工程的build.gradle中加入庫地址

buildscript {

????repositories {

????????maven {

? ??????????//谷歌粑粑官方的地址是'https://maven.google.com/',一般無法訪問痴腌。這里用阿里家的梯子雌团。

????????????url 'https://maven.aliyun.com/repository/google'

? ? ????????name 'google'? ?

? ? ? ? }

}

allprojects {

????repositories {

????????maven {

????????????url 'https://maven.aliyun.com/repository/google'

? ? ? ? ? ? name 'Google'

? ? ? ? }

????}

}

第二步在項目的gradle中進行配置

compile + 空格 + 插件名。

舉例:compile?'com.android.support:support-v4:26.0.0'

Notice:

此處有個小規(guī)范士聪,如果是地址形式直接引用锦援,使用'',也就是英文半角單引號剥悟;如果是中間插入版本等變量信息灵寺,使用""曼库,英文半角雙引號。


二是引用本地aar包略板。也是需要做兩件事:

第一步在項目gradle內加入引用路徑

repositories {

????flatDir {

? ? ? ? //默認aar本地存放路徑在libs下

????????dirs'libs'

????}

}

第二步在項目gradle中進行配置

compile(name:? 'aar的包名'毁枯, ext: 'aar')

比如把webp的aar保存在本地,可以通過

compile(name : 'webp-1.0.0', ext: 'aar')的形式配置叮称。


隨著項目的發(fā)展种玛,可能引用的google包越來越多,比如appcompat颅拦,desigin蒂誉,percent等等遠程包。也可能是本地集成第三方項目的aar距帅。如果在同一個gradle中維護右锨,一會兒加個本地的,一會兒加個遠程的碌秸,還要進行版本控制绍移,就會看著眼暈。那么在此介紹兩種“集中式”引用aar的方法讥电。

一是遠程aar的集中管理

本地引用的第一步還是不變的蹂窖。

第二步在工程目錄下,新加一個aar包引用目錄恩敌。

創(chuàng)建一個目錄文件瞬测,假設取名aarOnline.gradle。文件內容如下

ext {

????dependVersion = [??

? ? ? ? //引用的SDK信息纠炮,需要更新時月趟,直接修改此處就可以

????????androidSupportSdkVersion:'25.2.0'

????]

? ? supportLibrary? =? [

? ??????support:"com.android.support:support-v4:$dependVersion.androidSupportSdkVersion",

????????//recycleview

????????recycleview:"com.android.support:recyclerview-v7:$dependVersion.androidSupportSdkVersion",

????????//appcompat

????????appcompat:"com.android.support:appcompat-v7:$dependVersion.androidSupportSdkVersion",

????]

? ? //轉換成引用對象

? ??supportLibs = supportDeps.values()

}

這樣,如果需要更新引用的support信息恢口,只需要修改androidSupportSdkVersion對應的版本信息即可

第三步在工程的build.gradle中加入引用

在工程的build.gradle(也就是配置引用庫地址的文件)的頭部加入引用文件孝宗。

applyfrom: '引用文件名'

舉例:applyfrom: 'aarOnline.gradle'

第四步修改項目build.gradle中的dependencies

將之前的complie '項目名'的引用刪除,修改為:

compile rootProject.ext.引用包組

舉例:compile rootProject.ext.supportLibs 即可耕肩。

至此因妇,遠程引用的集中式處理介紹完畢。這樣做有三個好處猿诸,一是代碼整潔婚被,二是版本控制方便,三是增刪改查方便梳虽。


二是本地aar的集中管理

本地引用的第一步還是不變的摔寨。

第二步在工程目錄下,創(chuàng)建一個編譯腳本

腳本的作用是批量處理aar文件怖辆。舉例創(chuàng)建一個aarNative.gradle文件是复。文件內容如下:

def aarFolderName ='libs'

repositories {

????flatDir {

????????dirs aarFolderName// aar目錄

? ? }

}

dependencies {

????def aarNativeBat= {

? ? ? ? //查找目錄下所有.aar結尾的文件

????????fileTree(dir: aarFolderName,include:'*.aar').each { File file ->

? ? ? ? ? ? //獲取文件名

? ? ? ? ? ?def name = file.name.lastIndexOf('.').with {

?????????????????it != -1 ? file.name[0..<it] : file.name }

? ? ? ? ? ?compile(name: name,ext:'aar')

? ? ? ? ? }

????}

? ? //執(zhí)行腳本

????aarNativeBat()

}

第三步在項目的build.gradle中加入引用

只需要在文件頭部加入引用文件即可删顶。

applyfrom: '../引用文件名'

舉例:applyfrom: '../aarNative.gradle'

Notice:需要注意引用路徑。如果腳本在項目目錄下淑廊,使用“applyfrom: '引用文件名'”即可逗余。具體情況具體處理。

至此季惩,本地集中引用aar介紹完畢录粱。這樣做的一大好處就是,直接拷貝aar文件即可画拾,不比再擔心版本不一致啥繁,版本寫錯的問題,因為不需要維護每個aar了青抛。

Demo工程地址旗闽,通過代碼更容易理解。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末蜜另,一起剝皮案震驚了整個濱河市适室,隨后出現的幾起案子,更是在濱河造成了極大的恐慌举瑰,老刑警劉巖捣辆,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異此迅,居然都是意外死亡汽畴,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門耸序,熙熙樓的掌柜王于貴愁眉苦臉地迎上來整袁,“玉大人,你說我怎么就攤上這事佑吝。” “怎么了绳匀?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵芋忿,是天一觀的道長。 經常有香客問我疾棵,道長戈钢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任是尔,我火速辦了婚禮殉了,結果婚禮上,老公的妹妹穿的比我還像新娘拟枚。我一直安慰自己薪铜,他們只是感情好众弓,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著隔箍,像睡著了一般谓娃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜒滩,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天滨达,我揣著相機與錄音,去河邊找鬼俯艰。 笑死捡遍,一個胖子當著我的面吹牛,可吹牛的內容都是我干的竹握。 我是一名探鬼主播画株,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼涩搓!你這毒婦竟也來了污秆?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤昧甘,失蹤者是張志新(化名)和其女友劉穎良拼,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體充边,經...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡庸推,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了浇冰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贬媒。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖肘习,靈堂內的尸體忽然破棺而出际乘,到底是詐尸還是另有隱情,我是刑警寧澤漂佩,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布脖含,位于F島的核電站,受9級特大地震影響投蝉,放射性物質發(fā)生泄漏养葵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一瘩缆、第九天 我趴在偏房一處隱蔽的房頂上張望关拒。 院中可真熱鬧,春花似錦、人聲如沸着绊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畔柔。三九已至氯夷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間靶擦,已是汗流浹背腮考。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留玄捕,地道東北人踩蔚。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像枚粘,于是被迫代替她去往敵國和親馅闽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理馍迄,服務發(fā)現福也,斷路器,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 說明 本文主要介紹和Gradle關系密切攀圈、相對不容易理解的配置暴凑,偏重概念介紹。部分內容是Android特有的(例如...
    jzj1993閱讀 15,631評論 1 62
  • Gradle配置最佳實踐 本文會不定期更新赘来,推薦watch下項目现喳。如果喜歡請star,如果覺得有紕漏請?zhí)峤籭ssu...
    Solang閱讀 1,635評論 0 4
  • 1犬辰、gradle的簡單介紹 Gradle是可以用于Android開發(fā)的新一代的Build System嗦篱,也是And...
    非著名程序員閱讀 2,543評論 0 4
  • 用法一:常量 Publicenum constant{ RED,BLUE,YELLOW,GREEN,GREY } ...
    小鹿啊小鹿閱讀 246評論 0 0