在没有紧密耦合的情况下,将同级项目资源添加到Android资产中



问题

我正在使用libGDX开发一款游戏,项目结构类似于:

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

子项目androiddesktop依赖于core

我想将我的资产保存在core项目的resources文件夹中。取决于desktop中的core工作得很好,因为libGDX很乐意从打包的JAR根目录加载资产。然而,在Android上,libGDX希望资产位于打包的Apk的assets文件夹中。

在项目之间没有紧密耦合的情况下,如何最好地配置我的多项目构建?

可能的解决方案

将资产存储在core项目中的assets子文件夹中,这样它们在打包时就会神奇地出现在Apk的assets文件夹中。

两个

core发布两个单独的JAR;一个有类,一个有资源。或者将core项目一分为二。然后,在android中,以某种方式将资源JAR中的项目添加到Android插件的assetsSourceDirectorySet中,并从类路径中删除该JAR(这样它的项目就不会冗余地包含在APK中(。我不知道这是否危险。

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

我会采取两种方法之一。在这个类似的问题中,@jake-warton从APK创建JAR的方法,基本上包括为库的每个发布变体创建JAR任务(跳过调试变体(。

或者我会把资产拉到他们自己的Android库中,比如core-assets,在core中只留下java代码。这种方法的一个好处是,纯Java项目更容易进行彻底测试。目前,Android的测试支持有点欠缺。

最新更新