需求
笔者公司最新有这样一个需求,将一个module打包成aar供其他公司的人使用,但这个module 依赖多个本地的module。打包成aar的时候,只会将你的当前module的内容打包,尽管你依赖了其他module,也不会将其他module的东西打进去(远程依赖除外,因为远程依赖指向是一个远程地址,只要指向对了,就能在使用aar的时候被找到)。

如果直接打包成aar,这个aar里面不包括依赖的本地的module. 运行会报错。
解决方案
很自然的我们就会联想到如何将module及依赖的所有module都打包成一个aar?Android官方没有提供一个工具解决这个问题。而网上大部分的文章给的解决方案是这个:
https://github.com/adwiv/android-fat-aar
但是这个库的作者很久没有维护了,只支持到gradle 2.3.3版本。更高的版本会报错。
一位大牛将此库改写,支持gradle6.0.0以上。
https://github.com/kezong/fat-aar-android
这里需要注意一点:将多个module打包成一个aar,如果module中有相同的资源名,则会编译报错(最常见的是每个module下都有@string/app_name
)建议将每个module下的资源id加一个前缀。
网友评论