Application Loader: ERROR ITMS-90502

18,894

Solution 1

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

Solution 2

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>

Solution 3

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

Solution 4

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>

Solution 5

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!

Share:
18,894
Andrii Chernenko
Author by

Andrii Chernenko

Updated on June 25, 2022

Comments

  • Andrii Chernenko
    Andrii Chernenko almost 2 years

    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?