The Google App Inventor for Android tool, still in invitation-only beta, offers a graphical drag-and-drop programming interface instead of requiring that apps be written in Java.
We received access to the Google App Inventor for Android beta a couple of weeks ago and tested many of the available programming functions, using both the built-in Google Android device emulator and a loaner Motorola Droid X smartphone. We ran the browser-based tool on both Apple Mac OS X and Windows 7. We also walked through a number of the available tutorials.
Now, let's be clear: drag-and-drop programming will not turn an average user into an expert coder. Even with a visual interface, devising complex applications is not trivial.
But just as you don't need to create pivot tables in order to get value from Excel, you don't need to be creating, say, a full-fledged fantasy football app in order to use Google App Inventor for Android.
MIT professor Hal Abelson, currently on sabbatical to work on the Google App Inventor for Android project, cites one student-created app that simply delivers a text auto-response when the user is behind the wheel ("Please don't text me now, I'm driving.") as an example of what App Inventor was designed to facilitate.
In other words, the goal of Google App Inventor for Android is not to turn the majority of Android owners into professional developers, but to give them access to more-robust phone customisation than is currently available.
However, for those who are knowledgeable coders but not yet experienced with Android, Google App Inventor for Android could make it more attractive to start developing for the platform, since this lessens the need to learn a lot of particulars. If you already have the skills to outline the steps needed to make your app come to life, you don't have to worry about what code creates a button or what syntax is needed to pull a name up from the contacts database. If you can write good "pseudocode" - basic instructions in English describing each step of what your app needs to do - you should be able to use App Inventor.
There is a learning curve - even visual interfaces require some investment in time to discover just how they work. It's less daunting than, say, learning Java, but there is a time investment, especially if you want to become proficient in creating applications that let you do more than tap a button to play a sound.
Sharon Machlis demonstrates the two main parts that make up Google's App Inventor: a browser-based design screen and a Java-based Blocks Editor.
Google App Inventor for Android: Building an app
There are two main parts to Google App Inventor for Android: a browser-based design screen and the Java-based Blocks Editor (which is launched in a separate window by clicking an "Open the Blocks Editor" button). There is also an "Extras" application to download and install, containing items such as an Android phone emulator.
We found the first-time setup to be surprisingly frustrating. Logging into the browser-based software and downloading the additional components worked on the first try, but the final step - connecting a device - was more challenging: Google App Inventor for Android wouldn't see our Droid X at first, making it impossible either to view the app in progress on the phone's screen while doing development work or to download my apps to the device. Even the helpful folks in the App Inventor Google discussion group didn't seem to know how to handle that particular issue.
Google App Inventor for Android: Apps Inventor
After some trial and error, it turned out that the default USB connection setting on the Droid X did not work for App Inventor, at least on the Mac we were using, so we needed to change the phone from "PC Mode" to "USB Mass Storage".
(This underscores what fans of the Apple iPhone - and the Palm Pre, Palm Pixi and BlackBerry - argue is the drawback to Android's open platform: Because one company doesn't control hardware design and how devices interact with the OS, undocumented quirks such as this on some devices are more likely. We still think it's worth working through issues like this in return for not being locked into one hardware vendor, though.)
The browser-based portion of Google App Inventor for Android contains a listing of various components - buttons, sounds, videos, a "tiny database", social networking components, sensors, text-to-speech and more - basically, all the available building blocks for an app.
To create a new application, you begin by simply dragging and dropping items into the central "viewer" portion of the screen. In a column on the right, you can then set some of the properties of that object, such as colours for a button or a specific sound file for a sound object.
If you want a component to do something specific - for example, play a sound after a button is clicked - you head to the Blocks Editor. There, each component/object in your application has a "drawer" that shows all its available actions.
For instance, the button drawer includes draggable icons that represent actions for when a button is clicked, as well as commands to change its colour, size, image and text - either when the app first runs or when the button is clicked - as well as its visible and enabled states.
There are also separate "drawers" for built-in items that are available to every application by default. Here, you can select icons for math functions, lists (ie, arrays), logic, colours and more for your components. You snap pieces together to create actions, such as telling the phone to play a sound and vibrate when a button is pressed.
The Blocks Editor also contains the button to connect an Android phone plugged into your computer to the Google App Inventor for Android environment.
It wasn't always clear right away where to go to find the blocks we needed. Need to set an index value when cycling through quiz questions? It's in the "My Definitions" drawer. Set the question label? The "Question Label" drawer. Add 1 to the index value? Blocks "+" and "Number" in the "Math" drawer. (And we've got to say that dragging out three blocks from multiple drawers is not as simple as typing $i++; - sometimes text really is quickest.)
On the other hand, we found that the drag-and-drop method cut down on maddening mistakes we sometimes make when programming - such as misplacing close brackets and semicolons. But it didn't eliminate them entirely, as we discovered when we tried to drag a "MyCall.PhoneNumber" block into an "AfterPicking do" block and it wouldn't snap in. Turns out we'd snagged the wrong block and actually needed the "set MyCall.PhoneNumber to" block (the action of setting the number, not the contents of the variable holding the actual number).
However, with Google App Inventor for Android, it was fairly easy to see where the problem was instead of hunting through dozens of lines of code.
Once you have finished snapping pieces together and otherwise designing your application, you can package and download your project to your phone as a stand-alone app. You can also download the source code to your system and then email it to someone else, which right now is the only way people can collaborate on a Google App Inventor for Android.
NEXT: how well does it work?