Java 为什么libGdx资产在android子模块中

Java 为什么libGdx资产在android子模块中,java,gradle,libgdx,Java,Gradle,Libgdx,我使用libGdx来创建一个游戏,一切都正常,但在gradle构建中有一些事情我不了解 其中之一就是为什么所有资产都在android子模块中,而不是在核心子模块中 Core是负责所有共享代码的模块,没有资产是很奇怪的 这似乎是一个简单的问题,但这使得整个构建更难理解 如果你有办法避免这种情况,我愿意接受你的建议。我会尝试改变这种行为,但我不太擅长gradle配置,我认为在android项目中使用资产目录的主要原因就是惯例。原因是 Android项目的根目录中确实有一个名为assets的特定文件夹

我使用libGdx来创建一个游戏,一切都正常,但在gradle构建中有一些事情我不了解

其中之一就是为什么所有资产都在android子模块中,而不是在核心子模块中

Core是负责所有共享代码的模块,没有资产是很奇怪的

这似乎是一个简单的问题,但这使得整个构建更难理解


如果你有办法避免这种情况,我愿意接受你的建议。我会尝试改变这种行为,但我不太擅长gradle配置,我认为在android项目中使用
资产
目录的主要原因就是惯例。原因是

Android项目的根目录中确实有一个名为assets的特定文件夹。该文件夹必须严格命名为Android项目强制执行的“资产”。因此,在其他项目中也以同样的方式放置文件夹层次结构是一个更好的主意,这样您就不必对单个平台进行更改

但是我认为应该可以将
assets
目录移动到核心项目中,因为如果您创建一个没有Android部件的项目,它也会被放置在核心项目中

要将
assets
目录移动到核心项目,只需调整放置在子项目中的
build.gradle
文件,并更改以下行:

//sourceSets.main.resources.srcDirs = ["../android/assets"]
sourceSets.main.resources.srcDirs = ["../core/assets"]

//project.ext.assetsDir = new File("../android/assets");
project.ext.assetsDir = new File("../core/assets");
在我的项目中,该文件位于桌面子项目中,但在其他
build.gradle
文件中也可能有一些

要在eclipse中运行项目,可能需要在移动资产文件夹后重新链接它。有关如何执行此操作的详细说明,请参阅。

为什么
资产
android
项目文件夹中,而不是在
core
中? 嗯,因为libGDX团队决定让libGDX项目生成器把它放在那里。您可以用不同的方式设置项目,但我坚持使用libGDX建议的项目布局

请注意,
assets
不一定总是在
android
project文件夹中,这取决于您的目标平台。例如,如果您不以Android设备为目标,则不会有
Android
文件夹。请随意阅读更多的网页

如何更改
资产
文件夹的位置? 您必须编辑:

  • ios/robovm.xml
。。。
../android/assets
...
  • desktop/build.gradle
  • android/build.gradle
这个列表可能不完整,我认为网上也没有详尽的列表。也许这是反对更改
资产
文件夹位置的另一个原因

// ...
sourceSets.main.resources.srcDirs = ["../android/assets"]
// ...
project.ext.assetsDir = new File("../android/assets")
// ...
// ...
sourceSets {
    main {
        // ...
        assets.srcDirs = ['assets']
// ...