AndroidStudio之如何使用aar

一. 簡介

aar是一個類似于jar的文件格式。但是他們之間是有區(qū)別的矗漾。
jar:僅僅包含class和清單文件,沒有資源文件竹宋。
aar:包含了class文件和資源文件熬苍。說白了就是Android的專屬“jar”

將代碼打包成aar文件稍走,可以在一定程度上加快AndroidStudio的速度。
尤其是將Module打包成aar文件柴底,提升的效果很顯著婿脸。

二. 如何得到aar

1. Module的aar文件

將一個AndroidStudio項目中的Module打包成aar其實很簡單。
在每一個Module的目錄下面都會有這樣一個文件夾:build\outputs\aar柄驻。
這個文件夾下面就放著這個Module對應的aar文件狐树。
一般情況下會有兩個aar文件,一個debug版本鸿脓,一個release版本抑钟。
我們選擇release的就ok。

AAR文件圖示

注意
新建的Module是沒有這個文件夾的野哭。這時味赃,你可以使用 兩種方法 生成這個文件夾

  1. 將整個項目運行一遍,這個文件夾會自動生成
  2. 執(zhí)行命令 ** ./gradlew assembleRelease** 也可以生成這個文件夾

Module中的libs目錄文件會隨著項目的編譯被打包進aar文件中虐拓,但是build.gradle中的引用庫不會打包進aar文件中心俗,這個需要 特別留意。如果你忽略了這個Module的build.gradle中的引用庫蓉驹,很可能引發(fā)ClassNotFoundException異常城榛。

2. 遠程倉庫的aar

在項目里面經(jīng)常會引用一下遠程倉庫的依賴庫。
這時态兴,我們也可以將它以aar的形式引入到項目中狠持。
這個依賴庫的aar其實也很好找。
當你配置好一個依賴庫以后瞻润,點擊 Sync Now 喘垂。
AndroidStudio會自動下載這個庫到C盤(windows)甜刻。你找到這個文件就可以了。
這里我使用的是Everything進行搜索正勒,很方便就找到這個庫的下載文件夾得院。其他操作系統(tǒng)就自行搜索吧,總之找見這個項目的下載文件夾就ok章贞。
這個下載文件夾中包含了這個項目所需要的所有東西:包括aar祥绞、jar等文件。

后面會以一個例子詳細講解這個過程

注:
Everything是一個搜索軟件鸭限,可以瞬間搜索全盤蜕径。
是一個非常實用的軟件。但是很可惜只有windows版本败京。
官網(wǎng)地址:https://www.voidtools.com/

三. 如何使用aar

想要使用aar文件兜喻,需要經(jīng)過以下幾步:

1. 在app的build.gradle中加入以下配置
repositories {    
    flatDir {        
        dirs 'libs'   // aar目錄
      }
}
2. 將aar文件拷貝到app/libs目錄下
3. 在dependencies中加入aar引用
compile(name: 'zbar-release', ext: 'aar')

四. LeakCanary項目示例

因為Module的例子比較簡單,所以選擇遠程代碼庫作為示例赡麦。
這里使用一個經(jīng)常使用的內存檢測項目LeakCanary來做一個示例虹统。
我們通常使用依賴來使用這個庫:

debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3'

Sync Now完成后,我們可以在C盤(windows)找見這個項目文件夾隧甚。
該項目文件夾截圖如下:

LeakCanary項目示例圖

這個文件夾下面就有我們需要的兩個依賴庫:leakcanary-androidleakcanary-android-no-op
點開leakcanary-android文件夾车荔,目錄結構如下(1.3是對應的版本號):

leakcanary-android文件夾

打開最里層的文件夾,你會發(fā)現(xiàn)文件的類型主要有三種:

  1. jar文件:有的項目是以jar文件形式提供
  2. aar文件:有的項目是以aar文件形式提供
  3. pom文件: (Project Object Model)戚扳,實際上就是個xml忧便,是對一些必要信息的說明。這里我們只關心一個節(jié)點信息:<dependencies>:聲明依賴列表
    我們用文本編輯器打開leakcanary-android文件夾下面的pom文件:
  ...
  <dependencies>
    <dependency>
      <!--包組 id帽借,通常是發(fā)布者擁有的域名的反向珠增,以免跟別人的重復-->
      <groupId>com.squareup.leakcanary</groupId>
      <!--包 artifactId,其實就是組以下應該有一個更小的歸類-->
      <artifactId>leakcanary-analyzer</artifactId>
      <!--版本號-->
      <version>1.3</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
...

想更多了解pom文件砍艾,點擊這里

當我們打開leakcanary-android的pom文件蒂教,
我們發(fā)現(xiàn)leakcanary-android依賴于leakcanary-analyzer的1.3版本。

同樣的的我們打開leakcanary-analyzer 的pom文件,
發(fā)現(xiàn)leakcanary-analyzer依賴leakcanary-watcherhaha脆荷。

leakcanary-watcherhaha則沒有依賴任何東西凝垛。

這樣整個leakcanary-android導入本地的東西就是四個:

  1. leakcanary-android
  2. leakcanary-analyzer
  3. leakcanary-watcher
  4. haha

同樣的方式去一層一層解析leakcanary-android-no-op,將所有需要的文件都導入到AndroidStudio中蜓谋。這樣整個LeakCanary就被我們真正實現(xiàn)本地化了梦皮。

兩種結果對比如下:

debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3'
debugCompile(name: 'leakcanary-android-1.3', ext: 'aar')
compile files('libs/leakcanary-analyzer-1.3.jar')
compile files('libs/leakcanary-watcher-1.3.jar')
compile files('libs/haha-1.1.jar')
releaseCompile(name: 'leakcanary-android-no-op-1.3', ext: 'aar')

這樣就將整個LeakCanary項目完全轉換成了本地的依賴。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末桃焕,一起剝皮案震驚了整個濱河市剑肯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌观堂,老刑警劉巖让网,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呀忧,死亡現(xiàn)場離奇詭異,居然都是意外死亡溃睹,警方通過查閱死者的電腦和手機而账,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丸凭,“玉大人,你說我怎么就攤上這事腕铸∠” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵狠裹,是天一觀的道長虽界。 經(jīng)常有香客問我,道長涛菠,這世上最難降的妖魔是什么莉御? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮俗冻,結果婚禮上礁叔,老公的妹妹穿的比我還像新娘。我一直安慰自己迄薄,他們只是感情好琅关,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著讥蔽,像睡著了一般涣易。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上冶伞,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天新症,我揣著相機與錄音,去河邊找鬼响禽。 笑死徒爹,一個胖子當著我的面吹牛,可吹牛的內容都是我干的芋类。 我是一名探鬼主播瀑焦,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼梗肝!你這毒婦竟也來了榛瓮?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤巫击,失蹤者是張志新(化名)和其女友劉穎禀晓,沒想到半個月后精续,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡粹懒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年重付,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凫乖。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡确垫,死狀恐怖,靈堂內的尸體忽然破棺而出帽芽,到底是詐尸還是另有隱情删掀,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布导街,位于F島的核電站披泪,受9級特大地震影響,放射性物質發(fā)生泄漏搬瑰。R本人自食惡果不足惜款票,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望泽论。 院中可真熱鬧艾少,春花似錦、人聲如沸翼悴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抄瓦。三九已至潮瓶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钙姊,已是汗流浹背毯辅。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留煞额,地道東北人思恐。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像膊毁,于是被迫代替她去往敵國和親胀莹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內容

  • 一. 簡介 aar是一個類似于jar的文件格式婚温。但是他們之間是有區(qū)別的描焰。jar:僅僅包含class和清單文件,沒有...
    暮染1閱讀 551評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,114評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)荆秦,斷路器篱竭,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 框架:提供一定能力的小段程序 http://www.cnblogs.com/jincheng-yangchaofa...
    姑娘請別為難小僧閱讀 7,230評論 0 132
  • 從「迷宮的十字路口」到「唐紅的戀歌」 從櫻花飄舞的街道到被楓葉染紅的渡月橋 Time after time 『いつ...
    柯小南先森閱讀 321評論 0 0