如何在另一个库中包含一个Android库模块?

13

我正在构建一个打包为aar并分发给第三方开发者的Android库。

结构非常简单:

project ---libraryA ---libraryB

libraryA需要libraryB,这就是为什么在它的gradle文件中有这个依赖:

compile project(':libraryB')

而settings.gradle有:

include ':libraryB', ':libraryA'

但如果我将项目构建为aar,它只包括libraryA。我错过了什么?

我阅读了这个问题的回答:Android Studio如何从多个库项目打包单个AAR?

仍然不可能吗?我认为将你的代码拆分成多个模块并不是坏习惯,对吗?

2个回答

9
这还是不可能的吗?
是的,至少通过标准构建工具不可能。可能有第三方插件、脚本或其他方法可以创建一个“fat AAR”,将AAR及其依赖项合并在一起。
我认为将代码拆分成多个模块并不是不好的做法?
在本地开发中使用多个模块完全没有问题。但是,模块是依赖关系。当您发布库时,您需要满足所有这些依赖项,其中包括您的任何模块。这又意味着,您的库所依赖的任何模块也必须是库,以一种消费者能够获取到这些依赖项的方式进行分发。

2
你能否提供一个脚本或第三方插件的示例来完成这项工作? - Teodor
1
@Teodor:不,因为我从未研究过这个。这就是为什么我写了“可能会……”。这些“臃肿”的包通常不受欢迎,我个人也很讨厌它们。但是,我知道有一些东西可以创建“臃肿的JAR”(尽管我忘记它们的名称),因此原则上某些东西可以通过足够的工程努力创建一个“臃肿的AAR”。 - CommonsWare

7

整洁,谢谢你的提示!现在我们只是通过自己的Maven仓库部署我们的库,这对我们来说很好用。但这可能对其他人有用。 - Philipp E.
1
是的,我们使用本地Maven,但也许有人想要分发带有嵌入式库的AAR文件。这种情况下使用它会更合适。 - Vladimir Ryhlitskiy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接