Search code examples
iphonexcodeipadiosuniversal

iOS universal app test on older iOS device


I have an iOS 4.2 universal app. I've tested the app against all available simulators (iPhone 4.0, 4.2 and 4.2; iPad 3.2 and 4.2). Everything runs great on these simulators and on real devices with iOS 4.2 (iPad 4.2 and iPhone 4.0).

The problem I am running into is while testing the application (from Xcode) on a device with pre 4.0 iOS---iPhone 3.x. The error is that it fails to run the application with:

dyld: Symbol not found: _OBJC_CLASS_$_UIPopoverController

The application builds with no erros (base SDK is still 4.2), installs okay but crashes while being launched. I have been careful in placing all iPhone only code in /iPhone folder/group, iPad only in /iPad folder/group and all shared libraries and views in /Shared. Furthermore, the application runs with no error on my iPhone with iOS 4.0. The UIPopoverController is never used/called from the iPhone nib so I am at a lose as to what is causing this. I am looking into adding a new target that doesn't include any of the post iOS 3.2 additions. Any help on this in the meantime would be greatly appreciated.


Solution

  • Switch your compiler to LLVM GCC 4.2 and follow all the other steps in this blog post by Marco Arment: Supporting older versions of iOS while using new APIs.