Pieter Edelman
15 March 2010

De derde release van de Android Native Development Kit (NDK) is beschikbaar met ondersteuning voor OpenGL ES 2.0, verbeteringen in de toolketen en verschillende bugfixes. Android-applicaties worden normaal gesproken ontwikkeld in Java en draaien in de eigen virtuele machine Dalvik. Met de NDK kan echter native software worden ontwikkeld voor een specifieke processor in C en C++. De kit bevat cross-toolchains voor de Arm-architectuur, bibliotheekheaders voor LibC, LibM, LibZ, JNI en Androids loggingmechanisme, en een set C++-headers. Daar zijn nu de OpenGL ES-headers aan toegevoegd.

Ook bevat de kit de nodige documentatie en voorbeeldcode. Net als de Android-SDK is de NDK beschikbaar voor Windows, Linux en Mac OS X. Met het pakket kunnen platformspecifieke applicaties worden ontwikkeld voor Android-versie 1.5 en hoger.

In de nieuwe versie zijn toolketencomponenten geüpgraded van GCC 4.2.1 naar 4.4.0, wat efficiëntere en compactere code moet opleveren. De oude versie wordt nog wel meegeleverd, omdat de nieuwe uitvoering minder toegeeflijk is met verkeerde template-declaraties, waardoor sommige code niet zou kunnen compileren.

Ook is ondersteuning toegevoegd voor hardwaregraphics via OpenGL ES 2.0, zolang op een Android-versie van 2.0 of hoger wordt gemikt. Hierdoor kunnen afbeeldingen gerenderd worden via vertex en fragment shaders. Een voorbeeldtoepassing is meegeleverd.

In deze nieuwe versie heeft het Android-team ook de naamgeving onder handen genomen, omdat de vorige versie (1.6_r1) de indruk wekt dat deze aan een specifieke Android-Api-versie gekoppeld is. Dat is niet het geval en dus heet deze release simpelweg r3.

Android geeft wel de waarschuwing mee dat er nadelen kleven aan het gebruik van de NDK. Native applicaties draaien lang niet in alle gevallen efficiënter dan de Java-toepassingen, maar de platformonafhankelijkheid gaat wel verloren en bovendien groeit de complexiteit van de applicatie aanzienlijk. Daarom wordt aangeraden de kit alleen in te zetten voor CPU-intensieve bewerkingen die slechts weinig geheugen alloceren, zoals signaalverwerking of simulaties. Ook kan het pakket worden gebruikt om bestaande C- en C++-code te porten naar Android.