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?
Google App Inventor for Android: How well does it work?
Unlike many Google applications that had a "beta" label long after they were production-quality with millions of users worldwide, Google App Inventor for Android is indeed a beta. There were a fair number of glitches being reported on the App Inventor discussion group, and there have been periodic issues, such as Google's App Inventor server being unable to package applications. We think Google has done the right thing in limiting access while it works out these kinks (it's hard to respond adequately to bug reports from millions of users), especially since capacity is still limited.
Besides the problem we had during initial setup, we encountered several other minor snags, such as our app not playing a sound when the button was tapped after we had followed step-by-step instructions for the simple "Hello Purr" first tutorial. The Droid X vibration worked, but the sound did not. Yet the sound played just fine when we tried the same app on the emulator. This was another odd glitch related either to Mac OS X or to certain handsets, since switching from the tutorial-provided WAV file to our own MP3 file solved the problem (and did so for another user with a T-Mobile G1 phone).
And we never did get images to appear on the Droid X during development, even though they were supposed to. However, the images displayed just fine after we saved, packaged and downloaded apps to the phone.
Overall, though, we found the step-by-step tutorials on the App Inventor site to be helpful and well documented. We were initially confused about when to use the main browser-based screen and when to go to Blocks Editor, for example, but working through the examples gave me a reasonable feel for which window to use for each step.
After getting through the warm-ups, we enjoyed being able to create applications for a mobile device without having to write detailed code. It was pretty impressive to be able to create a complete touchscreen drawing application, including buttons to change colours and the capability to create dots when touched and lines when dragged, in well under an hour with the PaintPot tutorial.
And once we got the hang of the interface setup, we found it rather slick to be able to add another button colour to the project by simply dragging out the "colour black" block icon and snapping that into the "set Canvas1.PaintColor to" block, which we'd already snapped into the "when blackButton.click do" block.
We were pleasantly surprised to see some basic debugging tools included in the visual interface, such as a "watch" function that allows you to observe the values of variables in the Blocks Editor as you interact with your app on a connected phone.
Providing significantly more (and more varied) tutorials and sample apps would go a long way toward expanding the App Inventor audience. For instance, while there are several social networking components, including one for Twitter, it wasn't immediately apparent to me how to use them.
The log-in block was an obvious first step, but how to set it up was less intuitive. Did we have to also include username and password boxes, or were those included with the block? How do you set it up so the if-login-successful block moves you to another screen display, when for now you can't create multiscreen apps?
There are also little things that could make Google App Inventor for Android quicker to use, such as allowing a press of the Return/Enter key to signify "ok", or making a way to drag out four text elements at once instead of having to click and drag multiples out one by one.
NEXT: our expert verdict >>
Google App Inventor for Android: Specs
- Internet connection
- Google log-in
- Google App Inventor for Android invitation
- Internet connection
- Google log-in
- Google App Inventor for Android invitation
The challenge for any tool like Google App Inventor for Android is how to balance ease of use with robustness of functionality. In other words, the more it can do, the more complex it's going to be to use. Professional developers may be frustrated that App Inventor will not export Java code (although you can import and export App Inventor source code), and there's no way to build your own components. (The App Inventor FAQ says, "A component development kit is being considered. This will allow programmers to build App Inventor components with Java and expand the functionality of App Inventor.") We believe this kind of Google-backed drag-and-drop phone customisation will help Android in its battle with Apple's iOS, especially among users who are attracted to the idea of a more open mobile platform than Apple offers. No, it won't allow all users to create professional-quality apps they can sell - it wasn't designed for that. (In fact, Google is still working on how it wants to connect App Inventor to the Android Market.) But a tool like this can change the relationship between power users and their mobile phones, by offering a reasonably simple way to do basic customization and automation beyond what's typically available on a phone. Developers who haven't yet bothered writing mobile apps might be enticed to spend a couple of hours creating an app. And students will be a lot more enthusiastic about learning the principles of computer programming if they can write simple apps for their phones just by dragging a few blocks around. In addition, it gets your mind churning, devising other ways to customise the phone. For example, when going through the on-screen "painting" tutorial, we tried adding more colours and changing line widths. And then we started thinking of other apps we'd like to build for our phones - such as a "find my car after I park it" app, or a simple stitch counter to keep track of rows when crafting. Google App Inventor for Android isn't meant to be a replacement for a full-fledged SDK. For what it is meant to do, though, App Inventor is a valuable addition to the Android ecosystem. If you've got an interest in developing mobile apps but haven't gotten around to actually starting the coding, it's worth sending in an App Inventor access request.