30

I am trying to upload a new build to TestFlight, but Application Loader gives me the following error:

ERROR ITMS-90502: "Invalid Bundle. Apps that only contain the arm64 slice must also have 'arm64' in the list of UIRequiredDeviceCapabilities in Info.plist."

If I add arm64 to UIRequiredDeviceCapabilities as suggested, I get another error:

ERROR ITMS-90098: "This bundle is invalid. The key UIRequiredDeviceCapabilities contains value 'arm64' which is incompatible with the MinimumOSVersion value of '8.0'."

I am not sure what causes this problem and why bundle only contains arm64 architecture. I checked project settings and they seem to include other architectures. ARCHS (Architectures) is set to Standard architectures (armv7, arm64), VALID_ARCHS (Valid Architectures) is set to arm64 armv7 armv7s.

It's been a while since I tried to upload the last build (~1 month). Did one of the updates from Apple break something? (I definitely haven't touched architecture settings since then, the only thing added was UIBackgroundModes = remote-notification). Or is there some other reason for this error?

Daniel Storm
  • 18,301
  • 9
  • 84
  • 152
Andrii Chernenko
  • 9,873
  • 7
  • 71
  • 89

13 Answers13

39

Never mind, found the problem. The configuration which I used to build archive had Build Active Architecture Only set to Yes. Silly me.

Andrii Chernenko
  • 9,873
  • 7
  • 71
  • 89
  • Hi, so we should set `Build Active Architecture Only` to `NO` for `Debug` and `Release`? – KarenAnne Jun 19 '15 at 10:41
  • Also, what is the architecture in your Info.plist UIRequiredDeviceCapabilities? – KarenAnne Jun 19 '15 at 10:42
  • 2
    @KarenAnne `Build Active Architecture Only` should be set in the build settings of the target you use to create archive. I guess that should be Release. `UIRequiredDeviceCapabilities` contains a single item, `armv7`. – Andrii Chernenko Jun 19 '15 at 12:42
  • Build Active Architecture for Debug is YES, and for Release is NO? – KarenAnne Jun 22 '15 at 02:10
  • @deville, what do you think of this one http://stackoverflow.com/questions/31973890/submitting-to-the-app-store-using-xcode – ErickES7 Aug 30 '15 at 02:58
  • 2
    In the case of Xamarin Studio 6.0, I had to uncheck `Enable device-specific builds` in the `iOS Build` preference pane. – William Grand Apr 18 '16 at 20:37
13

I hit the same error a few months after this posting. I found this posting on Google and, in case others come here, by the same path, there is another reason for the ITMS 90502 error (consensus is that this is a new requirement in the late-Oct/early-Nov 2015 timeframe).

If you include other frameworks in your app, they must ALSO contain the 'arm64' required device capability. That is, this must be in the Info.plist:

<key>UIRequiredDeviceCapabilities</key>
<array>
    <string>arm64</string>
</array>
Ramsay Consulting
  • 593
  • 1
  • 5
  • 14
10

If you are using cocoapods, you have to add the key 'UIRequiredDeviceCapabilities' to every dependency. Include this post install to your Podfile.

post_install do |installer|
    installer.pods_project.targets.each do |target|
        plist_buddy = "/usr/libexec/PlistBuddy"
        plist = "Pods/Target Support Files/#{target}/Info.plist"

        puts "Add armv7 to #{target} to make it pass iTC verification."

        `#{plist_buddy} -c "Add UIRequiredDeviceCapabilities array" "#{plist}"`
        `#{plist_buddy} -c "Add UIRequiredDeviceCapabilities:0 string armv7" "#{plist}"`
    end
end
John Paul Manoza
  • 1,735
  • 25
  • 22
  • 2
    Found that this solution worked for my case today, but I needed to replace arm7 with arm64. iTunes Connect was accepting my app just fine up until tonight, but then I got the above error and this snippet with the architecture substitution fixed the error. – smithco Feb 22 '18 at 05:37
8

If your target's deployment target is at iOS 11.0 or later you must have arm64 in your info.plist. Creating a new project in Xcode 9.x only adds armv7 under UIRequiredDeviceCapabilities, seems to be a bug.

Update your info.plist's UIRequiredDeviceCapabilities key to:

<key>UIRequiredDeviceCapabilities</key>
<array>
    <string>arm64</string>
</array>
Daniel Storm
  • 18,301
  • 9
  • 84
  • 152
6

I solved this ERROR-ITMS 90502 error.

If you Active Architecture Only Set To YES, but Same error show up.

However if your phone can connect to mac, disconnect it and upload.

In my case, solved!

glautrou
  • 3,140
  • 2
  • 29
  • 34
June-Gyu Bae
  • 61
  • 1
  • 1
2

I had this issue using Xamarin and ended up on this question.

For me the solution was to ensure that no Debug Symbols are included when building the application.

In Xamarin Studio, right-click on the project -> options. Choose "Compiler" under the "Build" heading. Check the "Debug information" drop-down.

Clean, rebuild, repackage, and upload again, and it worked.

GregHNZ
  • 7,946
  • 1
  • 28
  • 30
2

Another way:

1 - Disconnect any test device from your mac

2 - Archive.

The problem you mention, only happened when I tried to archive while my iPhone was connected.

If you archive while disconnected this problem will go away.

Catarino
  • 233
  • 2
  • 8
2

Just if there's anyone else with this problem lately when building for iOS 11 and up, this key is needed for the app and it is also needed for any extensions you have in the app. However it is not necessary to have it in any frameworks.

Daniel Tull
  • 1,736
  • 13
  • 19
1

In my case i had a: ERROR ITMS-90503 With arm64 alone (without 'only') in UIRequiredDeviceCapabilities key

And: Archiving in "Debug" mode worked for me

  • It's not an explanation. May have something to do with the default value of "Build for active architecture only" in Debug defaulted to "Yes", in Release to "No". I.e. probably you built 64-bit-only bundle. – Victor Sergienko Apr 15 '19 at 15:53
1

this works for me..

<key>UIRequiredDeviceCapabilities</key>
<array>
    <string>armv7</string>
</array>
MAhipal Singh
  • 4,745
  • 1
  • 42
  • 57
1

I had the same issue with Xamarin

all I did to fix the issue change build type to Release| iPhone while you connect real device

hope this help

Mina Fawzy
  • 20,852
  • 17
  • 133
  • 156
0

In my case, what solved this in Visual Studio for Mac, was to set ARMv7 + ARM64 in the ios options panel.

Hugo S.
  • 1
  • 1
0

Select Generic iOS Device in the devices/simulators list before archiving

Gaby Fitcal
  • 1,814
  • 1
  • 17
  • 28