Android
aar
1. 简述
Gradle的一些基本依赖配置方式如下:
-
compile fileTree(dir:'xxx',include:['*.jar','*.xxx'])
: 将某个目录下所有符合扩展名的文件作为依赖 -
compile 'com.xx.xx:ProjectName:Version'
:配置Maven库为依赖 -
compile project(':otherModule')
:配置另一个module作为本Module的依赖,被依赖的Module必须被导入到当前工程中 -
compile file('xxx.jar')
: 配置某个jar包作为依赖
2. AAR文件简介
假如我们希望提供一个带有资源文件的第三方库给别人使用,总不能直接把源代码给别人,但是我们知道eclipse打包的时候不能包含res的资源文件,于是Android在发布Android studio的时候就发布了一种独有的格式AAR,专门用于打包UI组件库。与jar相比其多了一些UI组件用到的属性、图片等一系列文件,它的好处在于你不需要再多创建一个Library Module,只需引用这个AAR文件即可,Android Sudio会自动把AAR包里的文件跟你的项目融合。
要输出aar文件,必须将Module配置为library,在gradle文件中如下:
- 要输出 aar:
apply plugin:'com.android.library'
- 要输出 apk:
apply plugin:'com.android.application'
3. 打包生成 aar
将 Module 配置为 library 后,构建输出一个 aar 文件,根据渠道和 BuildType 的不同,在相应的目录下可以找到。比如对 BuildType 为 debug 的配置,输出为:[ModuleName]/build/outputs/aar/[ModuleName]-debug.aar
。一份 aar 文件其实就是一份 zip 包,和 jar 不同的是,它将一些资源文件、第三方库文件、so 文件等等都打包在内,而代码文件编译后压缩在classes.jar
中。
4. 使用配置依赖的方式引用
首先需要将 aar 文件放入引用Module的libs目录下,和一般的jar文件类似;
-
然后在gradle配置文件中把libs 目录放入依赖:
repositories{ flatDir{ dirs 'libs' } }
在gradle文件中使用依赖的方式引用aar,这一句依赖即可关联完毕:
compile(name:'xxx',ext:'aar')
重新构建一下工程,在Module的
build/intermediates/exploded-aar
目录下,既可以看到导入的aar生成的临时文件。
参考文献: