ARKit - Build error: Undefined symbols for architecture arm64 (UE4-AppleARKit.a)

I can’t seem to get ARkit to compile.
I have the XCode 9 GM build, and 4.7.1

ARkit XCode projects build without any issues but as soon as I try to build something in UE, I get this error when I try to run it on my phone:

LogPlayLevel: UnrealBuildTool: Compiling with iPhoneOS SDK 11.0
LogPlayLevel: UnrealBuildTool: Performing 1 actions (8 in parallel)
LogPlayLevel: UnrealBuildTool: [1/1] sh /Users/sjespers/Documents/Unreal Projects/MyARProject3/Binaries/IOS/MyARProject3
LogPlayLevel: UnrealBuildTool: Undefined symbols for architecture arm64:
LogPlayLevel: UnrealBuildTool: “OBJC_CLASS$_ARSessionConfiguration”, referenced from:
LogPlayLevel: UnrealBuildTool: objc-class-ref in UE4-AppleARKit.a(Module.AppleARKit.cpp.o)
LogPlayLevel: UnrealBuildTool: “OBJC_CLASS$_ARWorldTrackingSessionConfiguration”, referenced from:
LogPlayLevel: UnrealBuildTool: objc-class-ref in UE4-AppleARKit.a(Module.AppleARKit.cpp.o)
LogPlayLevel: UnrealBuildTool: ld: symbol(s) not found for architecture arm64
LogPlayLevel: UnrealBuildTool: clang: error: linker command failed with exit code 1 (use -v to see invocation)
LogPlayLevel: UnrealBuildTool: ERROR: UBT ERROR: Failed to produce item: /Users/sjespers/Documents/Unreal Projects/MyARProject3/Binaries/IOS/MyARProject3
LogPlayLevel: UnrealBuildTool: Total build time: 13.86 seconds (Local executor: 0.00 seconds)
LogPlayLevel: CommandUtils.Run: Run: Took 14.268356s to run mono, ExitCode=5
LogPlayLevel: Program.Main: ERROR: AutomationTool terminated with exception: AutomationTool.CommandUtils+CommandFailedException: Command failed (Result:5): /Users/Shared/Epic Games/UE_4.17/Engine/Binaries/DotNET/UnrealBuildTool.exe MyARProject3 IOS Development -Project="/Users/sjespers/Documents/Unreal Projects/MyARProject3/MyARProject3.uproject" “/Users/sj
espers/Documents/Unreal Projects/MyARProject3/MyARProject3.uproject” -NoUBTMakefiles -remoteini="/Users/sjespers/Documents/Unreal Projects/MyARProject3" -skipdeploy -noxge -nocreatestub -NoHotReload -ignorejunk. See logfile for details: ‘UnrealBuildTool-2017.09.14-22.37.33.txt’
LogPlayLevel: at AutomationTool.CommandUtils.RunAndLog (System.String App, System.String CommandLine, System.String Logfile, Int32 MaxSuccessCode, System.String Input, ERunOptions Options, System.Collections.Generic.Dictionary2 EnvVars, AutomationTool.SpewFilterCallbackType SpewFilterCallback) [0x00000] in <filename unknown>:0 LogPlayLevel: at AutomationTool.CommandUtils.RunAndLog (AutomationTool.CommandEnvironment Env, System.String App, System.String CommandLine, System.String LogName, Int32 MaxSuccessCode, System.String Input, ERunOptions Options, System.Collections.Generic.Dictionary2 EnvVars, AutomationTool.SpewFilterCallbackType SpewFilterCallback) [0x00000] in <filename
unknown>:0
LogPlayLevel: at AutomationTool.CommandUtils.RunUBT (AutomationTool.CommandEnvironment Env, System.String UBTExecutable, System.String CommandLine, System.String LogName, System.Collections.Generic.Dictionary2 EnvVars) [0x00000] in <filename unknown>:0 LogPlayLevel: at AutomationTool.CommandUtils.RunUBT (AutomationTool.CommandEnvironment Env, System.String UBTExecutable, UnrealBuildTool.FileReference Project, System.String Target, System.String Platform, System.String Config, System.String AdditionalArgs, System.String LogName, System.Collections.Generic.Dictionary2 EnvVars) [0x00000] in <filename unkno
wn>:0
LogPlayLevel: at AutomationTool.UE4Build.BuildWithUBT (System.String TargetName, UnrealTargetPlatform TargetPlatform, System.String Config, UnrealBuildTool.FileReference UprojectPath, Boolean ForceMonolithic, Boolean ForceNonUnity, Boolean ForceDebugInfo, Boolean ForceFlushMac, Boolean DisableXGE, System.String InAddArgs, Boolean ForceUnity, System.Collect
ions.Generic.Dictionary2 EnvVars) [0x00000] in <filename unknown>:0 LogPlayLevel: at AutomationTool.UE4Build.Build (AutomationTool.BuildAgenda Agenda, Nullable1 InDeleteBuildProducts, Boolean InUpdateVersionFiles, Boolean InForceNoXGE, Boolean InUseParallelExecutor, Boolean InForceNonUnity, Boolean InForceUnity, Boolean InShowProgress, System.Collections.Generic.Dictionary2 PlatformEnvVars, Nullable1 InChangelistNumberO
verride, System.Collections.Generic.Dictionary2 InTargetToManifest) [0x00000] in <filename unknown>:0 LogPlayLevel: at Project.Build (AutomationTool.BuildCommand Command, AutomationTool.ProjectParams Params, Int32 WorkingCL, ProjectBuildTargets TargetMask) [0x00000] in <filename unknown>:0 LogPlayLevel: at BuildCookRun.DoBuildCookRun (AutomationTool.ProjectParams Params) [0x00000] in <filename unknown>:0 LogPlayLevel: at BuildCookRun.ExecuteBuild () [0x00000] in <filename unknown>:0 LogPlayLevel: at AutomationTool.BuildCommand.Execute () [0x00000] in <filename unknown>:0 LogPlayLevel: at AutomationTool.Automation.Execute (System.Collections.Generic.List1 CommandsToExecute, System.Collections.Generic.Dictionary2 Commands) [0x00000] in <filename unknown>:0 LogPlayLevel: at AutomationTool.Automation.Process (System.String] Arguments) [0x00000] in <filename unknown>:0 LogPlayLevel: at AutomationTool.Program.MainProc (System.Object Param) [0x00000] in <filename unknown>:0 LogPlayLevel: at AutomationTool.InternalUtils.RunSingleInstance (System.Func2 Main, System.Object Param) [0x00000] in <filename unknown>:0
LogPlayLevel: at AutomationTool.Program.Main () [0x00000] in <filename unknown>:0
LogPlayLevel: Program.Main: AutomationTool exiting with ExitCode=5 (5)
LogPlayLevel: Completed Launch On Stage: Build Task, Time: 15.720904
LogPlayLevel: RunUAT ERROR: AutomationTool was unable to run successfully.
PackagingResults: Error: Launch failed! Unknown Error

