Android Native Development Kit

Android 2.3 Gingerbread has been announced, and what I find the most interesting in it is related to the Native Development KIT (NDK) coming with it; the NDK r5.

The new API level 9 of Android 2.3 brings with it a “Native access to Activity lifecycle” : it allows developers to write an Android Application with absolutely no Java coding, by the use of a provided Java Class “NativeActivity“. A “native-activity” sample gives you an example of making use of it through the “native_app_glue”, a C-only wrapper (see also my experiments on NativeActivity).

At the same time this revision r5 of the NDK is becoming interesting for me, with the first official support of C++ exception and RTTI. There is also a way to get a “standalone toolchain” with GCC 4.3, which give the ability to use only standard cross-compiler command (make) instead of the specific files.

All this is not really well documented… You get plenty of example and sources, but there is not much in-code comments nor any “Native API Reference” available. In fact, even the documentation is not available directly on Internet: it is only provided on the NDK archive!

I share it on this web server : here is the NDK-r5b HTML documentation (

Edit: look at this Android Developer Blog post about Gingerbread NDK
Edit2: there is also a android-ndk Google group
Edit3: some other people share my enthusiasm about Gingerbread and the new NDK revision !

Android official ressources

The official Android Developer website really is THE perfect place for anything related to Java development for Android (*), and it is regularly updated !

You should start with the Android Basics in the Android Dev Guide, that will give you an initial overview of the platform.

Then, you can follow the Tutorials in the Developers Resources, after what you would be able to look at the Sample Code in the same place.

Personally, I also did a complete survey of the Developer Blog that is full of good idea. I am now following it through RSS feeds, but some of those good technical advice can also be found in the Technical Resources->Articles section, in the Common Tasks and in various FAQs.

Last but not least, if you like, you could also follow some of the Google I/O conferences and other related interviews on the Videos section.

I also love to look twice a month at the charts of Android Versions showing how new platform API are spreading, which can help you choose the API level you want to be compatible with (edit: chart updated in April 2011) :

Android Versions ChartSince the beginning (December 2009), I’ve decided to stick to Android >=2.0 (API level 5) and now Android 2.1+ represents more than 80% of the active devices (edit: now more than 90% at the time of the chart upload).