Android将library打包成jar包和aar包

前段时间大佬说,希望我们将项目中使用的library库打包出来,方便公司内部的同事调用,还有可以提供给客户使用。大佬发话了,赶紧动起来。

先声明一下,我使用的AndroidStudio版本是3.0.1,不同版本下,编译生成的jar包,保存的路径可能都不一样。

[jar包和aar包的区别](https://blog.csdn.net/ljx1400052550/article/details/80111051)

如何将library打包成jar包

(1)我们先来看一下library目录下的build.gradle文件的内容,确保是library。
Android将library打包成jar包和aar包_第1张图片
QQ截图20180924111838.png

(2)接着我们就开始在build.gradle文件,配置相关代码。
Android将library打包成jar包和aar包_第2张图片
QQ截图20180924155156.png

上面图片的第三行代码,我们使用到了build/intermediates/bundles/release/目录下的classes.jar。

其实,我们平时在编译项目后,在library的build/intermediates/bundles/debug/下会生成一个classes.jar文件。但是你发现,我们这里并没有用到这个目录下的classes.jar,而是使用了build/intermediates/bundles/release/目录下的classes.jar。网上很多文章说,项目编译后就会在build/intermediates/bundles下面生成release文件夹,我试了之后,发现并没有生成。

这个时候,我们需要下面的操作,生成release文件夹。
Android将library打包成jar包和aar包_第3张图片
QQ截图20180924114240.png

步骤1:首先我们找到对应的library库,我这里的library库的名字是core。
步骤2:然后可以看到Tasks--build目录下面有assemble、assembleDebug、assembleRelease这三个选项。
步骤3:
1:双击assemble,会在bundles目录下面生成debug和release文件夹
2:双击assembleDebug,会在bundles目录下面生成debug文件夹
3:双击assembleRelease,会在bundles目录下面生成release文件夹

接下来,在Terminal执行相应的指令就可以生成重命名后的jar包(如果你的androidstudio不可以执行下面这条指令,请自行百度)
Android将library打包成jar包和aar包_第4张图片
QQ截图20180924155605.png

执行完成后,可以在build/libs/目录下,看到abc.jar这个文件。

说两个问题点:
(1)将library打包成jar包的这种方式,在build.gradle文件下面配置的依赖是不生效的。
(2)在library的libs目录下引用了其他第三方jar包的同学,会发现这种方式生成的jar包,是没有将libs目录下的第三方jar包打包进去的,只是将library库下的所有class文件打包进去。
[如何解决这些问题,看下一篇文章](https://www.jianshu.com/p/9ca6cf6bdbbc)

如何将library打包成aar包

同样在我们编译项目后,在core/build/outputs/aar/目录下,会生成debug模式的aar包
Android将library打包成jar包和aar包_第5张图片
QQ截图20180924163229.png

如果发现该aar目录下没有debug模式的aar包,可以点击Rebuild Project生成,或者使用下面的方式生成。
感觉生成aar包,会有缓存问题,我一般会先clean项目,然后再重新生成aar包

接下来,我们来生成release模式下的aar包。
Android将library打包成jar包和aar包_第6张图片
QQ截图20180924114240.png

1:双击assemble,同时生成debug和release模式的aar包
2:双击assembleDebug,生成debug模式的aar包
3:双击assembleRelease,生成release模式的aar包


Android将library打包成jar包和aar包_第7张图片
QQ截图20180924164833.png

在别的项目引用aar包

将aar包拷贝到libs目录下后,需要在build.gradle进行相关配置
Android将library打包成jar包和aar包_第8张图片
QQ截图20180924174657.png

为了方便管理,我们还可以使用maven或者jcenter的方式,对aar包进行版本管理。每当aar包需要更新版本的时候,我们可以不需要重新拷贝相应版本的aar包,直接在build.gradle文件修改相应的版本号就可以了。
[可以看我这篇文章](https://www.jianshu.com/p/1a76b0536729)

你可能感兴趣的:(Android将library打包成jar包和aar包)