如何将我的LIBGDX游戏制作成可执行文件

9

我之前从来没有将程序转换成可执行文件,最近一直在研究如何实现。尝试将程序放到jar包中时一切正常,但是运行程序时却没有反应。

我该如何将我的游戏转换为可执行文件以便在Windows上运行(不是Android)? 我感觉似乎没有将它链接到库或其他什么东西…… 不确定。

编辑: 我应该补充说明我遇到了错误。

JAR export finished with warnings. See details for additional information. 
duplicate entry: com/badlogic/gdx/utils/arial-15.fnt 
duplicate entry: com/badlogic/gdx/utils/arial-15.fnt 
duplicate entry: com/badlogic/gdx/utils/arial-15.png 
duplicate entry: com/badlogic/gdx/utils/arial-15.png 
Jar export finished with problems. 
See details for additional information. 

你的意思是要构建一个可执行文件让其他人在Windows上运行?还是在他们的Android设备上?(或者在Mac上?) - P.T.
我已经弄清楚了如何导出APK并在Android设备上运行,效果很好。但你是正确的,我正在尝试让它在Windows上运行。我仍然没有弄清楚。 - Brian Diehr
就我所知,我也遇到了很多“重复条目”的警告。但是它们是针对不同的类的。你应该检查生成的.jar文件(例如,使用winzip或7zip进行检查),确保它包含了你的类文件,并且META-INF\MANIFEST.MF文件引用了正确的"Main-Class"。.jar的顶层也应该有很多库文件(例如gdx.dll和libgdx.so等)。 - P.T.
4个回答

7
您的问题是,当您使用Eclipse导出可执行JAR文件时,不会包含您在gdx项目中使用的资源(图形,声音等)。您可以手动执行以下操作:将资产文件夹复制到生成的JAR文件旁边,或使用您喜欢的zip管理工具将资产文件夹包含在JAR文件中。另一种方法是使用相同的Eclipse导出向导,并选择“保存为ANT脚本”,然后编辑生成的ANT文件以包含应用程序所需的所有文件和文件夹。希望这可以帮助您。

这就是解决方案。自从我按照这里所说的做了以后,一直都在工作。谢谢! - Brian Diehr

6
这是一个老问题,但如果您使用的是新版本的LibGDX和Gradle,则可以使用命令行来创建可执行文件。
有几个命令,但这些命令是用于打包的:
桌面版
gradlew desktop:dist

安卓(未签名)

gradlew android:assembleRelease

iOS

gradlew ios:createIPA

网站

gradlew html:dist

请访问https://github.com/libgdx/libgdx/wiki/Gradle-on-the-Commandline了解更多信息。


对于桌面分发,“gradlew desktop:dist”会创建.jar文件,但如果不放在资产文件夹中,则无法正常工作。我想知道这是否是Gradle更新的问题? - user5803705

5
我假设您的应用程序是按照libgdx维基页面的建议设置的(具有“主项目”和单独的“桌面”和“Android”项目,这些项目共享来自“主”项目的源代码)。
由于您的应用程序是用Java编写的,因此需要在桌面上运行JVM。 您必须决定是否要打包它,或者依赖用户已经安装的JVM。 我认为将JVM与Java类文件打包在一起非常复杂,并引发了一系列其他问题(并且它变得非常平台特定)。 因此,我认为大多数基于libgdx的游戏都以可执行的Jar文件形式分发,这意味着用户必须已经拥有Java。(它适用于Minecraft,所以对您也足够好。:)
Eclipse使这变得非常容易:文件 -> 导出... -> Java -> 可执行的Jar文件。可能需要额外的步骤将应用程序的图像和声音等资产包含到此.jar文件中。(我的游戏目前“无资产”,因此我没有任何经验与此部分。)

您也可以考虑避开桌面应用程序,将游戏打包为小程序并在Web浏览器中运行,这样您想要展示给他们的人就不需要进行太多的“安装”了。这里有一个基于libgdx游戏制作小程序的指南。(我自己还没有尝试过,但我计划为我的基于libgdx的游戏做这个)


非常感谢您的回答!当我尝试您建议的方法时,它会打开一个空白的白色窗口。我按照以下步骤操作:点击“文件” >> “导出” >> “可运行的JAR文件”,并且我尝试了“将所需库文件提取到生成的JAR文件中”选项和“将所需库文件打包到生成的JAR文件中”选项,但结果都是一样的(不起作用)。现在该怎么办? - Brian Diehr
此外,当我尝试添加以下内容时com.badlogic.gdx.backends.lwjgl.LwjglApplicationEclipse无法看到它的存在。我可能只是没有正确地安装LibGDX或者出现了一些类似的问题吗?我的游戏运行得很好... - Brian Diehr
你选择了“导出目标”吗?这是Eclipse询问它应该创建的.jar文件的名称的晦涩方式。我刚刚从我的应用程序创建了一个.jar文件,没有遇到任何问题...嗯...我正在使用jogl后端,而不是lwjgl。但我怀疑这不会有太大的区别。 - P.T.
@PT:你注意到这是一个Android问题,而不仅仅是Java了吗?它并不像创建Java小程序或导出可执行的jar文件那么简单。 - Ken White
@KenWhite 哦,好的观点...我没有看到那个。Libgdx文档很好地涵盖了构建Android版本的内容,所以我有点认为他是在问桌面版。我会澄清这一点的。 - P.T.

1
如果您正在使用Android Studio,您可以创建一个自定义配置文件,从程序内部分发。在运行下拉列表中选择编辑配置。点击“+”。选择Gradle。在屏幕的右半部分为您的配置文件命名。Gradle项目:使用浏览按钮选择您的桌面应用程序。这将看起来像(项目名称):桌面。任务:键入“desktop:dist”。应用。关闭配置编辑器并从下拉列表中选择您的新配置。点击运行,它应该构建您的项目。您的新Jar文件应该位于(项目名称)/桌面/build/libs。

非常感谢**(ProjectName)/desktop/build/libs**。通常它会创建一个小文件,但是一旦我通过cmd编译它就可以工作了! - Soley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接