AndroidStudio 如何使用aar詳解
一. 簡(jiǎn)介
aar 是一個(gè)類似于 jar 的文件格式。但是他們之間是有區(qū)別的。
jar :僅僅包含class和清單文件,沒有資源文件。
aar :包含了class文件和資源文件。說白了就是Android的專屬“jar”
將代碼打包成aar文件,可以在一定程度上加快 AndroidStudio 的速度。
尤其是將 Module 打包成 aar 文件,提升的效果很顯著。
二. 如何得到aar
1. Module的aar文件
將一個(gè)AndroidStudio項(xiàng)目中的 Module 打包成 aar 其實(shí)很簡(jiǎn)單。
在每一個(gè) Module 的目錄下面都會(huì)有這樣一個(gè)文件夾: build\outputs\aar 。
這個(gè)文件夾下面就放著這個(gè) Module 對(duì)應(yīng)的 aar 文件。
一般情況下會(huì)有兩個(gè) aar 文件,一個(gè) debug 版本,一個(gè) release 版本。
我們選擇 release 的就ok。
AAR文件圖示
注意:
新建的Module是沒有這個(gè)文件夾的。這時(shí),你可以使用 兩種方法 生成這個(gè)文件夾
將整個(gè)項(xiàng)目運(yùn)行一遍,這個(gè)文件夾會(huì)自動(dòng)生成
執(zhí)行命令 ./gradlew assembleRelease 也可以生成這個(gè)文件夾
2. 遠(yuǎn)程倉庫的aar
在項(xiàng)目里面經(jīng)常會(huì)引用一下遠(yuǎn)程倉庫的依賴庫。
這時(shí),我們也可以將它以 aar 的形式引入到項(xiàng)目中。
這個(gè)依賴庫的aar其實(shí)也很好找。
當(dāng)你配置好一個(gè)依賴庫以后,點(diǎn)擊 Sync Now 。
AndroidStudio會(huì)自動(dòng)下載這個(gè)庫到C盤(windows)。你找到這個(gè)文件就可以了。
這里我使用的是 Everything 進(jìn)行搜索,很方便就找到這個(gè)庫的下載文件夾。其他操作系統(tǒng)就自行搜索吧,總之找見這個(gè)項(xiàng)目的下載文件夾就ok。
這個(gè)下載文件夾中包含了這個(gè)項(xiàng)目所需要的所有東西:包括 aar 、 jar 等文件。
后面會(huì)以一個(gè)例子詳細(xì)講解這個(gè)過程
注:
Everything是一個(gè)搜索軟件,可以瞬間搜索全盤。
是一個(gè)非常實(shí)用的軟件。但是很可惜只有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項(xiàng)目示例
因?yàn)镸odule的例子比較簡(jiǎn)單,所以選擇遠(yuǎn)程代碼庫作為示例。
這里使用一個(gè)經(jīng)常使用的內(nèi)存檢測(cè)項(xiàng)目 LeakCanary 來做一個(gè)示例。
我們通常使用依賴來使用這個(gè)庫:
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3'
當(dāng) Sync Now 完成后,我們可以在C盤(windows)找見這個(gè)項(xiàng)目文件夾。
該項(xiàng)目文件夾截圖如下:
LeakCanary項(xiàng)目示例圖
這個(gè)文件夾下面就有我們需要的兩個(gè)依賴庫: leakcanary-android 和 leakcanary-android-no-op
點(diǎn)開 leakcanary-android文件夾 ,目錄結(jié)構(gòu)如下( 1.3是對(duì)應(yīng)的版本號(hào) ):
leakcanary-android文件夾
打開最里層的文件夾,你會(huì)發(fā)現(xiàn)文件的類型主要有三種:
- jar文件 :有的項(xiàng)目是以jar文件形式提供
- aar文件 :有的項(xiàng)目是以aar文件形式提供
- pom文件 : (Project Object Model),實(shí)際上就是個(gè)xml,是對(duì)一些必要信息的說明。這里我們只關(guān)心一個(gè)節(jié)點(diǎn)信息: <dependencies>:聲明依賴列表
我們用文本編輯器打開 leakcanary-android文件夾 下面的pom文件:
... <dependencies> <dependency> <!--包組 id,通常是發(fā)布者擁有的域名的反向,以免跟別人的重復(fù)--> <groupId>com.squareup.leakcanary</groupId> <!--包 artifactId,其實(shí)就是組以下應(yīng)該有一個(gè)更小的歸類--> <artifactId>leakcanary-analyzer</artifactId> <!--版本號(hào)--> <version>1.3</version> <scope>compile</scope> </dependency> </dependencies> ...
想更多了解pom文件, 點(diǎn)擊這里
當(dāng)我們打開 leakcanary-android 的pom文件,
我們發(fā)現(xiàn) leakcanary-android 依賴于 leakcanary-analyzer 的1.3版本。
同樣的的我們打開 leakcanary-analyzer 的pom文件,
發(fā)現(xiàn) leakcanary-analyzer 依賴 leakcanary-watcher 和 haha 。
leakcanary-watcher 和 haha 則沒有依賴任何東西。
這樣整個(gè)leakcanary-android導(dǎo)入本地的東西就是四個(gè):
- leakcanary-android
- leakcanary-analyzer
- leakcanary-watcher
- haha
同樣的方式去一層一層解析 leakcanary-android-no-op ,將所有需要的文件都導(dǎo)入到AndroidStudio中。這樣整個(gè) LeakCanary 就被我們真正實(shí)現(xiàn)本地化了。
兩種結(jié)果對(duì)比如下:
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')
這樣就將整個(gè)LeakCanary項(xiàng)目完全轉(zhuǎn)換成了本地的依賴。
http://www.jianshu.com/p/59efa895589e
相關(guān)文章
Android如何調(diào)整線程調(diào)用棧大小
這篇文章主要介紹了Android如何調(diào)整線程調(diào)用棧大小,幫助大家更好的進(jìn)行Android開發(fā),完善自身程序,感興趣的朋友可以了解下2020-10-10Android取消EditText自動(dòng)獲取焦點(diǎn)默認(rèn)行為
在項(xiàng)目中,一進(jìn)入一個(gè)頁面, EditText默認(rèn)就會(huì)自動(dòng)獲取焦點(diǎn),很是郁悶,Android 如何讓EditText不自動(dòng)獲取焦點(diǎn)?于是搜集整理一番,曬出來和大家分享,希望對(duì)你們有所幫助2012-12-12Android 超詳細(xì)SplashScreen入門教程
Android 12正式版即將發(fā)布,有一個(gè)非常顯著的視覺變化就是,Android 12強(qiáng)制給所有的App都增加了SplashScreen的功能。是的,即使你什么都不做,只要你的App安裝到了Android 12手機(jī)上,都會(huì)自動(dòng)擁有這個(gè)新功能2022-03-03anroid開發(fā)教程之spinner下拉列表的使用示例
這篇文章主要介紹了anroid的spinner下拉列表的使用示例,需要的朋友可以參考下2014-04-04Android定時(shí)器實(shí)現(xiàn)的幾種方式整理及removeCallbacks失效問題解決
本文為大家詳細(xì)介紹下Android 定時(shí)器實(shí)現(xiàn)的幾種方式:Handler + Runnable、Timer的方式、Handle與線程的sleep(long )方法和removeCallbacks失效問題如何解決2013-06-06Android組合控件實(shí)現(xiàn)功能強(qiáng)大的自定義控件
這篇文章主要介紹了Android組合控件實(shí)現(xiàn)功能強(qiáng)大的自定義控件的相關(guān)資料,需要的朋友可以參考下2016-05-05