将兄弟项目资源添加到Android资产而不需要紧密耦合

时间:2014-03-24 23:56:17

标签: java android gradle android-gradle

问题

我正在使用类似于以下项目结构的libGDX开发游戏:

Root project 'gdx-play'
+--- Project ':android'
+--- Project ':core'
\--- Project ':desktop'

子项目androiddesktop取决于core

我想将我的资源保存在core项目的资源文件夹中。根据{{​​1}}的{​​{1}}工作正常,因为libGDX很乐意从打包的JAR根加载资产。但是,在Android上,libGDX希望资产驻留在打包的Apk的core文件夹中。

如果没有项目之间的紧密耦合,我如何才能最好地配置我的多项目构建?

可能的解决方案

将资源存储在desktop项目的assets子文件夹中,以便在打包时神奇地将它们放在Apk的assets文件夹中。

两个

core发布两个单独的JAR;一个有班级,一个有资源。或者将assets项目分成两部分。然后,在core中,以某种方式将资源JAR中的项添加到Android插件的core android中,并从类路径中删除该JAR(以便其项目不是冗余的)包含在APK中。我不知道这是否危险。

assets插件添加到SourceDirectorySet项目并导出AAR。我确定这与android-library最兼容,但是,我不知道如何为core项目获得正常的JAR。

1 个答案:

答案 0 :(得分:0)

我会选择两种方法之一。要么@jake-wharton在这个similar question中从APK创建jar的方法基本上涉及为库的每个版本变体创建JAR任务(跳过调试变体)。

或者我会将资源拉入自己的Android库,例如core-assets,只留下core中的java代码。这种方法的一个好处是纯Java项目更容易彻底测试。目前,Android的测试支持有点缺乏。