出于各种原因,我处于一个小型孤立的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文件 ):
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')
。 *.aar
的方法。这根本不起作用(在SO上的其他地方评论)我目前正在使用Gradle 2.3和android插件1.2.1。
现在,我正在以一种hacky的方式将孩子的classes.jar
拉出aar项目并放置父lib项目(按照https://stackoverflow.com/a/33264652/236743),因为它恰好发生了他们不使用任何xml资源,所以在这种情况下我不会丢失任何东西。但这有点耗时,而且我不想做的手动工作也不是很有可扩展性。是的可以自动化这个但是我确定有一种正式的方式,我没有偶然发现正确的配置。
非常感谢您的帮助。