Google's new App Inventor for Android comes with an ambitious goal: Allow anyone to create simple apps for their mobile phone. The tool, still in invitation-only beta, offers a graphical drag-and-drop programming interface instead of requiring that apps be written in Java.
I received access to the beta a couple of weeks ago and tested many of the available programming functions, using both the built-in Android device emulator and a loaner Droid X smartphone. I ran the browser-based tool on both Mac OS X and Windows 7. I also walked through a number of the available tutorials.
Now, let's be clear: Drag-and-drop programming will not turn most designers into expert coders. Even with a visual interface, devising complex applications is not trivial. But for interactive designers with some coding experience, it's an effective way to create apps without requiring the skills of an expert coder.
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 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 a full programming language like 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.
Building an app
There are two main parts to App Inventor: 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.
I 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: App Inventor wouldn't see my Droid X at first, making it impossible either to view my 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.
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 my Mac, so I needed to change the phone from "PC Mode" to "USB Mass Storage."
(This underscores what fans of the 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. I 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 App Inventor 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 colors 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 color, 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 (i.e., arrays), logic, colors 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 App Inventor environment.
It wasn't always clear right away where to go to find the blocks I 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 I've got to say that dragging out three blocks from multiple drawers is not as simple as typing $i++; -- sometimes text really is quickest.)