环境
文章的运行环境为:
AndroidStudio版本:3.1.4
Gradle版本:3.1.4
前言
在日常开发中我们常常需要引用其他项目的代码。有如下几种方式:
- 通过gradle,maven等远程导入。
- 复制对应的Library到自己的Project下,直接导入Library。
- 用AndroidStudio打开代码,然后打包成jar或者arr,复制到项目的libs文件夹下,导入即可。
方法1适合开源项目,否则需要通过购买GitHub私有项目或者搭建私服来使用。
方法2虽然简单,但是如果多个Project多次使用则非常麻烦。
方法3则是打包一次,直接复制jar或arr就可多次使用。
今天就来简单介绍一些方法2和方法3,和在最新的AndroidStudio和Gradle下如何打包jar和arr。
PS:最新的AndroidStudio和Gradle下虽然打包aar变的简单,但是打包jar变得麻烦许多,生成的路径也变了,这里需要注意。
arr和jar的区别
- jar:仅打包了class文件和配置清单文件,其res等资源文件并没有打包。适合传统的Java或者没有资源文件的Android项目。
- arr:打包了所有的class、res等资源文件。适合Android项目。
导入Library
新建一个Library,复制,编辑所需代码。也可以通过Import Module的方式导入。
如果是直接复制的Library,则需要配置工程的settings.gradle,在include后添加对应的Library,如下:
include ':app', ':mylibrary'
如果没有文件夹上没有出现树状图的小标志,可以Build—>Rebuild Project。
导入如下图:
打包aar
直接看图简单了事。如下:
最新的Gradle可以直接implementation files(‘xxxxxx.aar’)导入aar,而非传统的compile(name: ‘xxxxx’, ext: ‘aar’),无需额外配置代码,非常的方便。
打包jar
复制如下代码到Library下的build.gradle中:
//根据Library名称生存jar包到build目录下
//可根据自己需求更改
task againMakeJar(type: Copy) {
def name = project.name //Library名称
delete 'libs/' + name + '.jar' //删除之前的旧jar包
from('build/intermediates/packaged-classes/release/') //从这个目录下取出默认jar包
into('libs/') //将jar包输出到指定目录下
include('classes.jar')
rename('classes.jar', name + '.jar') //自定义jar包的名字
}
againMakeJar.dependsOn(build)
2022.12.09更新
最新的Android33版本中jar包所在目录在build/intermediates/compile_library_classes_jar/release/
//从这个目录下取出默认jar包,不同版本目录均不一样,根据自己项目在build中找classes.jar所在目录
from('build/intermediates/compile_library_classes_jar/release/')
导入如下图:
复制生成的jar包到制定项目的libs目录下,然后右键选择Add as Lisbrary,即可成功导入。
参考
Android studio 将 Module 打包成 Jar 包
android studio library生成jar包和aar的方法总结