Same problem with UE4.17.1 and XCode9_GM.

Same here with XCode 9 GM. Tried to roll back to the custom dev-arkit branch from github to get it working. XCode 9 GM with the latest ios binaries seem to have changed the location or name of some important ARKit classes and functions. Looks like its not going to work for now…

What should i do if I have Xcode 9 GM and download UE 4.17.1 from Epic Launcher?
I have same problem too

Anyone have an thoughts? I’m supposed to finish a proof of concept on Tuesday. :confused:

Same here, win10 project with remote building on Xcode GM and 4.17.1. Two different projects both prompting with the same error, with two different machines.

Seems like Gold Master release of Xcode breaks things up. Rerolling back to beta solved the issue with the error.

I also experienced this issue. I rolled back to the previous Xcode beta, which allows me to build, but the launch fails on devices with the iOS 11.0 release candidate. On such a device, I see an “Termination Description: DYLD, Symbol not found: OBJC_CLASS$_ARSessionConfiguration” error in the crash log. Really hoping 4.17.2 fixes these ARKit / Xcode 9 / iOS 11 issues.

Is this all related to windows or you are having issues with developing on Mac as well ?

Check up here, source version of the engine seems to have a fix for it. Got it compiled, code is in there.

https://github.com/EpicGames/UnrealEngine/commit/3beb45557bac44e4ff4e42c83d12c34e10945c9e

This other commit looks promising:
https://github.com/EpicGames/UnrealE…073330fcaee0dc
UPDATE: I am able to build using this branch, I am using XCode GM.
However, I am not able to deploy to my device iPhone 7 (iOS 11.0), this new issue appears to be separated form ARkit since I am not able to deploy even a simple empty project that does not use ARKit.

I have a iPad Pro with iOS 11 beta, the ARKit sample works fine on it; when I buy a new iPad (2017) and update it to iOS 11 release, the ARKit sample crashes when launching on it every time; how can I resolve this? Does anyone try the newest 4.18.0 preview 1?

I tried the beta. They have consolidated ARKit/Core support which is great. However, that means the project is broken because all the ARKit components no longer work. I don’t see a new sample so not sure how to fix it up yet. If anyone knows how, pipe up.

Argh… same issue here. New macbook with XCode 9 GM to a device with IOS11. Was about to try the same with 4.18 preview, but sounds like that’ll be a waste of time.

**UPDATED **-- went ahead with 4.18p1, following the updated instructions from this other thread in the IOS channel… and it works! It’s a little wacky with the scaling, and had to fix the orientation or everything was topsy turvy, but it’s working.

FYI, it looks like the 4.17.2 update fixed this issue for me. I can push to latest. Haven’t tried packing for Testflight yet.

This is indeed fixed in 4.17.2. A bunch of stuff seems to have changed in 4.18 but it also adds support for Metal2.

I should add that I was able to push to test flight successfully using 4.17.2.