【问题标题】:Error compiling in Android Studio with LibGDX IOS使用 LibGDX IOS 在 Android Studio 中编译时出错
【发布时间】:2019-04-14 07:42:09
【问题描述】:

当我尝试从我的 libGDX 游戏的 iOS 版本创建 .ipa 时,我总是遇到同样奇怪的错误。我使用的是 robovm 版本 2.3.5。该错误仅在 robovm 控制台上显示此消息:

`[错误] 架构 armv7 的未定义符号: [错误]“std::_Rb_tree_decrement(std::_Rb_tree_node_base*)”,引用自: [错误] libgdx-bullet.a(MultiBodyNameMap. o) [错误] libgdx-bullet.a(MultiBodyNameMap.o) 中的 std::_Rb_tree、std::_Select1st >、std::less、std::allocator > >::_M_insert_unique(std::pair const&) [错误] libgdx-bullet.a(MultiBodyNameMap. o) [错误] libgdx-bullet.a(MultiBodyNameMap.o) 中的 std::_Rb_tree、std::_Select1st >、std::less、std::allocator > >::_M_insert_unique(std::pair const&) [错误] libgdx-bullet.a(User2InternalIndex.a(User2InternalIndex. o) [错误] libgdx-bullet.a(User2InternalIndex.o) 中的 std::_Rb_tree、std::_Select1st >、std::less、std::allocator > >::_M_insert_unique(std::pair const&) [错误] std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_insert_unique(std::_Rb_tree_iterator > > >, std::pair > > const& ) 在 libgdx-bullet.a(User2InternalIndex.o) [错误] ... [错误]“std::_Rb_tree_increment(std::_Rb_tree_node_base*)”,引用自: [错误] libgdx-bullet.a(MultiBodyNameMap. o) [错误] libgdx-bullet.a(MultiBodyNameMap. o) [错误] btInverseDynamicsBullet3::User2InternalIndex::buildMapping() 在 libgdx-bullet.a(User2InternalIndex.o) [错误] libgdx-bullet.a(User2InternalIndex.a(User2InternalIndex. o) [错误] std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_insert_unique(std::_Rb_tree_iterator > > >, std::pair > > const& ) 在 libgdx-bullet.a(User2InternalIndex.o) [错误]“std::string::_Rep::_S_empty_rep_storage”,引用自: [错误] std::map, std::allocator > >::operator[](int const&) 在 libgdx-bullet.a(MultiBodyNameMap.o) [错误] std::map, std::allocator > >::operator[](std::string const&) 在 libgdx-bullet.a(MultiBodyNameMap.o) [错误] btInverseDynamicsBullet3::writeGraphvizDotFile(btInverseDynamicsBullet3::MultiBodyTree const*, btInverseDynamicsBullet3::MultiBodyNameMap const*, char const*) 在 libgdx-bullet.a(MultiBodyTreeDebugGraph.o) [错误] libgdx-bullet.a(extras_wrap.o) 中的 std::_Rb_tree、std::_Select1st >、std::less、std::allocator > >::_M_erase(std::_Rb_tree_node >*) [错误] libgdx-bullet.a(extras_wrap.o) 中的 std::_Rb_tree、std::_Select1st >、std::less、std::allocator > >::_M_erase(std::_Rb_tree_node >*) [错误]“std::string::assign(std::string const&)”,引用自: [错误] btInverseDynamicsBullet3::MultiBodyNameMap::addBody(int, std::string const&) 在 libgdx-bullet.a(MultiBodyNameMap.o) [错误] btInverseDynamicsBullet3::MultiBodyNameMap::addJoint(int, std::string const&) 在 libgdx-bullet.a(MultiBodyNameMap.o) [错误] btInverseDynamicsBullet3::MultiBodyNameMap::getBodyName(int, std::string*) const in libgdx-bullet.a(MultiBodyNameMap.o) [错误] btInverseDynamicsBullet3::MultiBodyNameMap::getJointName(int, std::string*) const in libgdx-bullet.a(MultiBodyNameMap.o) [错误]“std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)”,引用自: [错误] libgdx-bullet.a(MultiBodyNameMap. o) [错误] libgdx-bullet.a(MultiBodyNameMap.o) 中的 std::_Rb_tree、std::_Select1st >、std::less、std::allocator > >::_M_insert_unique(std::pair const&) [错误] libgdx-bullet.a(MultiBodyNameMap. o) [错误] libgdx-bullet.a(MultiBodyNameMap.o) 中的 std::_Rb_tree、std::_Select1st >、std::less、std::allocator > >::_M_insert_unique(std::pair const&) [错误] libgdx-bullet.a(User2InternalIndex.a(User2InternalIndex. o) [错误] libgdx-bullet.a(User2InternalIndex.o) 中的 std::_Rb_tree、std::_Select1st >、std::less、std::allocator > >::_M_insert_unique(std::pair const&) [错误] std::_Rb_tree > >, std::_Select1st > > >, std::less, std::allocator > > > >::_M_insert_unique(std::_Rb_tree_iterator > > >, std::pair > > const& ) 在 libgdx-bullet.a(User2InternalIndex.o) [错误] ... [错误]“std::string::_Rep::_M_destroy(std::allocator const&)”,引用自: [错误] std::map, std::allocator > >::operator[](int const&) 在 libgdx-bullet.a(MultiBodyNameMap.o) [错误] std::map, std::allocator > >::operator[](std::string const&) 在 libgdx-bullet.a(MultiBodyNameMap.o) [错误] btInverseDynamicsBullet3::writeGraphvizDotFile(btInverseDynamicsBullet3::MultiBodyTree const*, btInverseDynamicsBullet3::MultiBodyNameMap const*, char const*) 在 libgdx-bullet.a(MultiBodyTreeDebugGraph.o) [错误] libgdx-bullet.a(extras_wrap.o) 中的 std::_Rb_tree、std::_Select1st >、std::less、std::allocator > >::_M_erase(std::_Rb_tree_node >*) [错误] libgdx-bullet.a(extras_wrap.o) 中的 std::_Rb_tree、std::_Select1st >、std::less、std::allocator > >::_M_erase(std::_Rb_tree_node >*) [错误] “std::basic_string, std::allocator >::basic_string(std::string const&)”,引用自: [错误] std::map, std::allocator > >::operator[](int const&) 在 libgdx-bullet.a(MultiBodyNameMap.o) [错误] std::map, std::allocator > >::operator[](std::string const&) 在 libgdx-bullet.a(MultiBodyNameMap.o) [错误] libgdx-bullet.a(MultiBodyNameMap.o) 中的 std::_Rb_tree、std::_Select1st >、std::less、std::allocator > >::_M_create_node(std::pair const&) [错误] libgdx-bullet.a(MultiBodyNameMap.o) 中的 std::_Rb_tree、std::_Select1st >、std::less、std::allocator > >::_M_create_node(std::pair const&) [错误] ld:未找到架构 armv7 的符号 [错误] clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) [错误] 无法创建 IPA org.apache.commons.exec.ExecuteException:命令'/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -o /var/folders/g8/ngcg1rn95r506xwdly9s9t2r0000gn/T/robovm1251516344287298932.tmp /thumbv7/IOSLauncher -arch armv7 -Wl,-filelist,/var/folders/g8/ngcg1rn95r506xwdly9s9t2r0000gn/T/robovm1251516344287298932.tmp/thumbv7/objects0 -w -L /Users/macUser/.robovm-sdks/robovm-2.3.5 /lib/vm/ios/thumbv7 -ObjC -exported_symbols_list /var/folders/g8/ngcg1rn95r506xwdly9s9t2r0000gn/T/robovm1251516344287298932.tmp/thumbv7/exported_symbols -Wl,-no_implicit_dylibs -Wl,-PIC -dead -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk -lrobovm-bc -force_load /Users/macUser/.robovm-sdks/robovm-2.3.5/ lib/vm/ios/thumbv7/librobovm-rt.a -lrobovm-core -lgc -lpthread -ldl -lm -lz -liconv -lsqlite3 -framework Foundation -framework UIKit -framework OpenGLES -framework QuartzCore -fram ework CoreGraphics -framework OpenAL -framework AudioToolbox -framework AVFoundation -force_load /Users/macUser/.robovm/cache/ios/thumbv7/release/Users/macUser/.gradle/caches/modules-2/files-2.1/com.badlogicgames。 gdx/gdx-box2d-platform/1.9.8/eb549ac5a5dbb5663eacf782d8cb8f22731638e0/gdx-box2d-platform-1.9.8-natives-ios.jar.extracted/META-INF/robovm/ios/libs/libgdx-box2d.a -force_load / Users/macUser/.robovm/cache/ios/thumbv7/release/Users/macUser/.gradle/caches/modules-2/files-2.1/com.badlogicgames.gdx/gdx-bullet-platform/1.9.8/44de3e9678419ae2a4cfe7fd674b1bf82d56ae20/ gdx-bullet-platform-1.9.8-natives-ios.jar.extracted/META-INF/robovm/ios/libs/libgdx-bullet.a -force_load /Users/macUser/.robovm/cache/ios/thumbv7/release /Users/macUser/.gradle/caches/modules-2/files-2.1/com.badlogicgames.gdx/gdx-platform/1.9.8/6e511ad1e19a8c5f792bb149d78c4e7e6f9e828f/gdx-platform-1.9.8-natives-ios.jar.extracted/ META-INF/robovm/ios/libs/libgdx.a -force_load /Users/macUser/.robovm/cache/ios/thumbv7/release/Us ers/macUser/.gradle/caches/modules-2/files-2.1/com.badlogicgames.gdx/gdx-platform/1.9.8/6e511ad1e19a8c5f792bb149d78c4e7e6f9e828f/gdx-platform-1.9.8-natives-ios.jar.extracted/META -INF/robovm/ios/libs/libObjectAL.a -lz -framework MobileCoreServices -Xlinker -sdk_version -Xlinker 12.1 -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks' 失败(退出值: 1) 在 org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:346) 在 org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:149) 在 org.robovm.compiler.util.Executor.exec(Executor.java:344) 在 org.robovm.compiler.util.ToolchainUtil.link(ToolchainUtil.java:385) 在 org.robovm.compiler.target.AbstractTarget.doBuild(AbstractTarget.java:276) 在 org.robovm.compiler.target.ios.IOSTarget.doBuild(IOSTarget.java:349) 在 org.robovm.compiler.target.AbstractTarget.build(AbstractTarget.java:270) 在 org.robovm.compiler.Linker.link(Linker.java:433) 在 org.robovm.compiler.AppCompiler.compile(AppCompiler.java:466) 在 org.robovm.compiler.AppCompiler.build(AppCompiler.java:784) 在 org.robovm.idea.compilation.RoboVmCompileTask$1.doCompile(RoboVmCompileTask.java:123) 在 org.robovm.idea.compilation.RoboVmCompilerThread.run(RoboVmCompilerThread.java:66)`

