AIDE 2.0 Introduces Support for Native C/C++ Apps

AIDE 2.0 adds support for C/C++, a new Design View, better UI and improved Git integration. AIDE is an Android IDE running on Android.

Android IDE or AIDE is an integrated development tool for Android applications running on Android itself. AIDE 2.0 introduces a number of enhancements including:

Support for C/C++ using Android NDK. Such apps can be developed on an Android device or in Eclipse on a PC or Mac. Applications developed with Eclipse can be later imported into AIDE similarly to Java applications.

Design View – changes to a layout can be tested by switching to the Design View without having to build the application

Improved UI – editor tabs and line numbers

Improved Git integration – AIDE offers the option to create a new Git repository when a new application is created

InfoQ: You said AIDE was downloaded over 1M times. Do you have an estimate on how many developers are using it on real projects?

HK: As of today AIDE was downloaded by 1.2M users, It is still present on the devices of 300K users. For a large group of developers AIDE is the first development tool they ever use for app development. Another group use it for browsing and small changes. Those who do "serious" development purchase a Premium Key.

InfoQ: The AIDE app comes bundled with a mobile version of the Android SDK. What's in the mobile Android SDK?

HK: AIDE includes an android.jar file containing the Android Java API, some binaries supporting the build process ("aapt" and "aidl"). Furthermore it contains project templates adapted from Android SDK sample code. For native development with C/C++ AIDE requires another 50MB download for an AIDE-tailored Android Native Development Kit (NDK).

We are very thankful to Google for releasing almost everything Android as open-source and thus allowing us to redistribute those files. Otherwise, a tool like AIDE would have not been possible.

InfoQ: What does the Premium version offer for ~8 Euros?

HK: The Premium Key allows development of larger projects (> 5 source files), Git commit, push and branch support, generation of App packages ready to be deployed to Google Play, and some other goodies.

InfoQ: Does AIDE require root access to see the log files?

HK: Google perceived allowing apps to access the Android logging facilities (logcat) as a security risk and locked it down starting with Jelly Bean. Unfortunately this means that even development tools like AIDE require root access to view the log on Android 4.1 and later. It would be great if Google provided a way for developers to enable this again.

InfoQ: Is there an option to debug the developed apps?

HK: Currently AIDE does not offer a debugger. This is something that is requested a lot by our users. So we are definitely looking into ways to provide that. Debugging an app on the device where the app is running itself poses some unique technical and UI challenges but we tackled similar issues before. So we are confident to offer this eventually.

InfoQ: Please describe AIDE's refactoring capabilities.

HK: AIDE has a custom code analysis engine built-in which enables refactoring and code navigation features similar to what you see in Eclipse and other desktop IDEs. It is not as feature-complete as Eclipse, but it is optimized to work well with the limited resources of mobile devices. Still the most important everyday use cases are available and match the quality of desktop tools: Rename (a method, field, class or variable), Extract method, Inline variable, Introduce variable. Additionally there are some "coding" features which also rely on code analysis but are not refactorings: Find usages (of a method, field, class, variable) and Goto definition (of a method, field, class, variable), Organize imports, Surround with try-catch, Auto-format code, Create setters/getters or constructor for fields.

InfoQ: Any plans for the future?

HK: First AIDE only supported Java for app development, now AIDE also supports C/C++. We do not want to stop there so we are looking into supporting other app development frameworks.