一、概述
这篇文章主要讲解aar的生成、使用和打包。
二、aar的生成与使用
1、aar的生成,进入android studio点击上方的build,执行第2步(整个工程)或者第3步(单个工程)。
2、 aar的使用
这里主要讲解aar在library 模块中的使用
1. 首先在app中的bulid.gradle中加入如下:
//aar资源路径
repositories {
flatDir {
dirs 'libs', '../aars', '../模块名/libs'
}
}
在app的build.gradle中也要加入文件的指向,可加入各个模块,其中用逗号隔开,模块名就是你的modlename。
2.模块的正确引入:
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile(name: 'aar名字', ext: 'aar')
}
3.aar的依赖性
模块A,B,C
如果B依赖C并且是远程依赖,那么A依赖B的时候,C对于A是不可见的,所以在aar打包的过程中,如果子模块引用了aar,就必须手动把引用的aar添加到下面的build_aar.gradle文件中。
如果我们需要A中使用C,那么可以在A中依赖C。
二、aar打包
1、 先在工程目录下新建一个build_aar.gradle文件,然后在app的build.gradle中加入如下:
apply from: '../build_aar.gradle'
2、 修该aar的生成名称,以便区分aar
//设置输出aar文件名称
libraryVariants.all { variant ->
variant.outputs.all {
outputFileName = moduleName + rootProject.PreVersion + '.aar'
}
}
moduleName指的是模块名称,PreVersion指的是类型时间戳一样的唯一标示,如-20180116134700,定义在根目录的build_precfg.gradle文件中,String preVersion = “-20180116134700”(模块和组件所用到的版本),使用时需要在工程的build.gradle中加入apply from: ‘build_precfg.gradle’。
3、 迁移子module下所有aar到主工程的aar目录,这个目录在aar的使用中已经引入到主工程中。
tasks.create(name: 'aar') << {
rootProject
.getSubprojects()
.each {
def buildPath = it.getBuildDir().absolutePath
copy {
from(buildPath + '/outputs/aar/') {
include '*.aar'
}
//拷贝aar文件路径到父级目录MXU4_Android/aars下
into rootProject.aarsDir
}
}
}
4、 只需要将aar目录下的aar引入到build_aar.gradle中就能实现aar的打包了,如下:
dependencies {
compile(name: 'CompBase' + PreVersion, ext: 'aar')
}
5.最后执行gradle aR命令就可打包