【问题标题】:Build Failure for iOS on Unity/Xcode在 Unity/Xcode 上构建 iOS 失败
【发布时间】:2023-05-18 09:00:01
【问题描述】:

我目前正在尝试设置一个 Unity 项目,该项目为 VR 设置为 iOS 的 AR。我正在使用 AR Foundation 插件 + ARKit/ARCore 插件。尝试使用 Xcode 构建它并在我的 iPhone 上运行,但我遇到了这些错误。

尝试更改一堆播放器设置。

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_AREnvironmentProbeAnchor", referenced from:
      objc-class-ref in UnityARKit.a(ARKitXREnvironmentProbeProvider.o)
  "_OBJC_CLASS_$_ARCollaborationData", referenced from:
      objc-class-ref in UnityARKit.a(ARKitXRSessionProvider.o)
  "___isPlatformVersionAtLeast", referenced from:
      _UnityARKit_Camera_AcquireConfigurations in UnityARKit.a(ARKitXRCameraProvider.o)
      _UnityARKit_Camera_TryGetCurrentConfiguration in UnityARKit.a(ARKitXRCameraProvider.o)
      _UnityARKit_Camera_TrySetCurrentConfiguration in UnityARKit.a(ARKitXRCameraProvider.o)
      (anonymous namespace)::ARKitXRCameraProvider::ResetLocalConfigurationState() in UnityARKit.a(ARKitXRCameraProvider.o)
      (anonymous namespace)::ARKitXRCameraProvider::HandleARKitEvent(UnityARKitEvent, void*, int) in UnityARKit.a(ARKitXRCameraProvider.o)
      _UnityARKit_EnvironmentProbeProvider_Construct in UnityARKit.a(ARKitXREnvironmentProbeWrapper.o)
      _UnityARKit_EnvironmentProbeProvider_Destruct in UnityARKit.a(ARKitXREnvironmentProbeWrapper.o)
      ...
  "_OBJC_CLASS_$_ARBodyAnchor", referenced from:
      objc-class-ref in UnityARKit.a(ARKitXRHumanBodyProvider.o)
  "_OBJC_CLASS_$_ARImageTrackingConfiguration", referenced from:
      objc-class-ref in UnityARKit.a(ARKitXRImageTrackingProvider.o)
  "_OBJC_CLASS_$_ARBodyTrackingConfiguration", referenced from:
      objc-class-ref in UnityARKit.a(ARKitXRHumanBodyProvider.o)
  "_OBJC_CLASS_$_ARImageAnchor", referenced from:
      objc-class-ref in UnityARKit.a(ARKitXRImageTrackingProvider.o)
  "_OBJC_CLASS_$_ARSkeletonDefinition", referenced from:
      objc-class-ref in UnityARKit.a(ARKitXRHumanBodyProvider.o)
  "_OBJC_CLASS_$_ARObjectAnchor", referenced from:
      objc-class-ref in UnityARKit.a(ARKitXRObjectTrackingProvider.o)
  "_OBJC_CLASS_$_ARReferenceImage", referenced from:
      objc-class-ref in UnityARKit.a(ARKitXRImageTrackingProvider.o)
  "_OBJC_CLASS_$_ARMatteGenerator", referenced from:
      objc-class-ref in UnityARKit.a(ARKitXRHumanBodyProvider.o)
  "_OBJC_CLASS_$_ARReferenceObject", referenced from:
      objc-class-ref in UnityARKit.a(ARKitXRObjectTrackingProvider.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

【问题讨论】:

  • 也许在这里提出了类似的错误问题。 link

标签: xcode unity3d augmented-reality setup-project


【解决方案1】:

我在我的项目中解决了这个问题。 (感谢@saif 提供Unity forum link

罪魁祸首是 Unity 中的错误 ARkit XR 插件版本,它试图使用 Xcode 中更高版本的 AR Kit 中的功能,从而给出了与此处相关的错误。

我设法在我的设置中开始工作(对于 2018.4.x 中的那些)

  • 团结 2018.4.5f1
  • AR Foundation 1.5.0-preview.6
  • AR 子系统 2.2.0-preview.3
  • ARKit XR 插件 2.1.1(从 2.1.0-preview.5 更新)
  • XCode 10.3(构建到 iOS 12.4 设备)

如果您使用 AR Foundation 2.x 运行 Unity 2019.x,您可能希望找到正确的 ARKit XR 插件,如 here in the AR Foundation samples on Github 所示

【讨论】:

    【解决方案2】:

    如果您使用的是最新的 Unity ARKit 包,它需要 XCode 11 和 iOS 13,因为它们支持 ARKit 3。我遇到了类似的问题,并且让 XCode 和 iOS 的测试版运行起来。

    【讨论】: