Las API de Android son Java. Desde 2010, Google proporciona el NDK (un SDK) para desarrolladores de C / C ++.
El NDK ofrece dos formas:
- para dispositivos Android 1.5, puede cargar una biblioteca elf y usarla desde la aplicación java a través de un puente JNI
- para dispositivos Android 2.3, puede usar NativeActivity para omitir el código de actividad de Java para la aplicación de pantalla completa.
El NDK ofrece pocas API C / C ++:
- un pseudo libc llamado bionics: muchas funciones no están disponibles
- una biblioteca pthread
- OpenGL ES 1.x (> Android 1.5) y OpenGL ES 2.x (Android 2.0)
- OpenSL (soporte limitado en Android 2.3)
Pero muchas API son solo Java (también disponible a través de JNI).
La versión NDK 5 es la primera que pueden usar los desarrolladores de C ++ porque ofrece:
- RTTI
- Excepciones apoya
- STLport
- Soporte de gdb para programas multiproceso
La operación más dolorosa es la depuración en dispositivos Android. Así que desarrollo mi propio marco multiplataforma (OS X, Windows, Linux, iOS y Android) para depurar primero en la plataforma de escritorio, luego en la plataforma iOS (en el simulador) y por último (Android).
El emulador de Android (no un simulador) tiene un bajo rendimiento y no puede emular OpenGL ES 2.x. Recomiendo dispositivos reales para desarrollar.
Puede encontrar muchas informaciones útiles: