— iOS Development, App Store, Xcode, Info.plist — 1 min read
One common issue encountered during app submission is the error ITMS-90109. This error indicates that the bundle is invalid because the UIRequiredDeviceCapabilities
key in the Info.plist
file contains values that could prevent the application from running on devices supported by previous versions. Here’s a comprehensive guide on how to resolve this issue.
The error message reads:
1ITMS-90109: This bundle is invalid - The key UIRequiredDeviceCapabilities in the Info.plist may not contain values that would prevent this application from running on devices that were supported by previous versions. Refer to QA1623 for additional information: https://developer.apple.com/library/ios/#qa/qa1623/_index.html
UIRequiredDeviceCapabilities
?The UIRequiredDeviceCapabilities
key in the Info.plist
file specifies the hardware and software features your app requires to run. For instance, if your app requires a gyroscope, you would include the gyroscope
key in this dictionary. This ensures that only devices with these capabilities can download and run the app.
This error occurs when you specify requirements in UIRequiredDeviceCapabilities
that are not available on devices supported by previous versions of your app. This essentially restricts the app’s compatibility, leading to a rejection from the App Store.
To fix the ITMS-90109 error, follow these steps:
Info.plist
FileOpen your project in Xcode and navigate to the Info.plist
file. Locate the UIRequiredDeviceCapabilities
key.
Check the values listed under UIRequiredDeviceCapabilities
. Evaluate each capability to determine whether it is necessary and if it might restrict the app from running on older devices.
Remove any capabilities that are not essential for your app’s core functionality. For example, if you have arm64
listed but your app can run on older 32-bit devices, consider removing this requirement unless absolutely necessary.
Before:
1<key>UIRequiredDeviceCapabilities</key>2<array>3 <string>arm64</string>4 <string>gps</string>5 <string>gyroscope</string>6</array>
After:
1<key>UIRequiredDeviceCapabilities</key>2<array>3 <string>gps</string>4 <string>gyroscope</string>5</array>
If your app includes features that only some users need, consider making these features optional or providing alternative functionality. This approach can broaden your app’s compatibility.
Test your app on various devices and iOS versions to ensure it functions correctly without the removed capabilities.
Before resubmitting, validate your app with Xcode’s validation tool to ensure there are no further issues. In Xcode:
Once you’ve made the necessary adjustments and validated your app, resubmit it to the App Store.
Refer to the official QA1623 document provided by Apple for more detailed guidelines and examples regarding UIRequiredDeviceCapabilities
.