27
Stripping PowerPC parts from your Mac app
If you are a developer with an app in the Mac App Store, then you have probably come across this Apple rule:
Application executables may support either or both of the Intel architectures:
i386 (32-bit)
x86_64 (64-bit)Other architectures may not be included in submitted binaries.
No problem says you. However, until recently, Apple did not check things like dylibs contained within your app bundle. They do now.
This means that you must make sure that any 3rd party components you have imported to your project are stripped of any old PPC remnants or they will fail validation and be rejected within 5 minutes of submission (seems like they have automated these checks).
So how do we do this? Simple enough, but it requires and extra step after building the archive.
- First to be safe, you should check your target build settings to ensure that your target architectures are set to i386 and x86_64. So first click on the Project in XCode, then select the target:
Then, under the ‘Build Settings’ tab look at the ‘Valid Architectures’ and check that it looks like this:
- Then, as normal, build the product for Archive

- The Organser window should open automatically when done. At this point, we’re interested in finding the .app bundle. Where is it? Lets see… Right click on the archive, and select ‘Show In Finder’

- The xcarchive location will be shown. Right click and ‘Show Package Contents’

- Inside here, browse to Products/Users/NAME/Applications/ to see your .app bundle
This is the .app bundle we need to strip non x86 or 64 parts from before signing and submitting to Apple. To do this we can use something like TrimTheFat, by dragging the .app bundle into it’s window and deleting the resulting Jelly SMS Lite-U.app (as it’s not needed any more).Or alternatively, we can run the following command on the .app bundle.
ditto --rsrc --arch i386 --arch x86_64 MyApp.app build/MyApp.app
(from Apple Dev Forums)
If anyone knows of a way this command can be automatically run during the archive or build process (possibly during a build step maybe??), please let us know in the comments below…
[Update] Important: I forgot to mention – you should launch your .app at this stage to test if you’ve actually stripped out something that your app depends on. If so, you will get a crash here. In this case you will need to look at your project more closely and remove the code/parts causing the exceptions.
Now you can simply submit your archive as before and the nasty stuff should all be gone from it and you will once again be in Apple’s good books.
17
Jelly SMS for Mac public beta
Update March 7 2011: The beta period is now over. Thanks so much to those who helped out, and reported issues and feedback. Jelly SMS is now available on the Mac App Store. See JellySMS.com for more info and to get the app.

Jelly SMS Mac App Store demo video
Jelly SMS has been re-designed from the ground up, so why not download this preview and get texting on your Mac! The beta will expire within 2 weeks and is only supported on Mac OS 10.6.6 or later.
What’s still missing:
What’s fixed in the latest build:
Please let me know of any bugs you find or features you’d like to see. Preferably, please feedback using the Jelly SMS>About>Contact Support menu as this lets me know important information to help me debug your setup.
Thanks for all the feedback so far guys. It is hugely appreciated.
Faq
Why are you releasing a new version of Jelly SMS only for Mac?
When Apple announced the Mac App Store, they made it clear that applications developed in Java could not be accepted. They also deprecated the latest Apple Java Runtime around the same time, and noted that Java would no longer be installed by default on new Macs.
This left me with 2 options for Jelly SMS on the Mac:
- Continue on as we were and maintain the Java desktop version of Jelly SMS, in the knowledge that our long term user base would be gradually reduced in time with the release of Mac OS 10.7 (Lion) as Java would no longer come pre-installed with new Mac’s. This extra step of downloading and installing a JRE is not something novice users will do.
- Develop a new Cocoa application from scratch, which complies fully with the Mac App Store submission rules. Doing this will enable users to get the app in the most convenient and simplest way, and will remove any confusion about Java, runtimes and all that technical stuff they don’t care about.
I decided to do both. Keep the existing Java app alive, while building a new version exclusively for the Mac.
Developing from scratch also has a number of other advantages:
- Using past experiences and lessons learnt from building many versions of the app across Windows, Mac, Linux, iOS and Android, we have developed an extremely efficient operator framework, which allows us to react to any changes on the provider websites (e.g. Vodafone.ie) within minutes, without the need to re-compile and re-release a patch to fix any breakages caused. This change alone can save the user weeks of frustration as they wait for Apple to approve a small update.
- By removing this dependency on Apple’s approval process, we can add support for new operators in a matter of minutes. All the user has to do is restart the app, and boom, they get the new feature or bug fix instantly.
- Developing in Objective-C means we can make an app that actually feels like a proper Mac application, which is tricky to do using Java (especially when targeting for cross-platform).
- We can take advantage of many of the cool native frameworks available such as Core Animation to enhance the user experience in ways that are not possible without a lot of work in Java.
Why will the beta version expire?
The beta will help us identify bugs, and hopefully gain some great feedback from users. In order to prevent users from running an old buggy version, I have time limited the betas. At the end of that period, the user will be prompted to download the latest beta, thus keeping you up to date with the latest fixes.
Hint: users who provide good feedback stand a great chance of getting a free promo-code for the app when it is released in the Mac App Store.
Does this mean that you will no longer be providing the ‘free’ Java version of Jelly SMS Desktop for Mac?
We will continue to offer the Java version of Jelly SMS Desktop for Mac for free alongside it’s Windows & Linux counterparts. There will be no change here. You can still find the old Java version on the Sourceforge.net page.
However, we will encourage users to use the Mac App Store version as this version will be the simplest to install, provide the best user experience, and as outlined above, will get provider related fixes instantly.

