Editorial: SDK Frustration – My Experiences with Android, iOS, BB, PhoneGap and others

Through my computer science university experience, my need to download SDK’s was limited. Much of our work was done in Java and so the biggest requirement was to download and install Eclipse and the Java JDK. I was fortunate to be able to take a course in iOS development at university as well (one of the best courses I took by far). The setup experience for iOS development is similarly simple. Just download and install the iOS SDK. XCode and all the other tools are automatically configured and prepared for you. You just open XCode and start coding. I found these setup experiences to be generally quick and painless. I recently needed to test a PhoneGap application in an Android context. I had never done so before and I, perhaps naively, expected the setup to do so to be equally as painless as I had experienced before. Wow was I wrong.

Starting from the PhoneGap wiki, I was instructed to install Eclipse, the Java JDK, the Android SDK, the ADT plug-in for Eclipse, Apache ANT, Ruby and Git. Some of these I had already but that still left me several new elements to install and configure. I was lead to the Android SDK download page which provides a short version of the entire install process but didn’t provide enough detail for me to be able to complete the process. I had to check the ‘Installing the SDK’ page which had a more complete set of instructions but required me to then view the System Requirements page and the ADT Plugin for Eclipse page. I thought I was good to go at that point so I opened Eclipse, looked into writing the Android version of the classic Hello World program and after getting the code ready discovered that the ADT had to be told where the Android SDK was located on my machine and I had to configure the emulator for the specific Android platform, screen size, and device characteristics. No default was provided. Suffice it to say I was quite frustrated at this point. Why was this much effort required just to get my first Android app running? I hadn’t even gotten to the PhoneGap part of the process yet :S.

Don’t get me wrong. My issue here is not with the need to view multiple webpages in order to see all the necessary documentation to get all of this work (although it certainly could be better organized) nor is it with the provided tools themselves. I find Eclipse to be a good environment and the Android simulator works well. My issue is the amount of things to download and install and the continuing idea and concept of an SDK. For example, I was also interested in testing my PhoneGap app on a BlackBerry. The install process involved adding the BlackBerry plugin to Eclipse (which included the SDK piece :D) and downloading a simulator for my device of interest (in my case, just the Torch). BlackBerry still required a whole SDK but was really only one download to get started. In the extreme case, to write a webpage you really only need a text editor and a browser, two things that every computer has.

Getting back to my issue of an SDK. When writing a PhoneGap app, for Android and BlackBerry in any case, really just means writing your desired Javascript, HTML and CSS and then packaging it together with some platform appropriate Java to allow native access. PhoneGap has no SDK. Just documentation that outlines the API and some code to make it work. Perhaps the fact that my job is to write web apps blinds me to the need for an SDK when writing something native but my experience with iOS apps seemed that the biggest gain from the SDK was autocompletion of method names. I find it difficult to believe that a huge SDK is needed just for autocompletion.

Whether your app is based on web tech or runs natively, the current SDK and setup process to do development is too lengthy and complicated in it’s current form. I’m all for great tools and integration between them in order to be more productive but lets streamline it ok?

About these ads

One Response

  1. I developed in Tcl/Tk for years, and was able to build beautiful GUIs with quite powerful networked/databased back-ends, and the ‘source’ was almost completely portable (except for perhaps file paths and socket management). The source could also be ‘wrapped’ into native-ish binaries. All one needed was Tcl/tk libraries – no sdk, not even a compiler (unless you wanted wrapped apps). And, as you say, I had been writing web apps (since mid nineties for me) and all one needed was an editor (notepad was enough!) and a browser.

    Then, like an idiot I tried my hand at Android. First, I had to learn some Java, but the constructs were not too different from ‘C’, and Tcl (The C-like Language), so if you know any programming, Java is pretty ‘easy’ – though most people agree Java is not exactly ‘easy’ ;-)

    And, yes, the SDK seems to be indispensable. I was a bit disappointed, but Eclipse is pretty good. Sure, there is ADT, plug-ins, and of-course, these Java libraries. Somehow, a developer is magically supposed to know a certain class ‘exists’, and what the qualified name is. But, that is ultimately why it takes so long to setup your SDK. It does take the guess work out of knowing the fully qualified class names – but it still doesn’t fix the how-the-heck are you supposed to know what classes are out there(?) problem.

    For instance, HTML, and CSS (CSS2) are fairly well documented and include ALL of the valid ‘tags’ or commands for that language. For java, it seems, you just have to have a crystal ball to know there is a ‘class’ that exists, and its name, to do the functions you need. Here, even the SDK falls far short.

    Let me not get started on the Android documentation, particularly the official developer site – it is so weak and insufficient. All I can figure is it is ‘job security’ for developers that are otherwise average, normal human beings – not the ‘whiz kid techno-beasts’ they want you to believe they are.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: