APIs do Android são Java. Desde 2010, o Google fornece o NDK (um SDK) para desenvolvedores de C / C ++.
O NDK oferece duas maneiras:
- para dispositivos Android 1.5, você pode carregar uma biblioteca elf e usá-la no aplicativo java por meio de uma ponte JNI
- para dispositivos Android 2.3, você pode usar um NativeActivity para ignorar o código de atividade Java do aplicativo de tela cheia.
O NDK oferece poucas API C / C ++:
- uma pseudo libc chamada biônica: muitas funções não estão disponíveis
- uma biblioteca pthread
- OpenGL ES 1.x (> Android 1.5) e OpenGL ES 2.x (Android 2.0)
- OpenSL (suporte limitado no Android 2.3)
Mas muitas APIs são apenas Java (também disponíveis via JNI).
A versão NDK 5 é a primeira utilizável para desenvolvedores de C ++ porque oferece:
- RTTI
- Exceções suportadas
- STLport
- suporte a gdb para programas multiencadeados
A operação mais dolorosa é a depuração em dispositivos Android. Então, desenvolvo minha própria estrutura multiplataforma (OS X, Windows, Linux, iOS e Android) para depurar primeiro na plataforma desktop, na próxima plataforma iOS (no Simulator) e Last (Android).
O emulador do Android (não um simulador) tem um desempenho ruim e não pode emular o OpenGL ES 2.x. Eu recomendo dispositivos reais para desenvolver.
Você pode encontrar muitas informações úteis: