赞
踩
在Android项目中经常会需要导入一些第三方的jar文件或者aar文件, 同时我们也会有把我们自己项目编译成jar或者aar文件提供给其他人使用。在Android studio(后文简写as)不同2.0和3.0版本中生成的文件存储路径也有些不同。做一个记录,以防再入坑。
1.首先简单介绍aar和jar文件:
jar:只包含class文件与清单文件,不包含资源文件,如图片等所有res中的文件。
aar:包含所有资源,class以及res资源文件全部包含。
如果你是一个简单的类库那么使用生成的jar文件即可(虽然也可以生成aar文件,但是没有必要);如果你是一个UI库,包含一些自己写的控件布局文件以及字体的资源文件那么就只能使用aar文件。
注意:
1.要想输出为.aar和.jar需要修改该mudule的配置文件build.gradle为library
apply plugin: 'com.android.library'
如果是编译apk的mudule配置为
apply plugin: 'com.android.application'
2.如果是把普通的工程转化成依赖包,不能配置 applicationId 字段
2.依赖Library文件
如上配置时,编译整个项目,由于配置了 implementation project(‘:mytestlibrary’),在主项目中会依赖该Library,可以使用其中的代码。
(在as2.0中只需要将 implementation 改成 compile)
3.生成.jar文件并导入到主项目
在as右边的gradle图标,点击找到上图library的build目录下的assemable命令,双击,编译该项目,包括debug和release两个版本的classes.jar文件。
生成存放的目录:
(as3.0版本 在新增的packaged-classes下,起初一直疑虑不能生成bundles目录,后来查阅资料发现路径发生变化)
(as2.0版本 在bundles目录下)
把需要的.jar文件copy到主项目的libs目录下,然后将项目的配置文件做一下修改
implementation fileTree(dir: 'libs', include: ['*.jar'])
//implementation project(':mytestlibrary') 不再应用这个library名,而是依赖对应的classes.jar文件
//不能两个都依赖,因为其实是同一份代码的不同形式,重复依赖会提示编译错误。
implementation files('libs/classes.jar')
3.生成.aar文件并导入到主项目
如果项目包含资源文件被使用,需要导出aar文件才能正常被依赖使用。在上面的生成jar文件的时候其实已经生成了aar文件,只是存放的路径不同 (如下图在as2.0和3.0中 aar文件的存储路径没有修改,都在build -> outputs->aar目录下)。
同样把aar文件copy到项目的libs目录下,因为我用的是同一个library生成的jar和aar,所以需要删除前面的jar文件。
主项目的配置文件也需要修改一下:
//implementation project(':mytestlibrary')
//implementation files('libs/classes.jar') 依赖aar包
implementation(name:'mytestlibrary-debug', ext: 'aar')
而且需要加上下面的配置。
repositories {
flatDir {
dirs 'libs'
}
}
这样就可以使用aar包中的代码了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。