首页 > 解决方案 > 在 Unity/Xcode 上构建 iOS 失败

问题描述

我目前正在尝试建立一个 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)

标签: xcodeunity3daugmented-realitysetup-project

解决方案


我在我的项目中解决了这个问题。(感谢@saif 提供Unity 论坛链接

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

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

  • 统一2018.4.5f1
  • AR 基础 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,您可能希望在 Github 上的 AR Foundation 示例中找到正确的 ARKit XR 插件


推荐阅读