问题描述
我使用libGdx来创建游戏,一切正常,但是在gradle版本中我不了解的东西很少。
其中之一就是为什么所有资产都在android subModule中而不在核心subModule中。
Core是负责所有共享代码的模块,很奇怪没有资产。
这似乎是一个简单的问题,但会使整个构建更加难以理解。
如果您有避免这种情况的解决方案,我欢迎您提出建议。我将尝试改变这种行为,但是我对gradle配置的了解不多
解决方法
为什么assets
在android
项目文件夹中而不在core
中?
好吧,因为libGDX团队决定使用Libgdx项目生成器来放置它。您可以 以其他方式设置项目,但是 我会坚持 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
文件夹位置的另一个原因。
我认为在Android项目中拥有assets
目录的主要原因只是出于惯例。根据{{3}},原因是...
Android项目的根文件夹中确实有一个特定的文件夹。该文件夹必须严格由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中运行项目,可能需要在移动资产文件夹后重新链接它。有关如何执行此操作的详细说明,请参见this answer。