James Montgomerie’s World Wide Web Log

Migrating Xcode SDKs

Lots of people don’t realise that you can copy SDKs from previous versions of Xcode to newer versions and still use them.

For example, with the release of Xcode 4.5, Apple no longer ships the iOS 5.1 or Mac OS X 10.6 SDKs, but if you still need them for some reason, you can grab them from an older install. SDKs are stored in the Xcode app bundle, in Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/, Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/, and Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ - just copy them from inside your old Xcode to similar locations inside your new Xcode.

Note that this won’t give you the ability to do …

Easy Xcode Static Library Subprojects and Submodules

In which a method is presented for reliably building static libraries with subprojects in Xcode, and it is suggested that this method, combined with Git submodules or other similar mechanisms, provides the best way to share libraries, frameworks, or other code between projects.

I’m sure I don’t need to tell you that it’s a useful thing to be able to share code between projects. On the small end of the scale, you might have created some nice views, or text processing classes, and want to be able to include them in multiple apps. On the larger end, perhaps you produce …

Easy iPhone Application Versioning with agvtool

In which a semi-automated system for the versioning of iPhone applications is detailed. Said system ensures that the reader’s apps are always correctly versioned, and his users’ iTunes applications are never confused by an update of his beta builds.

Versioning your iPhone applications properly ensures that your app updates go smoothly, and also that when you make a beta build testers never get into the frustrating state where iTunes refuses to accept it because of versioning conflicts, leaving them to have to delete the older version, and its settings and documents along with it.

The system presented here is largely …