Androidstudio编译jar和aar

在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文件

  • 该项目是我写的一个demo ,主项目为MyTestDemo , mytestlibrary是一个依赖库mudule.

这里写图片描述

  • MytestDemo中的gradle配置文件(as3.0版本)

这里写图片描述

如上配置时,编译整个项目,由于配置了 implementation project(‘:mytestlibrary’),在主项目中会依赖该Library,可以使用其中的代码。

(在as2.0中只需要将 implementation 改成 compile)

3.生成.jar文件并导入到主项目

  • 编译出.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包中的代码了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值