iOS 3.x support in Xcode 4 - xcode

Is it possible to write apps that support iOS 3.x versions using Xcode 4? If so, how? And does Apple have any official recommendations on app backwards-compatibility?

To get your app successfully run in iOS 3.x device, follow these steps (Xcode 4.2):
Click on your project name, select your Target and under "Build Settings"
a) Set "iOS development target" (under "Deployment") to 3.0
b). Add "armv6" to list of "Architectures" (under "Architectures").
c) Set "Other Linker Flags" (under "Linking") to "-weak-lSystem".
In your Info.plist file remove value of "armv7" from "Required device capabilities" (UIRequiredDeviceCapabilities).
In your code:
a). Do not use userInterfaceIdiom. If you need to know, what device is it (iPhone or iPad), see How does one get UI_USER_INTERFACE_IDIOM() to work with iPhone OS SDK < 3.2.
b) Do not use window.rootViewController. Instead use [window addSubview: self.mainViewController.view]; to add your main controller's view to window.
Click on your project name, select your Target and under "Build Phases" / "Link Binary With Libraries" set "UIKit.framework" to "Optional". Also set to optional any extra framework, which is not available in iOS 3. For example, if you're using iAd or Twitter frameworks they should be set to optional. Check availability of extra framework in your code before use.
When run on real device, compile app against last version of SDK. To do so, select second item from "Scheme" drop down (otherwise you'll get compile error related to your optional SDKs):

Yes, you can develop apps that support previous iOS versions with the current iOS SDK.
For official recommendations, see Apple's SDK Compatibility Guide.

The version of Xcode that you use isn't related to the version of iOS that your app can support. To choose the version of iOS that your app supports, simply change the iOS deployment target in your project settings. Then just be sure not to use any APIs from versions later than that.

to be sure, you can use Xcode 4 for targeting iOS 3.x as a deployment target, but you will not be able to simulate your program on a iOS 3.x SDK simulator. So you are pretty on your own (i.e., if you use any iOS 4.x-only feature, you will not find out it until you test on a physical device).
You need an older version of Xcode to debug against an older simulated SDK.

Related

How do I set up a WKExtendedRuntimeSession for a standalone WatchOS app on XCode 14?

WatchOS noob here...
I created a standalone WatchOS app in XCode 14.2 and it has no "Extension" target, which I think is the expected behavior. But I would like to use a WKExtendedRuntimeSession and the documentation says to "enable your WatchKit extension’s Background Modes capability and select your app’s session type".
How am I supposed to do this if I don't have an extension?

App is not listed in Focus filter Settings if we build using XCode 14.1

We have implemented the focus filter using the AppEntity param type, Our app is visible in focus filter settings if we build/run with XCode 14 or 14.0.1. But the same is not if we run using the latest XCode 14.1.
Note: Our code base has both Objective C and Swift and minimum support for iOS 11. Previously(with XCode 14), faced crash issues earlier iOS 16 devices as the AppIntents library was not loaded which is fixed by a workaround including the "AppIntents" framework as optional/weak under link binary with Libraries in build phases.
Our Foucs filter has only single parameter/variable. Tried with changing the parameter type to string then it is visible, Subtyp of AppEnum or AppEntity is not working as expected.

WARNING ITMS-90901: "Missing full-screen support for the latest iPad mini display

WARNING ITMS-90901: "Missing full-screen support for the latest iPad mini display. The “ExpoKitApp.app” bundle includes UIRequiresFullScreen=YES in the Info.plist or supports only a subset of UISupportedInterfaceOrientations, and is built with the 14.1 SDK. To take advantage of the full screen size, recompile with Xcode 13 and the SDK for iPadOS 15 or later."
We have two options here
UIRequiresFullScreen=YES to your app’s Info.plist in order to keep your app full screen during multitasking, you’ll need to recompile with Xcode 13 and the SDK for iPadOS 15
Don’t include this key in your Info.plist file if your app supports iPad multitasking and is capable of running alongside other apps. If this key is absent, or is present and set to NO, the system lets your app share the screen with other apps. Can work with Xcode 12.
You've to recompile your code in XCode 13+
and for further details please visit Apple's News and Update
i had the same issue, i sorted by upgrading to latest expo sdk and including this in the app.json expo.ios.infoPlist {"UIRequiresFullScreen": true}
I was completely upgrading my macOS(12.2) and Xcode. Currently, no warning message showing.
As the message says, recompile with Xcode 13.

Create project without storyboard in Xcode 4.3

If I want to Create project without storyboard in Xcode 4.3
and use only ARC feature from Xcode.
How can we create app without story board as we dont want Navigation controller,
in app and use addsubview as we use to code in earlier versions.
Does app coded in Xcode 4.3 can be deployed on iOS 4.0 ,iOS 4.3, or only works with iOS 5
Please let me know..
Thanks
To my strong dismay, Apple removed the "Use Storyboards" checkbox in Xcode 5. Every project gets created with a dreaded UIStoryboard. I wrote a tool that converts Xcode 4's project templates to Xcode 5, so you can once again create projects with or without storyboards. You can find it here on GitHub: https://github.com/jfahrenkrug/Xcode4templates
When you create a new project there is an option to "Use Storyboards". Don't tick that.
Do tick the "Use Automatic Reference Counting" box.
Apps developed in Xcode 4.3 can target platforms below 5.0, it's up to you to ensure that you include / exclude the appropriate features.

Can't run on device after installing iOS 4.2 and the 4.2 SDK

I installed iOS 4.2 on my 2nd-generation iPod Touch last week. I tried running my application on the device through Xcode, but it didn't work (because Xcode didn't yet support iOS 4). To solve that, I installed Xcode 3.2.5 and the iOS SDK 4.2. Now I can get the app to run in the iPhone/iPad Simulator just fine.
However, I can no longer select "Device" from the menu at the top of the screen. It's a choice, but when I try to click on it, it never actually gets a check mark.
Because of this, I can no longer run the app on my iPod. The other (related) problem is that I can't choose "Build and Archive" from the Build menu anymore because the target is not a device.
Why is this happening? Do I need to change some settings in my project, or something with my device itself?
EDIT: Upon closer investigation, it appears that I can't select anything but the iPhone Simulator 4.0. Maybe there's something wrong with the project file.
Check that the base SDK is set to Latest iOS (currently set to iOS 4.2) for your Xcode project and your target's product, then perform a rebuild and see if your iPod is recognized.
Also try visiting the Xcode Organizer and see if it's asking for anything from your iPod. Typically Xcode will want to collect some data from devices whose OS receive updates, so it can update itself and install your apps on the updated OS properly.

Resources