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: ti.modules.titanium.app.AppModule@4112e910
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.
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.