这是我的 build.graddle:

`构建脚本{ 存储库{ mavenLocal() mavenCentral() maven { url "https://plugins.gradle.org/m2/" } maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } 中心() 应用插件:'签名' 谷歌() } 依赖{ 类路径'org.wisepersist:gwt-gradle-plugin:1.0.6' 类路径'com.android.tools.build:gradle:3.2.1' 类路径“com.mobidevelop.robovm:robovm-gradle-plugin:2.3.5” } } 所有项目{ 应用插件:“日食” 应用插件:“想法” 版本 = '1.0' 分机{ appName = "收债员" gdxVersion = '1.9.8' roboVMVersion = '2.3.5' box2DLightsVersion = '1.4' ashleyVersion = '1.7.0' aiVersion = '1.8.0' } 存储库{ mavenLocal() mavenCentral() 谷歌() maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } maven { url "https://oss.sonatype.org/content/repositories/releases/" } } } 项目(“:安卓”){ 应用插件:“android” 配置{本地人} 依赖{ 实施项目(“:核心”) 实施“com.badlogicgames.gdx:gdx-backend-android:$gdxVersion” 本地人“com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi” 本地人“com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a” 本地人“com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a” 本地人“com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86” 本地人“com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64” 实施“com.badlogicgames.gdx:gdx-box2d:$gdxVersion” 本地人“com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi” 本地人“com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a” 本地人“com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-arm64-v8a” 本地人“com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86” 本地人“com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86_64” 实施“com.badlogicgames.gdx:gdx-ai:$aiVersion” 实施“com.badlogicgames.gdx:gdx-bullet:$gdxVersion” 本地人“com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-armeabi” 本地人“com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-armeabi-v7a” 本地人“com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-arm64-v8a” 本地人“com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-x86” 本地人“com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-x86_64” } } 项目(“:核心”){ 应用插件:“java” 依赖{ 实施“com.badlogicgames.gdx:gdx:$gdxVersion” 实施“com.badlogicgames.gdx:gdx-box2d:$gdxVersion” 实施“com.badlogicgames.gdx:gdx-ai:$aiVersion” 实现“io.socket:socket.io-client:1.0.0” 实现文件(“build/libs/kryonet-2.21-all.jar”) 实施“com.badlogicgames.gdx:gdx-bullet:$gdxVersion” } } 项目(“:ios”){ 应用插件:“java” 应用插件:“robovm” 依赖{ 实施项目(“:核心”) 实施“com.mobidevelop.robovm:robovm-rt:$roboVMVersion” 实现“com.mobidevelop.robovm:robovm-cocoatouch:$roboVMVersion” 实施“com.badlogicgames.gdx:gdx-backend-robovm:$gdxVersion” 实施“com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios” 实施“com.badlogicgames.gdx:gdx-box2d:$gdxVersion” 实施“com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-ios” 实施“com.badlogicgames.gdx:gdx-bullet:$gdxVersion” 实施“com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-ios” 实现文件(“build/libs/kryonet-2.21-all.jar”) } } 项目(“:桌面”){ 应用插件:“java” 依赖{ 实施项目(“:核心”) 实施“com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion” 实施“com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop” 实施“com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop” 实施“com.badlogicgames.gdx:gdx-bullet-platform:1.9.1:natives-desktop” } } 项目(“:html”){ 应用插件:“gwt” 应用插件:“战争” 依赖{ 实施项目(“:核心”) 实施“com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion” 实施“com.badlogicgames.gdx:gdx:$gdxVersion:sources” 实施“com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion:sources” 实施“com.badlogicgames.gdx:gdx-box2d:$gdxVersion:sources” 实施“com.badlogicgames.gdx:gdx-box2d-gwt:$gdxVersion:sources” 实施“com.badlogicgames.gdx:gdx-ai:$aiVersion:sources” } } 任务.eclipse.doLast { 删除“.project” }`

