Tuesday, November 10, 2009

iPhone Programming Tools - What's in my toolbox?

Having developed in many programming languages, one finds one has picked up several tools along the way. Despite the relative immaturity of iPhone OS development, there's a lot of Objective-C and Cocoa developers out there and even the newly welcomed faithful have helped contribute a lot of different tools to the trade. Well I've decided to put down what's in my toolbox to help anybody who stumbles here looking for a tool to do something and also as a big thanks to the developers of these tools. (Always remember, a bad workman always blames his tools). This list is by no means definitive and I'll update it as I go along. Suggestions are welcome - to make this list more useful and also to make my life easier :)

X-Code & Interface Builder (IB)
The de-facto IDEs barely rate a mention because you can't do much useful development without them. Or so I thought until I found out that the 'first' iphone virus (ikee virus) was not developed using X-Code or IB. No! "It's good old C on a linux cross compile tool chain" as the developer reveals in an interview here. No expertise on the iPhone OS required either! On a serious note though, X-Code and IB are useful. I'd love to hear from non-X-Code developers.

Leaks Performance Measurement tool
This is part of the Development tools bundled with the iPhone SDK. It deserves a special mention as it is useful to profile you application during testing to ensure no memory leaks are present in your coding. Developers used to developing in programming languages where memory management and garbage collection is handled for you are prone to write code that contains many memory leaks. If only finding them was as easy as fixing them...

SQLite Admin is an GUI administration tool for SQLite - which is used as the portable database for iPhone applications. This tool is useful to view the schema of the SQLite database created by CoreData and pre-populate SQLite databases. It requires the Adobe Air runtime.

This is a utility to read the backups from an iPhone device. The backups are created using iTunes sync. This tool used in conjunction with the SQLite admin lets you get the SQLite backups from a device, not just the simulator - hence you can see not just your application's databases but those of other apps!

iPhone PNG normalization tools
When I need to access an image that has been used in a third-party or apple's applications, I usually rename the application's *.ipa file from the iTunes music folder to a zip file and unpack it. Then I show the contents of the "*.app" bundle. Inside this bundle are the resources used in the application. The png images are not in an easily readable format. I use the following two tools to normalize them:
  1. iPhonePNG. This is a pre-compiled objective-c project
  2. iPhone PNG Normalizer. This is a python script
Do not use this to infringe on the copyright of others.

3 Twenty is a static library that provides many useful UI components, such as image viewers and general utilities. It is based on the facebook iphone app which is one of the most downloaded facebook apps.

More tools to be added as discovered.

No comments: