I read on the internet that iOS 4.3 with armv7 is the lowest you can go if you want to support iPhone 5. So, if I want my app to run on iPhone 5, then do I need to set the deployment target as iOS 4.3 and set the architecture as armv7?
I couldn't find an official documentation for this. Could you correct this information if it's wrong?
UPDATE: I've found the answer in the Xcode 4.5 GM seed Release Notes documentation of Apple:
Changes in Xcode 4.5:
- Support removed for armv6
Xcode 4.5 and later does not support generating armv6 binaries.
- Minimum supported deployment target is iOS 4.3
The minimum supported deployment target with Xcode 4.5 or later is iOS 4.3
There doesn't seem to be any official statement on this, but it's pretty clear if you take a look at Xcode 4.5. It's also a logical step forward as last armv6 device (iPhone 3G) has been out of sale for over two years and without software updates for almost two years as well.
Note: as of posting this answer, an unofficial way to support both armv6 and armv7s has been found here: How to support both armv6 and armv7s for release build in xcode 4.5
This is only half the truth;
the other half is you can actually do combine an iOS 4.0/armv6 build into your iOS6/armv7(s) build.
This process is described here:
How to support both armv6 and armv7s for release build in xcode 4.5
Related
I want to support my app in all the older versions of iOS as well as new. In the recent Xcode versions support for armv6 is dropped. How can I build my app to support for armv6 ? Do I need to include armv7s to support all newer versions of iOS ? Is it possible to create a binary that includes support for all of the 3 architectures?
Can't be done. You either use newer versions of Xcode and get armv7/armv7s along with iOS 6.x support (and support back to iOS 4.3), or you use older versions of Xcode to get armv6/armv7 but not iOS 6.x APIs (but support back to iOS 3.1.3).
There are so few devices still using iOS prior to 4.3 that there is no sane reason to support those older versions.
If you REALLY must support everything, create two versions of the app. One with newer support and one with older support. Then watch as your download ratio is 1,000:1.
At some point soon, Apple will most likely drop support for new apps being created with older versions of Xcode. Apple likes to keep moving forward.
Is just a link... I didn't try it..
"You can create an iOS binary that spans armv6 - armv7s with Xcode 4.5, but it takes some extra work .... You need to have multiple versions of Xcode installed ...."
ARMV6 SUPPORT WITH XCODE 4.5
i have one universal app and now i create one update for iphone 5
But i can not send my app via apple bc
Warning : At least one of the following architecturs(s) must be present: armv6
i added armv 6 armv 7 i389 in target -> architecturs(s) but doesn't work
Apple dropped support for armv6 with iOS 6 SDK, and XCode 4.5 doesn't support building a binary for armv6 architecture, you must remove it from your target.
Is armv7 an absolute requirement for submission to the app store currently?
The application is being built against the latest xcode, against the latest sdk (5.1) but with the minimum iOS version being 4.2. If we remove armv7 (due to a third party library, please dont ask) can we still submit to the app store with armv6 only?
Thanks
Short answer: Yes
I assume that if you are targeting iOS 4.2+ it includes 2nd gen devices (my iPod touch has 4.2.1 ) ...and those only work with armv6.
In any case...apps that work on armv6 work on armv7.
Now...if you haven't tested your app on 2nd gen device I suggest that you make minimum iOS required to be 4.3 (as in 3rd gen+)
We recently set the minimum iOS support to 4.0 and started using the LLVM compiler for a new update of a current available app.
Will setting 'Architecture' and 'Valid Architectures' to only armv7 exclude armv6 devices such as iPhone 3G from downloading the update?
I have tried with UIRequiredDeviceCapabilities but Apple does not let you set this for app updates, only for new apps, which is unfortunate.
We also don't have access to an armv6 device to test the app as I have read reports that the new compiler might cause some issues with this older architecture, thus we want to exclude armv6 from updating the app as we still have a small number of users running on armv6.
Just set the minimum required OS to iOS 4.3. That will exclude all armv6 devices as Apple dropped armv6 in iOS 4.3.
I want to limit my universal-build app to iPhone4 / iPad, and I've set UIRequiredDeviceCapabilities to include "armv7", accordingly. In the build settings I've set:
"Architectures" = "Optimized (armv7)"
"Valid Architectures" = "armv7"
But the Release and Distribution builds of my universal app are generating this warning:
warning: iPhone apps should include an armv6 architecture (current ARCHS = "armv7")
Is this even a real problem? Can I safely ignore the warning? Why doesn't my debug build exhibit the same warning - the build config has the same settings?
I'm building with XCode 3.2.5, 4.2 SDK.
Similar to this question, but not quite:
"Warning: iPhone apps should include an armv6 architecture" even with build config set
I was having the same issue. I set the project settings accordingly but was still getting the error when building the Release version. I had to edit the Target settings and found that 'Build Active Architecture Only' was checked for the Release configuration. Unchecking it resolved the warning. I hope this helps someone.
Build Active Architecture only is really best used just for debug and simulator builds.
The iOS deployment target version is what determines the required architectures. iOS 4.2 and earlier included support for armv6 processors; therefore Xcode wants you to build for that architecture for builds that might be distributed.
If you really don't want armv6 code, and understand that the app store will reject your app if it targets iOS 4.2 or earlier and does not have armv6, then I'd suggest just changing the "Architectures" setting in the target to armv7 only.
You can stay with arm7 only if you want, but if you want to limit to iPhone 4 / iPad it's because you have a good reason ? To limit to devices you need to use UIRequiredDeviceCapabilities in your Info.plist, otherwise people with previous iPhone will find your app and it will not work.
PS: It's not easy to find a device capability for both iPad and iPhone, you can for example said that you want devices with a front facing camera but this will limit to iPhone 4 and iPad 2 (and not iPad 1)