我如何使用项目符号 1.9.8 使用 libgdx 创建 ipa 而不会在 libgdx 中编译出错?。

【问题讨论】:

    标签: java ios libgdx ipa robovm


    【解决方案1】:

    将 libGDX 更新到 1.9.9 版似乎可以解决该错误。

    另外,我在 1.9.8 上遇到了同样的错误。我认为这是由于 ios.iml 配置文件的更新。我不得不从这个文件中删除 Android facet 部分,因为另一个构建错误,因此(我的猜测)禁用了对 iOS 目标的不同架构依赖。

    另一个解决方案是删除子弹物理引擎依赖项。错误来源。简单地从 iOS 中删除该行:

    project(":ios") {
        apply plugin: "java"
        apply plugin: "robovm"
    
        dependencies {
            implementation project(":core")
            implementation "com.mobidevelop.robovm:robovm-rt:$roboVMVersion"
            implementation "com.mobidevelop.robovm:robovm-cocoatouch:$roboVMVersion"
            implementation "com.badlogicgames.gdx:gdx-backend-robovm:$gdxVersion"
            implementation "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios"
            //remove this line
            //implementation "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-ios"
        }
    }
    

    当然,如果您实际使用子弹引擎,这将毫无意义。

    【讨论】:

      猜你喜欢
      • 2015-11-26
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多