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

时间:2015-10-22 09:04:32

标签: android gradle android-gradle

出于各种原因,我处于一个小型孤立的android-library项目中存在多个app组件的情况,这些项目被编译为.aar

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

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

依赖流程就像

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' }的存储库闭包中声明,并导入到具有compile(name:'someAarLib-x.y.z', ext:'aar')的父lib项目。 此编译正常,但父项目还需要包含someAarLib-x.y.z aar和compile(name:'someAarLib-x.y.z', ext:'aar')
  2. 将此孩子作为模块导入,如本答案https://stackoverflow.com/a/24894387/236743中所述。编译得很好,但问题与1相同。
  3. 使用与https://stackoverflow.com/a/33264652/236743相同但使用*.aar的方法。这根本不起作用(在SO上的其他地方评论)
  4. 我目前正在使用Gradle 2.3和android插件1.2.1。

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

    非常感谢您的帮助。

0 个答案:

没有答案