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

Why libGdx Asset are in the android submodule

我使用 libGdx 创建游戏,一切正常,但在 gradle 构建中有一些我不明白的地方。

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

核心是负责所有共享代码的模块,没有资产在里面很奇怪。

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

如果您有避免这种情况的解决方案,我愿意接受建议。我会尝试改变我这边的这种行为,但我在 gradle 配置方面不太熟练

我认为 android 项目中有 assets 目录的主要原因只是约定俗成。根据 this answer 原因是...

Android projects do have a specific folder in its root named assets. The folder has to be strictly named "assets" as enforced by the Android project. Therefore, it would be a better idea to lay your folder hierarchy the same way in other projects as well so that you won't have to make changes for individual platforms.

不过我觉得应该可以把assets目录移到核心工程里,因为它也放在核心工程里,如果你创建的工程没有Android部分。

要将 assets 目录移动到核心项目,您只需调整 build.gradle 文件,该文件位于 sub-projects 内并更改以下行:

//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");

在我的项目中,此文件位于桌面 sub-project,但其他 build.gradle 文件中也可能有一些。

对于 运行 您在 eclipse 中的项目,可能需要 re-link 资产文件夹移动后。有关如何执行此操作的详细说明,请参阅 this answer

为什么 assetsandroid 项目文件夹中而不在 core 中?

嗯,因为 libGDX 团队决定将 Libgdx Project Generator 放在那里。您可以以不同的方式设置您的项目,但我会坚持 [[=]提出的项目布局libGDX.

请注意,assets 不必总是位于 android 项目文件夹中,取决于您的目标平台。例如,如果您不定位 Android 台设备,则不会有 android 文件夹。欢迎在 Structure of LibGDX projects.

上阅读更多内容

如何更改 assets 文件夹的位置?

您必须编辑:

  • ios/robovm.xml
...
<resources>
  <resource>
    <!-- change this path -->
    <directory>../android/assets</directory>
  </resource>
  ...
  • desktop/build.gradle
// ...
sourceSets.main.resources.srcDirs = ["../android/assets"]
// ...
project.ext.assetsDir = new File("../android/assets")
// ...
  • android/build.gradle
// ...
sourceSets {
    main {
        // ...
        assets.srcDirs = ['assets']
// ...

此列表可能不完整,我认为网上没有详尽的列表。也许这是反对更改 assets 文件夹位置的另一个原因。