This may not be the best venue for launching into a detailed run-through of Android software development. Suffice it to say that even though the tools are a bit of a pain to install, they work well and easily for Java applications. Android uses a special Java virtual machine called Dalvik, but this detail is hidden by the tools.
Where Android's Java APIs are concerned, even the more esoteric APIs unique to the device, Google's documentation is detailed and well cross-referenced. The Eclipse-based integrated development environment includes command line tools, leveraged by the IDE, native to the PC used for development. The toolset is available for Windows, OS X, and Linux, and installs alongside a standard Eclipse distribution.
[ Formore on Android development, see " SDK shoot-out: Android vs. iPhone" and " Test Center preview: Inside Google's mobile future." ]
Tethered debugging of code operating on physical T-Mobile G1 handsets is standard, rather than a paid option as is the case with iPhone and Symbian platforms. The debugger, loader, and file explorer use a USB interface presented to the host as a TCP/IP link. T-Mobile G1 presents as a USB Storage Profile device as well, but in this mode only music and pictures are visible. Through the debugger, the entire file system with the exception of protected user data can be read and altered.
Java is the de facto path to custom Android software. It provides garbage collection and true app isolation, and supports multi-threaded and server (background) applications. Android uses a broadcast/listen model in which running instances of Java classes are called Activities and are controlled by user or application-generated messages. Remote procedure calls (RPC) with marshaled data provide interprocess communication.
Each Android app is protected by running in a separate Linux user ID assigned when the application is installed. Self-issued certificates can be used to sign code, or the user can opt to install unsigned applications. A unique and innovative feature of Android lists privileged actions, like use of the network or access to the contacts database, at installation time, setting up a sort of informed consent that bypasses disruptive, "Mother, may I?" prompts at run-time.
I have written, debugged, and installed Java software for T-Mobile G1, and I can attest that once the tools are installed, it is remarkably easy. I have not attempted native code development, for which Google does not supply tools. However, native app necessities like the C standard library and other linkable libraries are present.
Unlike iPhone, the Android SDK is not bound by non-disclosure, an idiotic restriction that Apple needs to abandon. And unlike any other platform, Android uses published source code. The NDA on the iPhone SDK precludes me from comparing it to Android, which is a pity and Apple's loss. At present, sources for Android's Linux kernel are freely downloadable. Google has committed to releasing the source code for "most of Android" in the near future. This is a little vague, but it's good to know that Google's heart is in the right place.
Lacking features like VPN and Exchange Server connectivity, T-Mobile G1 does not pass muster as an enterprise device, but that's a limitation that I expect will be overcome by Google and open source developers much sooner than the year it took Apple to turn iPhone into the enterprise-friendly iPhone 2.0.
T-Mobile G1's run of the mill build quality is offset by a 12-month parts and labor warranty managed directly by the manufacturer, HTC. Shipping in both directions is covered under the warranty. While the G1 is not yet as well suited to corporate fleet deployment as BlackBerry or iPhone, it is a solid handset for professionals, highly demanding consumers, and developers.
Uptake among buyers and coders alike is already strong, with T-Mobile's initial run of 1.5 million devices wiped out by pre-orders. I expect T-Mobile G1 to compete in unit sales, if not exceed iPhone. G1 is cheaper by about $120, and since T-Mobile controls the pricing of both the phone and coverage plans, there's a lot of wiggle room on that price. I predict a price war between Apple/AT&T and Google/T-Mobile that will bring the price of both handsets down in a few months.
Even at its full initial price of $179 with a two-year 3G contract, T-Mobile G1 shines as the best available handset for consumer and individual professionals this side of Windows Mobile, and G1 is immeasurably easier to use and write code for. I'm confident that currently-missing features like Office and PDF document viewing will appear in Google's Android Market soon enough to make early purchase of T-Mobile G1 a low-risk exercise. If you don't need VPN or Exchange e-mail, and you can get a T-Mobile G1, get one.
This story, "Google's IPhone Killer" was originally published by InfoWorld.