问题
我正在使用libGDX开发一款游戏,项目结构类似于:
Root project 'gdx-play'
+--- Project ':android'
+--- Project ':core'
--- Project ':desktop'
子项目android
和desktop
依赖于core
。
我想将我的资产保存在core
项目的resources文件夹中。取决于desktop
中的core
工作得很好,因为libGDX很乐意从打包的JAR根目录加载资产。然而,在Android上,libGDX希望资产位于打包的Apk的assets
文件夹中。
在项目之间没有紧密耦合的情况下,如何最好地配置我的多项目构建?
可能的解决方案
一
将资产存储在core
项目中的assets
子文件夹中,这样它们在打包时就会神奇地出现在Apk的assets
文件夹中。
两个
从core
发布两个单独的JAR;一个有类,一个有资源。或者将core
项目一分为二。然后,在android
中,以某种方式将资源JAR中的项目添加到Android插件的assets
SourceDirectorySet
中,并从类路径中删除该JAR(这样它的项目就不会冗余地包含在APK中(。我不知道这是否危险。
三
将android-library
插件添加到core
项目并导出AAR。我确信这将与android
最兼容,但是,我不知道如何为desktop
项目获得一个正常的JAR。
我会采取两种方法之一。在这个类似的问题中,@jake-warton从APK创建JAR的方法,基本上包括为库的每个发布变体创建JAR任务(跳过调试变体(。
或者我会把资产拉到他们自己的Android库中,比如core-assets
,在core
中只留下java代码。这种方法的一个好处是,纯Java项目更容易进行彻底测试。目前,Android的测试支持有点欠缺。