List of IDEs for Android App Development, Which is Best for You?

Eclipse Alternatives for Android Application Development

An Integrated Development Environment (IDE) is an all-in-one solution that allows an application (app) developer (a.k.a. programmer) to perform the software development cycle repeatedly and quickly. That cycle is to design, write (or code), compile, test, debug and package the app software. For Android app development Google currently supports two IDEs (but read on for a list of alternative IDEs and languages):

  1. Android Developer Tools (ADT) – http://developer.android.com/sdk/index.html
  2. Android Studio – http://developer.android.com/sdk/installing/studio.html (in beta)

Both of these IDEs require the use of the Java computer language to write Apps. The first option uses the well established Eclipse IDE. The second option is based upon the IntelliJ IDE.

The Google IDEs and the Java language are not the only options for Android App development. Some developers might not need the power of Java or just don’t get on with C style languages. Some developers would like a single code base to support other platforms: Apple (iOS), Windows, Blackberry and the Web (HTML5). This is known as cross-platform development. Well there are plenty of alternatives to Google’s tools, see the following table for a list of Android app development IDE and computer language alternatives. Code can be written in different languages, like BASIC, HTML5 or Lua. Many of the alternatives are free to use, some open source, some restricted versions of paid for products. A few may not have a free version. Some will require the Android Software Development Kit (SDK) that comes with the Google tools to be installed. It is possible to install several IDEs onto the same computer to try them out.

List of Alternative Android App Development IDEs

Name Language C-P URL
AIDE (Android IDE) HTML5/C/C++ Yes http://www.android-ide.com/
Application Craft HTML5 Yes http://www.applicationcraft.com/
Basic4Android BASIC No http://www.basic4ppc.com/
Cordova HTML5 Yes https://cordova.apache.org/
Corona Lua Yes http://coronalabs.com/
Intel XDK HTML5 Yes https://software.intel.com/en-us/html5/tools
IntelliJIDEA Java No https://www.jetbrains.com/idea/features/android.html
Kivy Python Yes http://kivy.org/#home
MIT App Inventor Blocks Yes http://appinventor.mit.edu/explore/
Monkey X BASIC Yes http://www.monkeycoder.co.nz/
MonoGame C# Yes http://www.monogame.net/
MoSync HTML5/C/C++ Yes http://www.mosync.com/
NS BASIC BASIC Yes https://www.nsbasic.com/
PhoneGap HTML5 Yes http://phonegap.com/
RAD Studio XE Object Pascal, C++ Yes http://www.embarcadero.com/
RFO Basic BASIC No http://laughton.com/basic/
RhoMobile Suite Ruby Yes http://www.motorolasolutions.com/US-EN/Business+Product+and+Services/Software+and+Applications/RhoMobile+Suite
Telerik HTML5 Yes http://www.telerik.com/platform#overview
Titanium JavaScript Yes http://www.appcelerator.com/titanium/titanium-sdk/
Xamarin C# Yes http://xamarin.com/

Table Notes:

  1. C-P, Cross-Platform, if No only Android supported, if Yes supports App production for other platforms (you will need to check if your required platform is supported).
  2. Language, HTML5 also includes the related technologies of Cascading Style Sheets (CSS) and JavaScript.
  3. AIDE and RFO Basic allows code to be developed on the go on Android devices. The code can be packaged into full blown Apps.

Support for Android Programming

This above list of free and commercial IDEs for Android shows that other languages can be considered when wanting to develop apps. Some of these Android options provide cross platform development from the same app source code. (For some IDEs the Android SDK will need to be installed.) Purchased commercial Android development packages will come with varying degrees of support from the company and the user base. Open source and free packages will be supported by the user and development community, and sometimes paid for support is available. Forums are a useful source of answers for Android development issues.

Microsoft are developing Cordova support for Visual Studio, see Microsoft’s Multi-Device Hybrid Apps web page.

Android NDK

Google provides for free the Native Development Kit (NDK) that allows programming in C or C++, see the Android NDK page for more information. Use the NDK to optimise time critical portions of an App. Google does not recommend it for general App development.

Setting Up Google’s Android IDEs

If you need help installing Eclipse or Android Studio see our articles. For a quick Eclipse set up see:

For Android Studio set up see:

For a step-by-step set up of Eclipse see:

Please let us know of any other Android development options you come across. It would be interesting to hear of any App successes from using any of the above packages, drop us a line at dan@tekeye.biz.

Debugging Mode The Good Old Fashioned Way

When Hunting for Software Bugs Really Meant Getting Your Hands Dirty

Most modern programmers never need to get into the physical parts of a computer. We take computers for granted. Most of us walk around with a very powerful computer in our pockets. The smartphones of today are a relatively modern invention but are so ubiquitous that they are just part of normal life. A palm sized phone more powerful than the desktop computers of 10 to 20 years ago. If they go wrong they either get replaced or sent to specialist repairers. Many programmers will now have careers where the closest they get to the hardware is installing a micro SD card or SIM card in their phone. However, there was a time when debugging software was more than setting breakpoints in an IDE, you really had to know how computers worked at the hardware level and get into the machine.

Debugging Mode in the Old Days

It is good to look at how today’s technology evolved from past technology. It gives you a better understanding of why and how the modern technology operates. When pictures of old technology are viewed it reminds you of how far we have come in a short time frame. Computers have come a long way since their rapid evolution from the days after World War II. But it would not be until the 2000’s that they began to fit comfortably in the pocket. Yet computers used to need very large rooms. Here’s a picture from July 1961 of an IBM computer in the City Hall in Redmond, Virginia.

Old fashioned debugging mode?

