Although it may sound counter-intuitive, it is possible to create fully fledged Android applications on Android devices. We take a look at the apps that allow it to happen.
Every serious operating system allows for programmers to create applications for it, so why not Android?
The four applications that will be looked at today give programmers the ability to create a fully operational Android application from a phone or tablet. This may not be the primary way to create those apps, but when on the road and hit with a burst of inspiration, being able to do some quick hacking or a bug fix can be invaluable.
A note on the review environment before we get into the applications. The primary Android machine used was an Asus Transformer Prime attached to its keyboard dock (the keyboard is a necessity for doing a decent amount of programming), running Ice Cream Sandwich. I also used a Samsung Galaxy as a secondary Android phone device that ran Gingerbread. It should be clear by the screenshot dimensions and lack of soft buttons on the phone which device was used for particular screenshots.
View the gallery for more screenshots of each application tested.
Now, let's get on with the examination of four Android/Java programming applications on Android.
First cab off the rank is Anjedi — an application that handles files with a project metaphor. When opening the program, users are presented with a list of projects that the application is aware of and selecting a project brings up a menu of operations for the project.
To start editing the source files, the option named "Review files" must be selected, which will bring up a modal file selector, that then will show a bare-bones editor when a file is selected. This process is rather laborious, but given the form factors that the app must accommodate, not altogether unreasonable.
Where this app shines is in its built-in support for svn and git repositories. But before you go off and import heaps of github projects, be aware that Anjedi is rather touchy about the structure of the imported code. If the project's code sits inside of a sub-folder under the root, it will not see it as a project and not give you the build options.
Once Anjedi recognises a folder as a project, the build process is simple, but does not provide any integrated tools to jump from the raw error log to the offending piece of code.
The biggest issue with this app is the propensity of the editor to truncate files, especially AndroidManifest.xml. The only way around this problem I found was to always save the file when you exited the editor; clicking cancel on the save dialog meant that there was a chance that a truncation would happen.
This app would be a handy if spartan option for mobile Android development, but due to its sporadic destructive nature, I have to recommend that you avoid this app until it decides to do no harm.
There's spartan and then there is DroidDevelop and JavaIDEDroid.
Although DroidDevelop and JavaIDEDroid appear separately in the Android store, if you choose to use DroidDevelop then you are definitely going to need JavaIDEDroid as well. And the dependencies don't stop there either, you'll also need OIFileManager and the android.jar file from the Android SDK to allow JavaIDEDroid to compile.
These two programs subscribe to the Unix philosophy of taking one program and doing that one thing really well. And while that is a fine idea on servers and desktops, in the world of jailed software and soft keyboards, all it does is leave a bad taste.
Having to poke around on my desktop filesystem to find the Android SDK's android.jar file, and then transfer it over to the Android tablet I was using was a chore. I was lucky in that I was using an Asus Transformer Prime with a keyboard dock during this review; the keyboard dock, thankfully, had a USB port on its side to allow for easy thumb-drive transfer. If I was setting up DroidDevelop on a phone, I would be tempted to discard it there and then.
Importing an existing Android project can be as painful as DroidDevelop expects a bash file to be residing in the project's root folder to tell it which commands to execute and in what order. For an experienced user this makes it incredibly flexible, but the learning curve is rather steep to get up and running, especially if you just want to build an existing project on your Android device.
The editor is bare, with the only features beyond the ability to edit text being line numbers and Android's built-in spell checker underlining most of the code in red.
One warning, though: DroidDevelop will crash if you hit its Run button prior to a successful compilation.
Once the compilation and execution environment is set-up, DroidDevelop is straightforward enough to get a quick bit of editing done, but the level of fussing around needed to get to that point doesn't make it worthwhile.
I'd stick with one of the fuller-featured applications instead.
Grouping Terminal IDE in this collection of applications is like taking a Swiss army knife to a steak-carving competition; yes it can do what is required, but it's the other options that really make it stand out.
The core of Terminal IDE is the terminalide command that launches vim with a NERD tree pane and comes with a customised vimrc file.
As you may have guessed from the use of vim, the use of an actual keyboard is essential with Terminal IDE — there will be pressing of the escape, control and function keys; something that the soft Android keyboard doesn't allow or make easy.
One way that Terminal IDE offers to get around this obstacle is the ability to access the device via telnet, ssh or the android debug bridge. Terminal IDE will also install its own soft keyboard into Android that provides access to the full gamut of modifier keys, albeit in a cramped fashion that makes the keys harder to hit.
As well as vim, Terminal IDE offers the standard commands of busybox as well as javac, java, dx and aapt.
The configuration of vim with code completion, function key shortcuts for compilation and debugging, and NERDTree in a side pane is one of the better vim-based set-ups I've come across (and will be copying across to my regular vim environment).
This application will find a place on every Android device I come across, not because of its development virtues, but it's the best CLI environment I've seen thus far. The ability to telnet into the device and work within vim on it is the icing on the cake.
AIDE is the king application for Android development within Android environments; it's integrated, looks great and just works. For programmers that are familiar with using Eclipse, this is the closest that you will come to it on Android.
The autocomplete and code analysis is the best of the lot and comes with a fix menu item that will attempt to auto-fix coding issues. Fixing isn't as intelligent as Eclipse's or Visual Studio's code analysis, but there is a chance that it could fix a simple mistake.
Handling of projects was quite simple in our testing as the project structure was automatically detected by AIDE.
Most impressive was the integration with Dropbox. As a use-case scenario for this whole review, I always thought that having a project syncing with cloud storage would be optimal, and in this respect, AIDE delivers. Rather than battles with Dropbox's favourite feature, AIDE uses the Dropbox API; by default, the Dropbox app will only sync between Dropbox and mobile devices on folders that are marked as favourites, it's not very intuitive and I'm glad the AIDE developers took a different approach.
If you are thinking about doing any Android programming on an Android device, this is the app you want.