You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新建LibGDX iOS项目执行launchIOSDevice时出现链接错误

LibGDX iOS项目编译链接错误排查

问题描述

我尝试将旧LibGDX游戏更新为使用最新版本的各类第三方库,但无法在iOS设备上运行。于是回到基础操作,创建了一个全新的LibGDX项目进行测试,仅在build.gradle文件中添加了签名身份(Sign Identity)和配置描述文件(Provisioning Profile),其余未做任何修改,结果仍出现相同错误。

请问:

  • 其他人的新建iOS项目能正常运行吗?
  • 该错误的原因是什么?

错误日志

17:55:34: 正在执行 'launchIOSDevice'...

启动Gradle守护进程...
Gradle守护进程已在569毫秒内启动
> Task :core:compileJava 已是最新
> Task :ios:compileJava 已是最新
> Task :ios:processResources 无资源
> Task :ios:classes 已是最新
> Task :ios:jar 已是最新
> Task :ios:assemble 已是最新
> Task :core:processResources 无资源
> Task :core:classes 已是最新
> Task :core:jar 已是最新
> Task :ios:compileTestJava 无资源
> Task :ios:processTestResources 无资源
> Task :ios:testClasses 已是最新
> Task :ios:test 无资源
> Task :ios:check 已是最新
> Task :ios:build 已是最新
> Task :ios:launchIOSDevice
ld: 警告:忽略重复库: '-lz'
0  0x1025db648  __assert_rtn + 72
1  0x1025960f0  ___Z13dispatchApplyIRKmZ15dispatchForEachIKN6mach_o13CompactUnwind11Diff24FixupEZNK2ld16LayoutExecutable18writeCompactUnwindENSt3__14spanIhLm18446744073709551615EEEyRKNS7_13SectionLayoutEE4$_26EvNSA_IT_Lm18446744073709551615EEEmT0_EUlmE_EvOSG_SI__block_invoke + 0
2  0x18c5f5950  _dispatch_client_callout2 + 20
3  0x18c60a1a4  _dispatch_apply_invoke_and_wait + 176
4  0x18c609464  _dispatch_apply_with_attr_f + 1176
5  0x18c609650  dispatch_apply + 96
6  0x102596398  ld::LayoutExecutable::writeContentWithoutLinkEdit(std::__1::span<unsigned char, 18446744073709551615ul>, unsigned long long) + 672
7  0x10259c020  ld::LayoutExecutable::writeToFile(char const*) + 15248
8  0x10254e2e8  main + 9424
ld: 断言失败: (false && "紧凑 unwind 压缩函数偏移量无法放入24位空间"), 函数operator(), 文件Layout.cpp, 第5758行。
clang: 错误:链接器命令失败,退出代码为1(使用-v查看调用详情)

> Task :ios:launchIOSDevice 失败
5个可执行任务: 1个已执行,4个已是最新

FAILURE: 构建因异常失败。

