iOS package Undefined symbols for architecture armv7

i got this error .

Undefined symbols for architecture armv7:
UnrealBuildTool:
UnrealBuildTool: “OBJC_CLASS$_MTLFunctionConstantValues”, referenced from:
UnrealBuildTool:
UnrealBuildTool: objc-class-ref in UE4-MetalRHI.a(Module.MetalRHI.1_of_2.cpp.o)
UnrealBuildTool:
UnrealBuildTool: ld: symbol(s) not found for architecture armv7
UnrealBuildTool:
UnrealBuildTool: clang: error: linker command failed with exit code 1 (use -v to see invocation)[link text][1]

I try to package a fresh C++ project and i get the same errorlink text

All of this happen after i move to 4.15

I package a empty project in 4.14 with succes[link text]1

What should be wrong with my 4.15 version ?

  1. I dont know what this file have C:\Program Files\Epic Games\UE_4.15\Engine\Binaries\IOS\UE4-MetalRHI.a
  2. but i copy it from 4.14 C:\Program Files (x86)\Epic Games\4.14\Engine\Binaries\IOS\UE4-MetalRHI.a
  3. and now can build, maybe is a bug, someone report it .

the problem isn’t fixed, when i try to open the app from iphone, doesn’t open,stay in background :frowning:
@Samantha Sutton can you help me around with this .

  • All my problems are with 4.15 version , is not testet for iOS packaging ?
  • I have no errors on iphone, because app isnt crash,just put in background .
  • and i must mention, i try Launcher Package.
  • In this moment is package normally .

It succesfull build .
https://drive.google.com/open?id=0B-1KdpwKpZXkWkhnNGhzS0F4Vk0
Video - - YouTube
Ios Backup Documents - https://drive.google.com/open?id=0B-1KdpwKpZXkQ3FiSHdpUXRlcTA
When i open the app, it’s stay in background

I think this is related to this other open thread: Is it possible to build arm64 for iOS from non source build editor? - Mobile - Epic Developer Community Forums

The issue appears to be trying to build a C++ project for both armv7 and arm64. If you pick just arm64, then it will build just fine.

I was able to take a build with arm64 only, metal only; upload it to iTunes Connect and deploy through TestFlight without any issues.

Apple’s docs appear to support that you can ship with arm64 support only. This lines up with all devices that support Metal as well. So you get to drop OpenGLES (which is nice).

The current arm64 devices are: the (but not the 5C) or newer, or newer, and or newer.

My build was for developement, not shipping , i want to know with the same setting,i’m able to build in 4.14.3 but not in 4.15 :frowning: .
I did’nt try to drop OpenGLES . to see what happen , but that should be the problem, why i can’t package for iOS, arm6, amrv7 or armv7s ,because i try all :frowning: .

Hello AnaroGames,

Have you tried what JonathanADaley mentioned? Even if it doesn’t seem like it would be the issue, I woulds suggest giving it a try if it has worked for other users.

Sience i’ve move to UE 4.15 , i’ve packege 106 times .

  1. arm64
  2. armv7
  3. amrv7s
  4. arm64+armv7
  5. arm64+armv7s
  6. With OpenGLES and without OpenGLES
  7. with empty project and with my own project
  8. Every time i package i delete alll files from MAC and all files Intermediate and Saved .
  9. In 4.14.3 i’m able to package empty or my own project with armv7 and armv7s, if i want to “upgrade”, i can’t .
  10. I can’t package any project for iOS in 4.15 version.
  11. To sucessfull package a project for iOS in 4.15v. was to change UE4-MetalRHI.a from 4.14 version, but i can’t open my game .
  12. In MAC i use Xcode 7.2 and Yosemite .
  13. I Unnistall 4.15 version and Reinstalled twice.
  14. And the question, what JonathanADaley say and i missed ?

And the problem is , i can’t install new version than 7.2 in Yosemite :frowning:

You originally said “I did’nt try to drop OpenGLES . to see what happen , but that should be the problem” so I assumed you hadn’t tried that. You also didn’t previously mention that you tried building exclusively for arm64.

As for what you’ve tried, thank you for listing it out. As for what could be the problem, it could be related to your Mac and/or Xcode version. We currently only support the latest versions which would include Sierra and Xcode 8.2.1. Unfortunately, while it doesn’t mean that it won’t work with older versions, we can’t guarantee that it will.

Definitely there is a bug. I have got a same issue… I use xcode 7.2 too

I was able to make an armv7, arm64 build today without any issues. It runs on an iPhone 7 Plus just fine. I’m currently working on getting an iPhone 5 updated to test on that; I’ll post back when I’ve tested on the older iPhone.

I’m developing on macOS Sierra 10.12.3, and am using Xcode 8.2.1.

Another thing to note: I had initially had OpenGL ES support removed when I was building for armv7; which from my understanding was I was building for Metal only, but according to [Apple’s Device Compatibility matrix][1], armv7 devices don’t support Metal. So it’s maybe possible to make a build that’s technically invalid; as in it won’t be possible to run on a device? Though I admit this may be an entirely separate issue…

Here’s the build settings I used:

I’m sorry , i mexed little bit the things, but i have a list with what i try it and what not , and when i write the comment OpenGLES it was in what i already try .

  1. It should be somewhere say it : WE NOT GUARANTEE for other version of XCODE.
  2. and how indie i’m , Xcode 8.2.1 requires a Mac running macOS 10.11.5 or later, i can’t afford to change right now the laptop , so my problem i can say was fixed :slight_smile: .

After install Xcode 8.2.1 and After Upgrade to 4.15.1 i can successful package and play the game on Iphone 5

Glad you were able to package. Packaging issues are the most frustrating.