Android库项目取决于其他库项目

Dor*_*ori 6 android gradle android-gradle-plugin

出于各种原因,我处于这样一种情况,即我在小型孤立的android-library项目中存在多个应用程序组件,这些项目正在编译为.aars.

在某些情况下,这些被推送到maven回购并以这种方式消费,这很好,一切都很好.

在其他情况下,这些aars需要编译到另一个android库中.我当前的配置我有问题,因为孩子aar lib内容没有添加到父aar lib项目上gradlew assembleRelease.

依赖流程就像

Apk app project -> parentLibProject -*> childLibProject

这导致父级aar编译正常,因为子aars在类路径上但不包括输出父级aar中的子aar libs内容.这意味着任何使用父lib的android应用程序项目都会在编译时失败,因为子lib aar文件/代码不在父aar中.我不想强迫app项目手动列出已经在父lib项目中列出的所有子lib项目.从本质上讲,我希望aars以类似于jar库项目使用的库的方式处理,即编译到输出中aar.

我尝试了一些非成功的方法(所有构建都很好,但都无法将子aar lib内容输出到父aar lib文件中):

  1. aar内部编译的子进程/libs/,在存储库闭包中声明flatDir { dirs 'libs' }并导入到父lib项目中compile(name:'someAarLib-x.y.z', ext:'aar').编译得很好但是父项目也需要包括someAarLib-x.y.zaar和compile(name:'someAarLib-x.y.z', ext:'aar').
  2. 将孩子作为模块导入,如本答案/sf/answers/1742607121/中所述.编译很好,但问题与1相同.
  3. 使用与/sf/answers/2328525671/相同的方法,但使用*.aar.这根本不起作用(在SO上的其他地方评论)

我目前正在使用Gradle 2.3和android插件1.2.1.

现在我正在以一种hacky的方式将它拉出classes.jar孩子aar项目并放置父lib项目(根据/sf/answers/2328525671/),因为它恰好发生了他们不使用任何xml资源,所以在这种情况下我不会丢失任何东西.但这有点耗时,而且我不想做的手动工作也不是很有可扩展性.是的可以自动化这个,但我确定有一个正式的方式,我没有偶然发现正确的配置.

非常感谢任何帮助.