It did not take too long to come to the conclusion that my short-term satisfaction with the Android development environment I had just built had come to an abrupt halt. The main reason behind this change is the fact that Ubuntu 10.04 LTS does not support dual monitors for the driver currently installed on my old IBM ThinkPad T42. According to Linux (output is edited to include only video driver information):
01:00.0 VGA compatible controller: ATI Technologies Inc RV350 [Mobility Radeon 9600 M10]
Subsystem: IBM Device 0550
Flags: bus master, fast Back2Back, 66MHz, medium devsel, latency 66, IRQ 11
Memory at e0000000 (32-bit, prefetchable) [size=128M]
I/O ports at 3000 [size=256]
Memory at c0100000 (32-bit, non-prefetchable) [size=64K] [virtual]
Expansion ROM at c0120000 [disabled] [size=128K]
Capabilities: <access denied>
Kernel driver in use: radeon
Kernel modules: radeonfb, radeon
My extensive web searches brought me to realize that the Radeon 9600 is no longer supported by Ubuntu via the manufacturer's driver, so my only choices at this point are to purchase a new laptop, go back to Windows and use an Ubuntu virtual machine, or limit my work to a single monitor. None of these choices sit comfortably with me. Especially frustrating in this regard is the fact that the Ubuntu "monitor preferences" panel seems to indicate that dual monitors are a possibility even though it is not.
Apart from this relatively small sacrifice, progress has been made over the last couple weeks with the limited time I currently have available away from the office. The decision to not pursue the native development route has won for now. There exist just too many cons via that avenue rather than pursuing HTML5, especially since cross-platform adoption is sought in a fairly short period of time.
In the past couple weeks, I have had the chance to test a few JavaScript frameworks, including jQuery Mobile, currently still in infancy, although having its origins from jQuery, a mature framework. My tests ran well, but I am not sure whether it will catch on, meaning that near-term community support is an unknown. Other mobile development frameworks based on traditional JavaScript frameworks are also available, such as dojox.mobile, which is embedded within the Dojo Toolkit.
The level of architectural decision making on this project is more extensive than originally expected, even though native development is not being pursued. Well, not quite. Based on current direction, a portion of the development on this project is likely to require the porting of code from one platform to another for a portion of the back-end, which does not exactly meet the pure cross-platform goal, but possible workarounds are currently being assessed.
Porting is being laid to rest right now in favor of getting some of the core user functionality to work. While I had originally considered the user functionality enabled by the porting to be core, I have come to the realization this is simply not the case, and considerable coding needs to be done apart from this extended functionality (actually "just" a convenience measure for users).
After some success using the PhoneGap framework today, it looks like it will probably make its way into the architecture for the core user functionality portion of the application. Several elements of a steel thread have been constructed across multiple proof of concepts, so one of my next steps will be to unite them together into one application after making some decisions as to which JavaScript frameworks will be adopted.
Since my last post, the following high-level installation step were also performed:
- Installed FireBug to my laptop Firefox install
- Set "security.fileuri.strict-origin-policy" to "false" using Firefox "about:config"
- Installed Android Debug Bridge (ADB) 1.0.26 to Eclipse using Android SDK and AVD Manager:
- Enabled USB debugging on my Droid Pro
- Added "android:debuggable="true" to the <application> element in the AndroidManifest.xml for each application
- Created "/etc/udev/rules.d/51-android.rules" with the following entry:
SUBSYSTEM=="usb", SYSFS{idVendor}=="22b8", MODE="0666"
These steps have enabled me to start debugging my applications locally on my laptop, as well as on my Droid Pro. While applications can be installed to my phone via ADB, and run successfully, the one glitch I am experiencing right now is that after closing an application, I cannot run it again without rebooting the phone. This glitch is probably resolved easily, but my time is limited and solving this issue will need to wait until next time.