Android Studio中启用LibGDX桌面启动器code hot swapping功能求助
解决LibGDX Desktop Launcher无法使用Code Hot Swapping的问题
问题场景
使用Android Studio Giraffe 2022.3.1、JBR 17开发LibGDX 1.12.0项目时,Android Launcher可正常使用Apply Code Changes和Apply Code Changes and Restart Activity热替换功能,但Desktop Launcher无法激活该功能,已检查File > Settings > Build, Execution, Deployment > Debugger > HotSwap设置并尝试快捷键无效。
解决方案步骤
1. 调整Desktop模块的Gradle配置
打开Desktop模块的build.gradle文件,找到run任务节点,添加JVM参数以开启高级热替换支持:
run { // 保留原有配置,添加以下jvmArgs jvmArgs = [ "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005", "-XX:+AllowRedefinitionToAddDeleteMethods", "-XX:+UseJVMCICompiler" ] standardInput = System.in }
-XX:+AllowRedefinitionToAddDeleteMethods:允许热替换时添加/删除方法,突破默认热替换的限制- JDWP参数:保证调试连接正常,让Android Studio能识别调试状态
2. 配置Desktop Launcher的调试运行项
- 打开
Run > Edit Configurations,找到Desktop Launcher的调试配置 - 在
Configuration标签页,确认Working directory设置为项目根目录下的assets(LibGDX Desktop运行的资源目录要求) - 切换到
Debugger标签页,勾选Reload classes after build,并将HotSwap模式设为Automatically reload classes after compilation
3. 执行正确的热替换流程
必须在调试模式下运行Desktop Launcher,之后按以下步骤操作:
- 修改代码后,执行
Build > Make Project(快捷键Ctrl+F9)完成编译 - 编译成功后,点击调试工具栏的
Apply Code Changes按钮,或用快捷键Ctrl+Alt+F10选择对应选项
4. 排查JDK版本兼容性
LibGDX 1.12.0对JBR 17的热替换支持存在个别兼容性问题,若上述配置无效:
- 切换到JBR 11:在
File > Project Structure > Project中设置SDK为JBR 11,同步Gradle后重新调试运行
5. 避开LibGDX热替换的限制
- 不要修改
DesktopLauncher类的启动逻辑代码,这类变更必须重启应用才能生效 - 对于
Game或Screen子类中的代码,若涉及全局初始化逻辑,部分变更可能需要重启,但普通业务逻辑的修改均可通过热替换生效
补充说明
9年前关于Gradle模板不支持热替换的结论已过时,当前LibGDX官方Gradle模板已支持调试热替换,核心是要正确配置JVM参数和调试选项。
内容的提问来源于stack exchange,提问作者dmmm7
相关产品推荐
相关产品推荐

