先看下什么是jar文件,什么是aar文件
.jar:只包含了class文件与清单文件,不包含资源文件(如图片等所有res中的文件)。
.aar:包含所有文件(即class文件,清单文件,res资源文件等)。
在开发android程序时,除了主module之外,一般还会有一个或多个依赖module(依赖项目),依赖项目通常和应用项目类似,你可以使用相同的任务来构建和测试依赖项目,不同之处是应用项目将生成一个可以被安装和运行在Android设备上的apk文件,依赖项目则生成一个aar文件,该文件可以被Android应用项目(主项目)用作依赖库。
依赖库
这种方式比较常见,一般我们也都是这么用的
这里简单说一下,一个module作为依赖库之后相关文件的一些变化(虽然我们一般都是用可视化界面操作的)
Andorid应用插件是
apply plugin: 'com.android.application'
而Android依赖库插件是
apply plugin: 'com.android.library'
所以module作为依赖库,它的build.gradle中的插件必然是apply plugin: 'com.android.library'
settings.gradle文件也会发生变化
include ':app', ':mylibrary'
此外,应用module的dependencies代码块也会发生变化(看最后一行)
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
implementation project(':mylibrary')
}
aar文件
如果你创建了一个依赖库,并且想在不同的Android应用中复用(如果你们公司有多个app),那么你可以创建一个.aar文件,将一个依赖库打包为一个aar文件是非常方便的。
双击assembleRelease这个任务就可以了,任务执行完之后,会生成一个arr文件
我们看下怎么样引入aar文件
新建一个项目,将.arr文件放入app下面的libs文件夹下
在顶层build.gradle中
allprojects {
repositories {
google()
jcenter()
flatDir{
dirs 'libs'
}
}
}
在app下的build.gradle中
dependencies {
implementation (name:'mylibrary-release',ext:'aar')
}
//告诉Gradle查找名字是mylibrary-release并且扩展名是.aar的依赖库
验证测试:
可以正确使用aar文件中的方法