I’m currently working on our first mobile app for PicLyf called PicLyf Snap. I’m also working on our API (OAuth) at the same time.
It is not a “write once, deploy all” solution.
This should have been obvious but I previously believed that it was. So I tried coding the app in a way that it will work on both iPhone and Android.
The result was messy code with lots of compromises. I wasted a lot of time trying to write UI code that will work on both platforms.
I ended up with lots of
if(Android) conditions that it was no longer funny. This problem was only on the GUI though, other non-GUI APIs
like the Titanium.Network worked nicely on both platforms.
I gave up in the end and split the project into two. It made the code much cleaner and focused for the target platform. And I could take advantage of those controls that are unique to a platform.
No GUI designer.
Titanium currently doesn’t have a GUI designer like the Interface Builder. You’ll have to write code to add controls to the window. For example, here’s some code to add a textfield to the current window:
There’s currently no debugger like the one in XCode. You only have access to a logging API. Logs will show up in Titanium’s project window.
It’s not really that much of a problem for me though. I’m used to debugging with other languages using only logs. I think a GUI designer is a much needed feature compared to a debugger.
Why it’s still cool.
I’d still use and recommend Titanium for mobile app development. In an adept Titanium developer’s hands, it can seriously kick ass. But if a project has the requirement to use a platform’s bleeding edge features, I think it’s best to use the platform’s primary tools (e.g. XCode) to do the job.