前言:Android可以引用jar包和aar包,两者的区别:
jar:只包含了class文件与Mainifest.xml文件 ,不包含资源文件,如图片等所有res中的文件。
aar:包含jar包和资源文件。
一:aar的使用
步骤一:aar的生成相对简单,编译完成自动生成aar文件,在Module中的build/outputs/aar/目录下

步骤二:拷贝aar文件到需要引用的工程libs下

步骤三:在app中的build.gradle中添加红框中的内容,点击右上角Sync Now,即可使用aar包中的内容了。

repositories{
flatDir{
dirs'libs'
}
}
implementation(name:'wdreaderlib',ext:'aar')
二:jar包的生成和使用
首先说下我遇到的坑,Android Studio3.1以后,build/intermediates的目录结构发生了改变,原先的bundle目录不见了,jar包生成的路径改为了build/intermediates/packaged-classes/release/,好了,说下jar包生成的步骤。
步骤一:点击File - > new Module ->选择Android Library -> next -> finish创建Mudule
步骤二:在你的Module中的build.gradle插入以下代码
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
//Copy类型
task makeJar(type: Copy) {
//删除原有jar文件
delete 'build/libs/updatelib.jar'
//设置拷贝文件
from('builbuild/intermediates/packaged-classes/release/')
//打进jar包后的文件目录
into('build/libs/')
//将classes.jar放入build/libs/目录下
include('classes.jar')
//重命名
rename ('classes.jar', 'updatelib.jar')
}
makeJar.dependsOn(build)
然后打开Terminal,输入gradlew makeJar

如果你的AndroidStudio 重来没有生成过Jar包第一次会比较慢,成功之后会出现下图所示

在你的build/libs下就生成了jar包,可以把jar包拷贝到需要用到的项目中去,就不一一介绍了。
三:Library中引入aar报错问题解决方法
如图:module2引用module1,module1引用wdreaderlib.aar

需要在ylzykt52drivervice中的build.gradle中添加如下代码,才不会引起报错
repositories {
flatDir {
dirs'libs','../ylzykt52drivelib/libs'
}
}
注意:是在最外层引入,如果ylzykt52drivervice上层还有module,就在上层的build.gradle中引用代码
网友评论