Technical Q&A QA1910

Application unavailable for download on older devices

Q:  Why can't users install my application on an iPhone 4s, iPhone 5, or iPhone 5c?

A: The App Store prevents applications which include the arm64 required device capability from being installed on devices that do not support the arm64 instruction set. Devices that run recent versions of iOS but do not support the arm64 instruction set include:

Users browsing the App Store on these devices will receive an error if they try to download your app.

Checking a Build's Required Device Capabilities

iTunes Connect lists the supported architectures and required device capabilities for each version of your app under the Build Details. See Viewing Build Details in the iTunes Connect Developer Guide.

Figure 1  Supported architectures and required device capabilities are listed under the Device Requirements section.

If arm64 appears under the Required Capabilities then your app is prevented from being installed on devices that do not support the arm64 instruction set.

Adding Support for armv7

In order to be eligible for installation on the devices listed at the beginning of this document, your application must be compiled for armv7 (in addition to arm64) and must not include the arm64 required device capability.

Remove the arm64 required device capability.

Required device capabilities are specified in the application's information property list, as an array of strings associated with the Required device capabilities (UIRequiredDeviceCapabilities) key. Open the Info pane for your application's target and expand the Required device capabilities property, as shown in Figure 2. Locate the entry with arm64 in the value column and remove it.

Figure 2  You can view and edit required device capabilities in the Info pane for your application target.

Configure your project to build with the standard architectures

The Architectures, Valid Architectures, and Build Active Architectures Only build settings determine which architectures the target is compiled for.

  • The Architectures build setting should be set to Standard Architectures, which is the default.

  • The Valid Architectures list should contain armv7, armv7s and arm64, which is the default.

  • The Build Active Architectures Only build setting should be set to NO for the Release configuration.

Open the Build Settings pane for your application's target. Remove any project or target overrides for the Architectures, Valid Architectures, and Build Active Architectures Only build settings.

Figure 3  The Levels view makes it easy to spot where a build setting may be overridden.

If your application is dependent on one or more frameworks, check the build settings for their targets as well.

Submit a New Build

Build a new version of your application and upload it to iTunes Connect. Confirm that the details page for this new build lists armv7 and arm64 under Supported Architectures and that arm64 is not listed under Required Capabilities. Finally, submit your build for review.

For more information about device capabilities, refer to the iOS Device Compatibility Reference.



Document Revision History


DateNotes
2016-01-19

New document that discusses project configurations that restrict the availability of an app on devices that do not support the arm64 instruction set.