Existing App: upgrade from iOS 4.2 to iOS 5.0 - ios5

I rewrote an app I have on the iTunes store using iOS5.
The original app had support for armv6 and armv7 on iOS 4.2 and higher.
The new app has only support for armv7 on iOS5.0 and higher (since iOS5 API is only supported on armv7)
So there's the issue. iTunes won't let me upgrade the app because it would mean some users won't be able to get an upgrade. Error message:
This bundle is invalid. UIRequiredDeviceCapabilities in the Info.plist may not contain values that would prevent this application from running on devices that were supported by previous versions.
The value in UIRequiredDeviceCapabilities is armv7. armv7 is required b/c iOS5 api.
What do I do? Do I pull the old app and replace it with the new one? What about my customers? How will they be able to upgrade? Are there any workarounds?

I also found this in my search:
https://developer.apple.com/library/ios/#qa/qa1623/_index.html
I wish they would fix this. I mean we can't support all versions all the time if they want us to use new features, and I'm not going to rerelease the app every time they upgrade the OS.

In short: UIRequiredDeviceCapabilities cannot be changed in app updates.
Take a look at Ole Begemann's post explaining it and suggesting changing required SDK version as a workaround.

I was just having this same issue. I tried adding armv6 to my architectures but that didn't work.
To make it work, I changed the deployment target to 5.0 and viola, no problems :)

Related

How to create a Fat Binary with armv6,armv7 and armv7s

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

Remove armv6 from new version of an ios app on iphone

This problem has been driving us nuts for some time. We have applications, all built with Titanium (I'm mentioning this because I'm not 100% sure that the problem doesn't come from there). The applications are up on the store, we updated them a few times since the every launch.
Right now, they supports armv6 and armv7.
For the next update, we want to add support for the iphone 5, which means that we have to drop support for armv6. Which is absolutly fine. We also don't mind setting the minimum OS version to 4.3.
So we changed the build settings in xcode to armv7 armv7s, set the minimum os to 4.3, added the retina screens and so one, builded the app. We left everything else as it were. When we try to validate the app, we get this message :
this bundle does not support one or more of the devices that were supported in the previous bundle for this app
With a link to the apple manual page : http://developer.apple.com/library/ios/#qa/qa1623/_index.html
Which told us that the error might be because :
When you see this error message, you have changed the "Targeted Device Family" build setting (which modifies the UIDeviceFamily info.plist key.)"
But we did not.
Also, a few line below (in Targeting the latest iOS):
For example, if your app is no longer built with armv6, you should not add armv7 to your UIRequiredDeviceCapabilities. This may cause Xcode or iTunes Connect to erroneously reject your update.
Of course, we did not do that.
We even tried to make to change the app version to the next major one, as someone stated it solved it.
Has anyone a clue on how we remove armv6 support for good ? The only solution we found would be to delete the application and recreate it with only armv7 this time. This, of course, would not be acceptable as we would lose comments, ratings and so on.
Did you remove armv6 from both the 'Architectures' and the 'Valid Architectures' setting?
Ok I manage to get it to work and now I'm wondering what went wrong when we tried the first times. Here is what I finaly did (nothing more):
took the current version in Titanium
Cleaned it up
set the version in Titanium to the next major one (2.0 in our case)
reseted environment to use xcode 4.5 (it was already the case, but I was willing to be on the safe side)
builded the package through publish, with the SDK set to 6.0
The build process confirmed that this was ok ([INFO] Minimum iOS version: 4.3 linked iOS Version 6.0)
Once done, validated the package in xcode and uploaded it
And here are all the things I did not do this time:
Changed anything in the info.plist
Changed anything in the build architectures
actually anything in xcode except validate and upload

Minimal IOS version accepted in AppleStore submission?

Just to be sure, I want to know if an application targeted for IOS 4.2 could be submitted to apple approval process ?
So the application can be downloaded on iPhone 3G.
thanks for the info.
andré.
Yes this is fine, you can support any OS version you want.
It is best to be able to test on each version you support thou
edit: You will need to make sure your project support armv6 and armv7 thou

Can't get my iPhone app to install on a 3G

I've been trying to get my app - built in Xcode 4.2 in Snow Leopard, using ARC, targeting iOS 4.0 and up - to install on a 3G, with no luck. I've tried every solution I can find (like this thorough one here: Is it possible to target older iOS versions when using Xcode 4.2 and iOS 5 SDK?) and while I've been able to get the app to run on the phone via Xcode, when I share the app and try to install it through iTunes, I keep getting the same error telling me the app was not installed because it is not compatible with this iPhone. My client is using a 3G so this is a pretty big problem.
I've set the architectures / valid architectures to support armv6 as well as armv7 in my build settings and I've deleted the line in info.plist about the required device capabilities with armv7 (I also experimented with adding armv6 instead of deleting the line, which made no difference). I also added the -mno-thumb to Other C Flags in case that was the issue. Even though I know for a fact that it works on a 3G, iTunes refuses to install it. Is there something I'm missing?
Check the OS version for you iPhone 3G. if it is running less than 4.0 you might need to have older sdk. Besides I guess ARC is not supported in earlier versions of iOS.
OK, I'm just dumb - I skipped a step and wasn't actually re-archiving the app, I just kept sharing the same original archive over and over again. Re-archived and now it works fine.
Thanks for all your help, everybody! Next time I ask a question I'll try to rule out my own lack of attention first...:P

My app supports armv6 and armv7 in the app store. I want to remove armv6. How to solve a problem

My app supports armv6 and armv7 in the app store. It is ready for sale. I want to remove armv6.
I decided to do an update (my app with only armv7). But i received an error in the app loader : update must supports armv6 and armv7.
How to solve a problem.
I believe the problem is that you can't restrict device capabilities after submission. From the iTunes Connect Manage Applications FAQ:
"To change device requirement information after your first binary has been submitted, you must submit an application update in iTunes Connect to provide a new binary with the new information in the UIRequiredDeviceCapabilities key. You are permitted to expand your device requirements only. Submitting an update to your binary to restrict your device requirements is not permitted. " [emphasis added]
I've been looking for a way around this, or for Apple to specifically allow removal of armv6 support with the approach of iOS5 release. Crossing fingers. :-/
In xcode, go to your project's build settings. Update your deployment target to ios 4.3.
(im using ios5/xcode4)
Have you specified UIRequiredDeviceCapabilities in your info.plist? This might be your problem, check the Apple Q&A here