Android Studio 打包及引用 aar
1.簡述:
Android 項(xiàng)目的開發(fā)中句旱,我們經(jīng)常會遇到工程绘雁、jar 包等等之間相互引用的方式歌殃。一般我們通過在 gradle 文件中配置依賴來解決斑芜,比如:
Gradle 的一些基本依賴配置方式如下:
- compile fileTree(dir: 'xxx', include: ['.jar', ".xxx"]):將某個(gè)目錄下所有符合擴(kuò)展名的文件作為依賴;
- compile 'com.xx.xx:ProjectName:Version'
:配置Maven` 庫作為依賴精绎;在 Maven 庫中心 可以搜索自己想用的庫進(jìn)行依賴速缨; - compile project(':AnotherModule'):配置另一個(gè) Module 作為本 Module 的依賴,被依賴的 Module 必須被導(dǎo)入到當(dāng)前工程中代乃;
- compile files('xxx.jar'):配置某個(gè) jar 包作為依賴旬牲。
2.aar文件生成
要輸出 aar 文件,必須將 Module 配置為 library搁吓,在 gradle 文件中如下:
- 輸出 aar : apply plugin: 'com.android.library'原茅;
- 輸出 apk :apply plugin: 'com.android.application'
將 Module 配置為 library 后,構(gòu)建輸出一個(gè) aar 文件堕仔,根據(jù)渠道和 BuildType 的不同擂橘,在相應(yīng)的目錄下可以找到。比如對 BuildType 為 debug 的配置摩骨,輸出為:[ModuleName]/build/outputs/aar/[ModuleName]-debug.aar通贞。一份 aar 文件其實(shí)就是一份 zip 包,和 jar 不同的是恼五,它將一些資源文件昌罩、第三方庫文件、so 文件等等都打包在內(nèi)灾馒,而代碼文件編譯后壓縮在在 classes.jar 中茎用。比如:
3.aar的引用
-
方法一:
這種方式比較簡單,打開 Project Structure睬罗,添加一個(gè)新 Module轨功,然后選擇 Import *.JAR or *.AAR Package 的方式導(dǎo)入:
image
導(dǎo)入后,在你的工程下面容达,會生成一個(gè)文件夾古涧,里面是 aar 文件以及 Android Studio 的配置文件。
image
缺點(diǎn):
被依賴的 aar 無法 F3 跟進(jìn)去董饰,無法看到資源文件內(nèi)容以及目錄層級等等缺陷
-
方法二:配置依賴的方式引用
compile(name: 'xxx', ext: 'aar')
和一般的 jar 文件類似蒿褂,首先需要將 aar 文件放入引用 Module 的 libs 目錄下,然后在 gradle 配置文件中把 libs 目錄加入依賴:
android {
... //以下為添加內(nèi)容
repositories {
flatDir {
dirs 'libs' ////就是你放aar的目錄地址
}
}
...//以上為添加內(nèi)容
}
在Module的build.gradle里面添加依賴(dependencies )
注意:SMSSDK-<verison>卒暂,是隨著版本變化的啄栓;eg:3.0.0的版本則需要改成:compile name:’SMSSDK-3.0.0′,ext:’aar’
dependencies {
....//你的其他依賴
compile name:'SMSSDK-<version>',ext:'aar'
compile name:'SMSSDKGUI-<version>',ext:'aar'
}
最終,你的build.gradle看起來應(yīng)該像這樣:
[圖片上傳失敗...(image-870506-1511873576851)]
依賴即可關(guān)聯(lián)完畢也祠。構(gòu)建一下工程昙楚,在 Module 的 build/intermediates/exploded-aar 目錄下,可以看到有一些臨時(shí)文件生成:
看起來完全是引用 aar 的解壓版本诈嘿。Android Studio 安裝反編譯插件后堪旧,可以通過 F3 跟進(jìn)到 class 文件里面削葱,如果你有被依賴 Module 的源代碼的話,還可以 Attach Source 關(guān)聯(lián)源代碼查看淳梦。另外析砸,可以很方便的查看 aar 中的資源文件。