I have created iPhone App supported with iOS 4.2 or later and tested on iPhone4.0 but it seems users are not able to downloaded my application on iPhone 3G. I couldn't find any settings specific to iPhone versions. What all I can see is the deployment target that is set to iOS 4.2. Could anyone please tell me what could be reason for my application not getting downloaded on iPhone 3G?
Thanks.
You should set your Base SDK to the newest version you have installed, and then set your Deployment SDK to the minimum FW you are planning on supporting, in your distribution/test/debug profile like this:
Base SDK: iPhone OS 4.2
Deployment SDK: iPhone OS 4.0
This way you get all the futures of your new base sdk and you set the minimum FW neded for your app to work. This should be set carefully, setting a Deployment too low may make your app go really crazy, eg. Base SDK: 4.3 and Deployment SDK: 3.0.
Hope it helps!
Related
i'm writing my first iPhone app with aim to upload it to the AppStore and don't understand one thing:
Most popular games on the AppStore have compatibility with iPhone OS 3.0 or later. I have currently installed iPhone SDK 4.0 i believe.
I want my app to have the same compatibility starting from 3.0, do i have to install and use in development an earlier SDK, like 3.0 to achieve that goal or i can somehow use the latest SDK?
Thanks for any help!
You should always build against the most current SDK, that is 4.1 at the moment. You can set your minimum requirement differently though, i.e. 3.0.
To be able to upload your application to appstore you must build it using SDK 4.0 at least.
Then in build target settings you can specify minimum OS version your application can be run on - check "iPhone OS Deployment Target" setting.
Remember that if you use some APIs that are available not on all OS versions you support you should do run-time checks for them to avoid application crashes.
I am a registered Apple dev with the certificates, and mobileprofiles that i need. I have made several apps in xCode that I would like to test on my 3GS, I have registered my 3GS as one of my allowed devices but it still will not install giving the install prohibited error. The Xcode is set to same profile as my iphone has. Just dont kmow what to do. well i guess i =ll download sdk 4.1
You will get this exact message if Restrictions are enabled on the device, specifically the restriction on installing Apps.
You need to upgrade your SDK to 4.0.1 to use it with iOS 4.0.1 devices.
Is the iPhone OS Deployment Target in your Build Settings (either for the project or for the target) set for an OS version higher than the one on your 3GS?
I've built an iPhone app which is live in the app-store. When originally submitting the app it showed up in App Store as requiring iPhone OS 3.1.3. When later updating the app I made sure my settings in Xcode for the target for the app store build had the Base SDK version set to 3.1.3 and the Deployment Target version set to 3.0, however it still shows up in app store as requiring 3.1.3.
From what I've understood the Deployment Target version is the one setting the requirement in app store?
Or is there any information concerning this that I should have updated in iTunes Connect when submitting the updated app?
Thanks, Michael
Check the MinimumOSVersion key in your info.plist
You can set base SDK for your application from edit Project settings
Base SDK
Can a user install my application from iTunesStore if he is having iPhone OS 3.0 or having lower version of iPhone OS and I have developed my application using iPhone SDK 3.1.3...
Can anyone help me with this...
Thanx in advance...
In you projects settings, use a build setting named "iPhone OS Deployment Target" to specify your minimal iPhone OS version.
To do that, double click the blue project icon (at the top of the project’s "Groups and Files" table), click the "Build" tab and find the setting in the "Deployment" settings section.
To use features from a later iPhone OS, see this question.
If you compile your application to target iPhone OS 3.1.3 then it will not run on 3.0 - instead the user will get a message telling them to update their OS when they try to install.
However, there's a good chance that you will be able to compile your app to target 3.0 as long as you're not using any specific 3.1+ and newer features. To do so, just change the Active SDK you target in Xcode before you compile. Then your app will run on both 3.0 and 3.1.3
If you set your Target SDk in Xcode to 3.1.3, you may be using features of the SDK not found on an iPhone running a lower OS. However, you can test for those features in your program and take alternative measures if the user does not have those features/frameworks available. There is nothing that will prevent your app from running on older iPhone OSes, other than the fact that using new features will cause the app to fail.
On the other hand, you use the Deployment SDk value of XCode to limit which iPhone OSes can actually run your app. This way you can limit the app to be available to only iPhones with later OS and not the earlier ones. The Apple iTunes App Store will use the Deployment SDk value to tell the user who is purchasing, what the minimum system requirement is too.
I'm a little confused about building an app for the app store and for the correct SDK & OS version. I have submitted my app to the app store, and in the app details screen of iTunes connection it says:
"Minimum OS Requirements : 3.1.2"
I haven't seen any apps on the app store that have 3.1.2 as the min OS, they all say 3.0. I read several things on here before I built it and I thought I understood everything!
Basically, my app doesn't use any code that only exists in > 3.0 so I would like the minimum OS to be 3.0. My build settings were:
Target Info
Base SDK: iPhone Device 3.0
iPhone OS Deployment Target: iPhone OS 3.0
Xcode Main Window
Active SDK: iPhone Device 3.1.2
I've heard about a minimum OS version being put in the Info.plist but I haven't got anything like that in mine.
I build the app exactly like that and submitted it. Are my app settings correct? Will my app display 3.0 in the app store or 3.1.2? I'm a little unsure as to why you set the Active SDK to the latest (3.1.2) when you want to target 3.0 , 3.1 & 3.12 devices, but it's what I read!
Any help advice be greatly appreciated!
Okay I've managed to figure it out after much reading!
Basically, the Active SDK is just a build time override of the Base SDK. By default, when the Base SDK changes it automatically changes the Deployment Target to the same OS as the SDK. So when I wanted to build the app under the 3.1.2 SDK but have it run on 3.0 OS, I changed the Active SDK to 3.1.2, but that had automatically changed the minimum OS (deployment target). I saw this by looking at the Info.plist file in the package contents in my .app file.
So the best thing to do is to set the Base SDK to the latest SDK (currently 3.1.2) and then manually set the Deployment Target to 3.0 OS. Once the 2 are different then it will no longer automatically change.
However, this means that your app can install on a 3.0 device that may have 3.0, 3.1, or 3.1.2 SDKs. Therefore, any frameworks, methods or properties you use that are only available in SDKs greater than 3.0 you will have to use conditionally.
When you get around to building the app, ensure that that Active Target is set as the same as your Base SDK, e.g. Device 3.1.2. But remember to compile your app under Device 3.0, Device 3.1, and Device 3.1.2 just to check for compiler warnings. This will ensure that you don't have any code accessing methods/frameworks that don't exist in any SDKs down to your Deployment Target.
I hope this helps anyone who is in my position and couldn't find a simple explanation of how it all works.
The SDK Compatibility Guide was very useful and informative. However it took just a little extra figuring out for me to be comfortable with the concept and how everything works. This image from the guide is useful:
(source: apple.com)
Go to the Project Info->Build and look at IPHONEOS_DEPLOYMENT_TARGET property
Actually I use 3.1.2 SDK and building an app that work nice on every OS higher than 2.2.1