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?
Never mind, found the problem. The configuration which I used to build archive had Build Active Architecture Only
set to Yes
. Silly me.
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>
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With