I have received a rejected from Apple Store. I did not have a UIRequiredDeviceCapabilities set.My app
can both install on the iphone and ipad.So I feel uncertain what can i do.
We were unable to install the app on iPhone and iPad. The UIRequiredDeviceCapabilities key in the Info.plist is set in such a way that the app will not install.
Next Steps
To resolve this issue, please check the UIRequiredDeviceCapabilities key to verify that it contains only the attributes required for your app features or the attributes that must not be present on the device. Attributes specified by a dictionary should be set to true if they are required and false if they must not be present on the device.
Check your info.plist of your target.
If you are supporting you project for iPhone 4s and onward then include armv7 and Armv7s supported from iPhone 5, 5c, 5S, iPod touch-5, iPad-4, iPad Air. Armv7s designed for A6 processor. Supporting from IOS6+. It's also support for 64-bit coding but processing get slow in those devices with armv7s instruction set.. Arm64 devices are from Iphone 5s, iPad Air. That's related to A7 Processor
Related
Will adding to the UIRequiredDeviceCapabilities "armv7s" and "armv8" restrict users to install my app from AppStore on devices other than iPhone 5/5s/5c?
I have found these articles very useful:
UIRequiredDeviceCapabilities and Device Compatibility Matrix (is there any up-to-date info from Apple about device capabilities?)
List of iOS devices
I've also searched all over SO and there was no full/correct answer to my question. Maybe except this one: Limit the app working on iPhone5 only?, but it should(?) work only for iPhone 5 and iPhone 5C, not iPhone 5S.
I have found this Important note:
The store rejects a binary that supports only armv7s. If armv7s is included in the Valid Architectures list, armv7 must also be included.
From App Distribution Guide.
Specifying armv7s in your Info.plist's UIRequiredDeviceCapabilities should be enough as it means it requires compatibility with the armv7s instruction set, which in turn is compatible with arm64 and any future Ax processor.
Also it would be interesting to know why you need to restrict your App in the first place.
Up to date Apple capabilities list here. There is no official way to cut requirement between iPhone 4 and 5 besides armv7s.
Also there is a new good reason to require iPhone 5+ devices: WatchKit apps that have no meaningful iPhone parent app. For instance a game for Apple Watch. One should prevent devices that can not possibly work with the watch from downloading the App.
From this article: How to drop support for 4S/5/5S and accomplish what is said in this article without being rejected?
"The store rejects a binary that supports only armv7s. If armv7s is included in the Valid Architectures list, armv7 must also be included."
I'm about to release a game, and I've decided the cut-off (for performance and aspect ratio reasons) is the iphone 5 on the bottom end. So no iphone 4s.
The only way to restrict devices is by using combinations of requirements in the UIRequredDeviceCapabilities key of info.plist.
Requiring armv7s restricts the right devices, based on this tool:
http://28byteslater.com/ios-compatibility/?exclude=&require=9#chart
BUT... there are conflicting reports on whether this is will work, and be accepted by the app store. Some articles say that if you require armv7s you HAVE to require armv7 as well. Does anyone actually tried submitting an app with an armv7s requirement to prevent iphone 4s downloads?
So we're trying to release our app on iOS, but an old version supported devices AIR no longer supports and we're getting an error.
I've spoken to Apple and the fix for this is to limit our app to iOS 7 or above, which we've done with InfoAdditions. We still get the error because our AIR app still includes armv7 and opengles 2.0 as requirements in the Info.plist file.
Is there a way we can remove these UIRequiredDeviceCapabilities from the info.plist file? The app will still be limited to devices that support it due to the iOS 7 requirement we have added. From where I'm standing, it looks like we'd have to build the .ipa with AIR, edit the Info.plist and then re-package, but this has us completely lost.
Will adding to the UIRequiredDeviceCapabilities "armv7s" and "armv8" restrict users to install my app from AppStore on devices other than iPhone 5/5s/5c?
I have found these articles very useful:
UIRequiredDeviceCapabilities and Device Compatibility Matrix (is there any up-to-date info from Apple about device capabilities?)
List of iOS devices
I've also searched all over SO and there was no full/correct answer to my question. Maybe except this one: Limit the app working on iPhone5 only?, but it should(?) work only for iPhone 5 and iPhone 5C, not iPhone 5S.
I have found this Important note:
The store rejects a binary that supports only armv7s. If armv7s is included in the Valid Architectures list, armv7 must also be included.
From App Distribution Guide.
Specifying armv7s in your Info.plist's UIRequiredDeviceCapabilities should be enough as it means it requires compatibility with the armv7s instruction set, which in turn is compatible with arm64 and any future Ax processor.
Also it would be interesting to know why you need to restrict your App in the first place.
Up to date Apple capabilities list here. There is no official way to cut requirement between iPhone 4 and 5 besides armv7s.
Also there is a new good reason to require iPhone 5+ devices: WatchKit apps that have no meaningful iPhone parent app. For instance a game for Apple Watch. One should prevent devices that can not possibly work with the watch from downloading the App.
From this article: How to drop support for 4S/5/5S and accomplish what is said in this article without being rejected?
"The store rejects a binary that supports only armv7s. If armv7s is included in the Valid Architectures list, armv7 must also be included."
I have a third party library (ZBar) which complains about the armv7 arch when I build the project (in Terminal, using xcodebuild), and I have to set the valid architecture in the build settings to armv6 (only).
The question: Will an app set to armv6 even run on post iPhone 3GS devices?
Yes, ARMv6 code will run on an ARMv7 device, but not the other way around. You can test this by downloading an app that hasn't been updated in a long time onto a brand new iPhone 5, and it should run perfectly fine (while not being retina-optimized).
This is because the two instruction sets are backwards-compatible, but not forwards compatible. However, ARMv6 now is not that much of an issue, because of Xcode 4.5's limitation to be unable to compile ARMv6 code.
Note that the iPhone 3GS is actually the first of the iOS device list that uses ARMv7, which can be observed by the fact that it's the earliest device that can run iOS 6 (which requires ARMv7, the only exception being the first generation iPad), so as long as you are targeting iOS 4.3+, you don't need to support ARMv6 at all.
Seeing as the only 4 devices that are ARMv6 are the (iPhone 2G, iPhone 3G, iPod, iPod 2G). All of those devices should have been replaced by now, and it isn't our fault if they aren't.