Even a computer this size was nothing more than a glorified calculator. They were good at counting and tabulating but not much else. When the programs failed it was not only the software that needed debugging. Often the hardware was the cause of the problem. In that case debugging mode meant opening the machine up to see which mechanical, electrical or electronic parts needed fixing or replacing. I wonder if the gentleman in this picture is in hardware debugging mode? BTW look at the size of the ducting over the machine, they used to use a stack of energy and generate a lot of heat. (And we moan about smartphones that need charging everyday.)

Next time you are struggling to debug your App or software think how much harder it used to be. It may help ease the pain 🙂

Closest to a real bug in modern developmentFor the origination of the term software bug and possibly the first description of removing a real “bug” from hardware see Software bug on Wikipedia.

Acknowledgements

The photo was seen on Flickr Commons and is from the Adolph B. Rice Photograph Collection at the Library of Virginia.

Android Debug Vs Release Build Check in Running Code

Distinguishing Android Debug Mode Vs Release Mode

Your Android application (App) will execute in debug mode in you development environment (e.g. the Eclipse or Android Studio IDEs), and it will execute in release mode when installed from Google Play. In release mode any debug logging, StrictMode and the debugging option must be disabled. You can wrap the logging calls and StrictMode set up in code that checks for debug mode. To detect Android debug vs release mode there are two objects that expose a debug flag, ApplicationInfo (since API Level 1) and BuildConfig (recent SDK releases).

Android Debug vs Release Using ApplicationInfo Flags

With ApplicationInfo the flags field has a debug bit. It is set via the android:debuggable attribute on the application element in AndroidManifest.xml. Usually the android:debuggable attribute does not need to be present, it is set automatically by Eclipse or Android Studio. The IDEs set it to true to allow the App to be debugged. It is set to false to turn off debugging when the final APK is generated. To override the default settings add android:debuggable to the application element. Set it to true or false as required, e.g.:

To use it perform a boolean And on flags with ApplicationInfo.FLAG_DEBUGGABLE, if the result is not zero the App is in debug mode.

Android Debug vs Release Using BuildConfig.DEBUG

BuildConfig.DEBUG is set true when the App is running in the IDE. It is set false in the released APK unless android:debuggable is present and set true. Therefore  BuildConfig.DEBUG reflects the android:debuggable value unless android:debuggable is set false and the App is running in the IDE, in which case it will still be true. See the table later in the article. Continue reading

Nexus 7 ADB Driver from ASUS Required When Debugging Your App

Why ADB is not Listing The Nexus 7 Tablet

Eclipse Run Android AppWhen using Windows to develop Applications (Apps) for the Nexus 7 using the Eclipse IDE (or Android Studio), the tablet may not seen in the Android Device Chooser dialog when the Run button is pressed. This is because the Android Debug Bridge (ADB), which runs in the background as adb.exe, cannot communicate with the Nexus device. This short article runs through several possible causes, starting with the most likely reason.

The ASUS Nexus 7 ADB Driver is Required

Use the Asus Nexus 7 ADB Driver when Debugging AppsHaving installed the Android SDK the default Google USB driver is not used for Nexus 7 debugging. Instead the ASUS Nexus 7 ADB driver for Windows must be installed. If you open Windows Device Manager, via Control Panel and System (or in Windows 8.1 type device manager at the Start screen), Nexus 7 will be listed with a small yellow exclamation mark. This indicates a driver is not correctly installed.

The SDK Manager program, installed with the Android SDK, has the option to install the Google USB Driver, normally done by default. (If not run SDK Manager.exe and when it has refreshed the list of packages scroll to the bottom. In the Extras folder select Google USB Driver and click the Install Packages button.) The Nexus 7 ADB Driver is not installed via SDK Manager. It must be installed separately.

Asus Nexus 7 Windows Driver Installation Instructions

To install the Nexus 7 ADB driver for Windows first download the driver from the Asus support pages at http://www.asus.com/Tablets_Mobile/Nexus_7/#support_Download_8. Click the USB link, then Global next to Download from and save the zip file to your computer. The Nexus 7 ADB Driver file is called usb_driver_r06_windows.zip (r06 may have increased if the driver has been updated since this post). Extract (copy) the contents of this zip file to a new empty folder on your PC. Open the Nexus 7 device properties in Window’s Device Manager (double-click) and select the Update Driver button. Browse and select the folder with the extracted driver files. The driver will be installed and the Nexus 7 listing in Device Manager will change to Android Phone and Android Composite ADB Interface. The Nexus 7 should now be available to select when an Application is executed in Eclipse.

Checking Other Nexus 7 Developer Settings

The Nexus 7 USB Debugging options are available from the notifications area when you plug the tablet into the computer. Pull down from the left side of the notification area and select the USB debugging entry. If USB debugging is not enabled it will need to be turned on in Settings. Access settings by pulling down on the right notification area and selecting settings (or go into all the installed Apps from the home screen and find Settings). Scroll to the bottom and select Developer options (if not visible see next paragraph), then check USB debugging.

Enabling Nexus 7 Developer Options in Settings

Developer options may not be visible under settings. To make it visible select the About Tablet entry in Settings. In the About tablet screen find the Build number at the bottom of the list. Tap the build number several times (about 7). After about three taps a message appears and counts down, when it reaches zero the Developer options will have been enabled, press the back key to see the new option in Settings.

Switch Nexus 7 USB Connection Modes

Some developers have needed to switch the USB computer connection mode from Mobile device (MTP) to Camera (PTP) to get the Nexus 7 detected by ADB. In Settings select the Storage option. Select the menu at the right hand of the notification area, then select USB computer connection.  Change the connection option.

Other Solutions

If the Nexus is not being seen on the USB port and the PC has been rebooted try another port. Ensure that any third-party Apps that may use the Nexus 7 USB port are not running or have been removed. Finally try searching online help forums such as Stack Overflow (stackoverflow.com).