I want to keep Deployment Target to 4.2, to support iPhone 3G/S, as that device cannot upgrade it's iOS to any higher. I kept my XCode in version 4.2 and the Base SDK as iOS 5.0, as the newer versions do not support older iOS's.
My app gets rejected with the message:
iPhone 5 Optimization Requirement - Your binary is not optimized for
iPhone 5. New iPhone apps and app updates submitted targeting iOS 6
and above must support the 4-inch display on iPhone 5 and must include
a launch image with the -568h size modifier [...]
So I add the launch image Default-568h#2x.png. But then I get rejected with the following message instead:
Invalid Launch Image - Your app contains a launch image with a size
modifier that is only supported for apps built with the iOS 6.0 SDK or
later.
It seems like a catch 22. Do I have to change my SDK, and to what? Am I doing something wrong, or can I simply not deliver to iOS 4.2 any longer?
Related
I develop on ipad IOS 6.1.3 on XCode 4.6.
By mistake, ipad was updated to IOS 7.0.4.
So, How can I make iPad with IOS 7.0.4 works on Xcode 4.6 ?
Or, How can I restore iPad from IOS 7 to IOS 6.1.3 ?
My Mac os is 10.7.5
I can't complete my work..
Thank you
Very soon Apple will stop accepting apps that are built using Xcode 4.6, so you'll want to work on your app using Xcode 5, unless you don't plan on releasing your app.
As for downgrading your iPad, I don't think that's possible any longer. It used to be possible to downgrade from iOS 7 beta versions to iOS 6, but I think once iOS 7 was officially released that it is no longer possible.
My suggestion would be to upgrade your Mac OS version so you can install Xcode 5, and continue development. If you want users to use your app, they'll want it to be built with Xcode 5 so that it has the new iOS look anyway. After using iOS 7 for a while, apps that have the iOS 6 look still seem very dated.
i changed the base sdk for iOS 6.1 in xcode 5 .
When i simulate my project on a iOS 6.1 simulator or on a iOS 6.1 device
all works fine. But when i build a ipa and install it on a iOS 7 device
the device use the iOS 7 sdk and my hole app looks weird. I changed my base
sdk for iOS 6.1, so why use my device the iOS 7 sdk?
I read that iOS 7 use the iOS 6.1 sdk for old published apps.
What do i have to do that iOS 7 also do that for my app?
My only idea is to install xcode 4 again...
I have experienced the same problem - unfortunately only discovered AFTER submitting to the app store and the app being approved and released, causing all sorts of mayhem due to interface glitches.
The issue occurs due to a bug in XCode 5 (including in XCode 5.0.2 it seems) that is triggered when you install older SDKs.
When you have multiple SDKs installed, you will see that when you connect your device to XCode, there are multiple entries for your device, with no way to tell them apart. But it appears that the TOP entry is for the OLDEST SDK you have installed, the BOTTOM one for the NEWEST SDK.
I have found that if I first use "Test" project option to run the app on the device with the SDK I want to use (in my case the top entry, which is for iOS6.1 SDK), then that is the SDK that will subsequently be used when I archive the app.
You can have both xcode 5 and 4.6.3 installed.
Also a lot of post say that in the simulator it look iOS7 but on device it will look iOS6.1 if you set the base sdk to 6.1
see:
Is it possible to install iOS 6 SDK on Xcode 5?
Do apple allow custom iOS 5/6 style UI for iOS7?
I have been able to make xCode 4.3.2 work with iOS 6.0 using the technique described here Is it possible to get the iOS 5.1 SDK for Xcode 4.2 on Snow Leopard?
When I add AdSupport.framework or other iOS 6 specific frameworks, it builds fine against the iOS device scheme with no device connected. However, as soon as I connect an iOS device it gives erros 'framework not found AdSupport'. It does not even compile against iOS Simulator 5.1
I am using iOS 6.0 as base sdk and tried deployment target of 4.3 upto 5.1 but still same error.
AdSupport.framework is only available beginning on iOS6.
You should mark the framework as Optional (Weak Reference) and ensure that when running on iOS versions below 6, that the AdSupport code is not called.
I'm developing an iOS App which targets iOS 5.1+. I'm using XCode 4.5 on Mac OS X 10.8 and I do own an iPhone 4 with iOS 5.1.1. The app needs OpenCV, which I have successfully built from sources according to a tutorial in the OpenCV-Documentation.
Here is what happens:
When I start up the application I get an exception:
dyld: Symbol not found: _objc_setProperty_nonatomic
The error does not occur with iOS 6, but with iOS 5.1 in both the simulator and on a real device.
What is that? Is it related to OpenCV? Does it have to do something with incompatibilities between iOS / the iPhone / XCode??
EDIT: My development target is set to 5.1. The Base SDK is 6.0. I copied an SDK für 4.3 (which is the lowest version that XCode 4.5 will support) from another Mac and set development target as well as the base SDK to 4.3. Did not work either (it did not even build then).
I did not an update, the project has been started from scratch using XCode 4.5 initially.
Meanwhile I also found a tip to use gnulibc++ instead of libc++, but that also resulted in that the project did not build at all.
I built a test project and found the same issue. OpenCV is being built with a deployment target of ios6, this is a known issue, and a fix is pending review, see https://github.com/Itseez/opencv/pull/70
I have submitted one iPhone app 6 times, and in the requirement of the last/ current version, iPhone 3G is not supported anymore.
My question: Why do I lose this model?
I have some remarks:
Now, apps don't support the iPhone 3G anymore.
I made some searches, and I didn't find any news about it.
Before I submitted this version, I updated my XCode from version 4.0.2 (iOS SDK 4.3) to version 4.2 (iOS SDK 5).
Maybe during the submission, "Apple" checked the binary in order to check the version of my tools (which I built my app with).
And as the iOS 5 cannot be installed on iPhone 3G, I have lost this support.
I own an iPhone 3G in order to make compatibility tests.
And with XCode 4.2, I had trouble to debug my App with my iPhone 3G.
But, i found the solution: Add the architecture armv6 is not enough I need to put some weak links.
If I submit my app with these options "special 3G", will these options be take into account and the support will be back?
(see the edit)
"What's new" is I changed my Apple Account: I submitted my app with another account.
Maybe there are some options somewhere that I didn't see.
Edit: I forget a part maybe important: the version of iOS.
The minimum version of iOS for running my app is iOS 3.1.
And my iPhone 3G runs on iOS 3.X
And all troubles I had with XCode 4.2 and my iPhone 3G seem to be the version of iOS (3.X).
Maybe my app lost the support of iPhone 3G to be sure there is no problem with iOS SDK 5 and iOS 3.X
But, there are users with an iPhone 3GS running on iOS 3.X.
I made some tests with one iPhone 3GS running on iOS 4.0: I had no issues and no options to add in my project settings.
Thanks for your answer. The problem may be the version of my XCode.
Like I said, I have already added the architecture armv6. But with my iPhone 3G iOS 3.X, this is not enough.
Did you test only this setting with one iPhone 3G with success?
I should do:
Add the architecture arm6
Set the Base SDK with "Latest iOS" (iOS 5.0)
Set the iOS Deployment Target with the minimum value
--- It's what you advice ----
Remove into the info.plist the parameter "Required device capabilities" (armv6 and armv7)
Add SystemConfiguration.framework as Optional (to make a weak link)
With this settings, my app crashes: "dyld: Symbol not found: __NSConcreteGlobalBlock"
So I should also add in the flag "Other Linker Flags", - weak_library /usr/lib/libSystem.B.dylib
This is one of my questions:
If I submit my app with these options "special 3G", will these options be take into account and the support will be back?
By default, Xcode 4.2 does not include support for the iPhone 3G, but you can add it back. Just select your app target and select "Build Settings". At the top, change the Architectures listed from "Standard (armv7)" to "Other". In the pop-up box, select the existing option and click the minus button, then click the plus button and add "armv7", then again click plus and add "armv6". armv7 will support the newer chips, while armv6 will add back in support for the iPhone 3G... providing you set your iOS Deployment Target to iOS 4.2 or earlier... your setting at 3.x should be just fine—that merely limits you to not using newer features of iOS obviously.
You may also need to add "-mno-thumb" under "Other C Flags" in the Build Settings, though if my memory serves me correctly that may only have been if you are wanting to use Automatic Reference Counting on the old architecture—and even then only because this is a work-around for a known bug.