* 出错原因:
任务 ':ios:launchIOSDevice' 执行失败。
> 无法启动iOS设备
  为应用构建RoboVM可执行文件时出错
  命令 '[/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++, -o, /Users/williamcalderwood/Downloads/test/ios/build/robovm.tmp/IOSLauncher, -Wl,-filelist,/Users/williamcalderwood/Downloads/test/ios/build/robovm.tmp/objects0, -L, /Users/williamcalderwood/.m2/repository/com/mobidevelop/robovm/robovm-dist/2.3.20/unpacked/robovm-2.3.20/lib/vm/ios/arm64, -ObjC, -exported_symbols_list, /Users/williamcalderwood/Downloads/test/ios/build/robovm.tmp/exported_symbols, -Wl,-no_implicit_dylibs, -Wl,-dead_strip, -F/Users/williamcalderwood/.robovm/cache/ios/arm64/release/Users/williamcalderwood/.gradle/caches/modules-2/files-2.1/com.badlogicgames.gdx/gdx-platform/1.12.0/e7eb1777f7c465f6ef8cb1dad7dfc405184f17aa/gdx-platform-1.12.0-natives-ios.jar.extracted/META-INF/robovm/ios/libs, -F/Users/williamcalderwood/.robovm/cache/ios/arm64/release/Users/williamcalderwood/.gradle/caches/modules-2/files-2.1/com.badlogicgames.gdx/gdx-platform/1.12.0/e7eb1777f7c465f6ef8cb1dad7dfc405184f17aa/gdx-platform-1.12.0-natives-ios.jar.extracted/META-INF/robovm/ios/libs/gdx.xcframework/ios-arm64, -F/Users/williamcalderwood/.robovm/cache/ios/arm64/release/Users/williamcalderwood/.gradle/caches/modules-2/files-2.1/com.badlogicgames.gdx/gdx-platform/1.12.0/e7eb1777f7c465f6ef8cb1dad7dfc405184f17aa/gdx-platform-1.12.0-natives-ios.jar.extracted/META-INF/robovm/ios/libs/ObjectAL.xcframework/ios-arm64, -L/usr/lib/swift, -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos, -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.5/iphoneos, -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/iphoneos, -fPIC, --target=arm64-apple-ios11.0, -isysroot, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.0.sdk, -lrobovm-bc, -force_load, /Users/williamcalderwood/.m2/repository/com/mobidevelop/robovm/robovm-dist/2.3.20/unpacked/robovm-2.3.20/lib/vm/ios/arm64/librobovm-rt.a, -lrobovm-debug, -lrobovm-core, -lgc, -lpthread, -ldl, -lm, -lz, -liconv, -lsqlite3, -framework, Foundation, -framework, OpenGLES, -framework, gdx, -framework, ObjectAL, -framework, UIKit, -framework, QuartzCore, -framework, CoreGraphics, -framework, OpenAL, -framework, AudioToolbox, -framework, AVFoundation, -framework, GameController, -lz, -framework, MobileCoreServices, -Xlinker, -rpath, -Xlinker, /usr/lib/swift, -Xlinker, -rpath, -Xlinker, @executable_path/Frameworks, -Xlinker, -rpath, -Xlinker, @loader_path/Frameworks]' 执行失败(退出值: 1)

* 尝试方案:
> 使用 --stacktrace 选项获取堆栈跟踪。
> 使用 --info 或 --debug 选项获取更多日志输出。
> 使用 --scan 选项获取完整分析信息。

* 获取更多帮助请访问 https://help.gradle.org

构建失败,耗时58秒
17:56:33: 'launchIOSDevice' 执行完成。

问题解答

错误原因

这个错误的核心是Xcode 17与旧版RoboVM的兼容性问题:

  • 日志中关键错误提示紧凑 unwind 压缩函数偏移量无法放入24位空间,说明Xcode 17对ARM64架构的紧凑 unwind(用于异常处理的调试信息)格式做了调整,而你使用的RoboVM 2.3.20没有适配这个新格式,导致链接器生成的信息不符合要求,触发断言失败。
  • 日志里的忽略重复库: '-lz'是次要警告,是链接时重复引入zlib库导致的,和核心错误无关。

新建项目能否正常运行

如果其他开发者使用适配Xcode 17的RoboVM版本(比如RoboVM 2.3.21及以上,或最新的开发版),新建的LibGDX iOS项目可以正常运行。旧版RoboVM在Xcode 17环境下都会触发这个错误。

解决办法

  • 升级RoboVM版本:将项目中的RoboVM依赖升级到2.3.21或更高版本,该版本已修复Xcode 17的兼容性问题。
  • 降级Xcode:如果暂时无法升级RoboVM,可以将Xcode降级到16或更低版本,避开兼容性冲突。

内容的提问来源于stack exchange,提问作者Will Calderwood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 16:27:02