A couple months back took a long look at Appcelerator and initially I loved what I saw. For those of you unaware, Appcelerator allows you to develop “native” applications for Android and iOS in JavaScript that execute in a special version of the V8 JavaScript Engine. I started developing a prototype app of a simple Android game for my daughter and got surprisingly good results quickly. It was a very encouraging start, but then the wheels fell off. I notice a number of people end up on this site from search engines looking for an Appcelerator review ( for some reason? ) so I thought I would share my experiences.
For whatever reason, I got distracted and put it down for a while, I came back to it recently and intended to finish off that prototype. Here is the kicker, the exact same code from a couple months ago, unchanged, no longer works on my Transformer tablet.
I will say, this is frustrating to say the least. Now, since the code didn’t change it was obviously an update to Android that broke things, I can’t exactly blame that on Appcelerator Titanium ( oh the joys of Android device compatibility… ) but I can blame them for what came next…
You can’t debug on device. At all. With the exception of printing comments to logcat, you are basically blind. This obviously leads to a problem, as here is what happens when I run the app. ( Which by the way, still runs perfectly fine on my Galaxy Note running Android 2.3.x, its just on my Asus Transformer that it breaks ):
Since I can’t debug on device, this is the results I get from connecting with the Delvik Debug Monitor:
06-19 09:56:51.090: I/TiApplication(1823): (main) [0,0] checkpoint, app created.
06-19 09:56:51.130: I/TiApplication(1823): (main) [46,46] Titanium 2.0.2 (2012/05/30 10:21 2ff31a3)
06-19 09:56:51.170: D/dalvikvm(1823): GC_CONCURRENT freed 268K, 5% free 6703K/7047K, paused 2ms+2ms
06-19 09:56:51.380: D/dalvikvm(1823): GC_CONCURRENT freed 314K, 6% free 6898K/7303K, paused 2ms+2ms
06-19 09:56:51.450: E/TiApplication(1823): (KrollRuntimeThread) [318,364] APP PROXY: [email protected]
And, that is it. Since I can’t debug on the device, I am pretty much DOA here. The forums answer nothing ( although I did find other people having similar problems ). I of course could debug in the emulator with two exceptions. a) the error only occurs on the actual device b) the debugging experience on Android is still awful.
This is another area with Appcelerator Titanium I always found infuriating… the emulator. Getting it to actually run with your running emulator was a nightmare, you had to match up the Android build version and run configuration exactly with the version of the running emulator, then it was still a 50/50 chance that it would actually use your emulator, or start a new one. If you’ve worked with Android before, you know how fun waiting for the emulator is! There is light and the end of the tunnel with the recently release Intel emulator running a heck of a lot quicker, but unfortunately the JavaScript V8 virtual machine Appcelerator relies on doesn’t work with it.
It’s a shame to be tripped up on such a thing, but actually being able to debug on your device is an absolute requirement, as is demonstrated by this situation. There are other annoyances with using Appcelerator certainly… the binaries it generates are “large” to be extremely kind, performance can be a bit spotty at times and you virtually have to write two applications if you want to support iOS and Android, but none of these was enough to make me give up.
Not being able to debug on device, coupled with some remarkably meh support.. that is. Combined with the fact my application was broken by an Android update… if I can’t get my code working with my three devices reliably, what happens when I release to the masses with their millions of different devices?
Which is disappointing, as I really liked working with Appcelerator. I even liked Appcelerator Titanium as an IDE, which is shocking as I hate Eclipse, which it is based on.
There is potentially light at the end of the tunnel, as there is an open ticket for debugging on device. Unfortunately, its been assigned medium priority and has already been open for almost a year.
Appcelerator Titanium is an interesting and encouraging product, but for the above reasons, I just can’t commit to using it. Add native debugging support, and I will certainly reconsider.
General