Stripping ppc support from your Mac apps

For the last 2 days, I have been going crazy with getting a recent Mac app I developed accepted by Apple. 

For those who have tried submitting apps to the new Mac App Store, you know Apple has a bunch of rules for you to obey. One of them is that the list of valid architectures supported by your app should not include “ppc”.

The important thing to note here is that although you only specify x86_64 and i386 and not ppc in your build settings, your app might just be automatically rejected in iTunes Connect. The reason is that you also need to strip and external frameworks of ppc support you are using in your app.

For me, the extra stuff I used was Growl notifications. As of their SDK 1.2.2, Growl has support for ppc and ppc7400 and since I directly used Growl.Framework in my app, my app was also getting ppc stuff inside. 

After sifting through a couple of questions on StackOverflow, Apple developer forums, and Google Groups for Growl, I found the solution in stripping any dependencies from the binaries, using two simple command line tools called lipo and ditto.

Here is how to use them:

ditto -rsrc —arch i386 —arch x86_64 Growl-WithInstaller Growl-WithInstaller_noppc

lipo -info Growl-WithInstaller_noppc


And, your binaries are stripped off ppc support! Now your app will not be rejected by Apple because of invalid architecture support reasons.