91

I sent an app yesterday for review, with no problem. I then realized that I had a very little fix to do (changing the max zoom level of a map from 19 to 18, nothing else), so I removed the binary from iTunes Connect, and tried to resubmit.

Now I'm having this warning :

warning_xcode

I don't understand why, as my architectures are :

  • architectures : armv7
  • valid architectures : armv6, armv7, armv7s, arm64

The app runs fine in the simulator. If I try to use the standard architectures (armv7, arm64) as recommended in the warning, then the app won't build and I get :

  • Undefined symbols for architecture x86_64
  • ld: symbol(s) not found for architecture x86_64

I'm using the lib route-me, and I set the same architecture settings.

Brian Webster
  • 27,545
  • 47
  • 143
  • 218
Tim Autin
  • 5,663
  • 5
  • 40
  • 65

12 Answers12

106

Use "Standard architectures" like this:

  • Architecture: "Standard architectures" arm7, arm64
  • Valid Architectures: "arm64" , armv7...
  • Build Active Architecture Only - NO (specially... if your connected device is not arm64 compatible)

like this:

enter image description here

  • Additionally, unplugging iphones and ipads from the mac has been known to help, especially if they are 32-bit versions.
Brian Webster
  • 27,545
  • 47
  • 143
  • 218
TonyMkenu
  • 7,367
  • 3
  • 25
  • 47
  • 2
    Thanks for your answer, but as stated in my question I already tried that, and the project does not compile with this settings :/ – Tim Autin Nov 07 '14 at 09:10
  • 3
    @Tim, yes me too had `armv7 and arm64` in Architechtures. Still, missing 64-bit support warning occurs while validating the app for submissiion. – Nazik Nov 07 '14 at 09:31
  • @NAZIK do you have arm64 in both lines (Architectures and Valid Architectures)? I had the same error and this was the solution – TonyMkenu Nov 07 '14 at 09:35
  • @Tim try to clean your DerivedData and check your latest external framework or SDK if they have 64 bit support – TonyMkenu Nov 07 '14 at 09:38
  • 3
    Also, make sure your device is NOT connected when archiving the final build. See @powertoold answer bellow (https://stackoverflow.com/a/26848865/1715004) – Filipe Borges Jul 06 '15 at 20:08
  • Thanks bro..... Its simply great..... Has solved problem that was pending from long time.... – Tejas Jul 29 '15 at 06:39
  • Additionally, unplugging iphones and ipads from the mac has been known to help, especially if they are 32-bit versions. ... Most helpful line for me. – bisma Jun 15 '16 at 08:56
68

After confirming the correct architectures, make sure your device is NOT connected to your computer when ARCHIVING the final build to submit to the App Store.

The reason this warning appears is because the DEVICE you have connected is probably not arm64 compatible.

powertoold
  • 1,553
  • 13
  • 19
  • 4
    Hats off! :D you've saved my time – Vaibhav Limbani Nov 15 '14 at 11:30
  • 1
    Big help!! Saved me a lot of time on this one. Good tip for upgrading old apps. – harry Jan 13 '15 at 08:03
  • I believe you can keep your non-64bit devices connected if you change the build setting `Build Active Architecture Only` to `No`. This will force xcode to build the 64bit binary regardless of what device is connected. – jxmallett Feb 06 '15 at 06:49
  • 3
    In addition to @jxmallett 's answer, make sure your Scheme configuration Archive is set to Release, in which the `Build Active Architecture` is set to `No`. [Set Archive Scheme](http://stackoverflow.com/a/30972570/1635363) – KarenAnne Jun 22 '15 at 05:30
  • 1
    FYI I had to unplug my device, switch to simulator and then switch back to "iOS Device" for this to work. – nwkeeley Sep 01 '15 at 10:21
  • I also had to do a `Product -> Clean Build Folder..` step before this worked – Kevin Qi Mar 01 '16 at 23:23
37

As Tony wrote, it's important to have in both lines those settings. Since my (and obviously your) project was created yet before arm64 was added to standard, it is not reflected in "Valid Architectures" even if it is shown as Standard.

What I did:

  • I went to Project (vs. Target) configuration
  • Typed "arm64" in the Valid Architectures (it's automatically reflected in targets and schemas

After clean/build I even get some warnings about improper conversion of float to CGFloat, etc., so the settings obviously applied.

The validation warning disappeared too!

enter image description here

Nick Entin
  • 1,017
  • 8
  • 17
27

Unplug your physical device from Mac. In XCode on device list choose iOS Device and create Archive again. It worked for me.

hrast
  • 313
  • 3
  • 8
5

Today I solve that problem with the following steps:

Building Settings:

Architectures: Standard architectures(arm7,arm64) - $(ARCH_STANDARD)

Valid Architectures: armv7 armv7s arm64

  1. Clean and build your app with the iPhone connected
  2. Disconnect your iPhone and check the top bar if is in "iOS Device"
  3. Archive
  4. Validate and Submit
Leonel Folmer
  • 213
  • 2
  • 8
3

Just Create a New Project using latest xCode version and find the Build settings. The new project created using latest version have 64 support by default.

enter image description here

Kirit Vaghela
  • 12,245
  • 4
  • 72
  • 79
2

Okay this was insane. I tried every single answer. But it worked only when I placed arm64 before armv7 and armv7s in Valid Architectures.

P.S. : xcode version : 7.2

prad
  • 874
  • 1
  • 9
  • 19
  • 1
    Yup. only then and only after connecting a device did the actual log of errors show. Then some lines of code which are deprecated and required (red) fixing and some issues with the RSA lib showed up. – maxweber Apr 22 '16 at 23:45
1

I solved the problem by changing,

Architectures: arm7,arm64

Valid architecture: arm7,arm64

Build active architecture only : Yes

1

I submitted success by config as the image: enter image description here

(Archived with real device)

Bkillnest
  • 702
  • 8
  • 16
1

Got rid of every warning. Went through everything over and over. Found the one word answer here above.

"Build Active Architecture Only - NO (specially... if your connected device is not arm64 compatible)"

My iPad is not 64 bit. Put in NO for Build Active Architecture and my submission worked!

Mountain Man
  • 242
  • 2
  • 10
0

Change your iOS development target to at least 5.1.1 or alternatively delete the standard architectures setting and re-apply it. You might have seen a warning that arm64 is not compatible with your build target. On the overview page, check both the build and target "deployment target" settings. In my case, the target was 6.0, but the project was 5.0.

Also, check "Valid Architectures" in both your target and your project. I had the right settings on the project but not on the target. After this, it worked for me.

Switch between project/target on the overview page in the top left corner of the box.

user1122069
  • 1,579
  • 1
  • 21
  • 43
  • You really mean 5.1.1? 5.1 isn't recent enough? – Dirk Feb 02 '15 at 14:43
  • It has been a long time. I don't know or remember the logic to this. Just do the steps and something may get back in its proper place. Fiddle with the architectures and all pages mentioned. – user1122069 Feb 03 '15 at 15:21
0

Please check Build Active Architecture option. Set it to NO. It works for me.