Versão curta: trabalhar com C ++ no Android é possível e mais fácil a cada versão do Android SDK / NDK, mas é mais difícil do que trabalhar com Java.
Versão longa :
Para cada versão, o Google adiciona mais funcionalidades ao Android Native Development Kit e a torna cada vez mais independente do código Java.
Leia http://developer.android.com/sdk/ndk/overview.html para obter mais detalhes:
Escreva uma atividade nativa, que permita implementar os retornos de chamada do ciclo de vida no código nativo. O Android SDK fornece a classe NativeActivity, que é uma classe de conveniência que notifica o código nativo de qualquer retorno de chamada do ciclo de vida da atividade (onCreate (), onPause (), onResume (), etc). Você pode implementar os retornos de chamada em seu código nativo para manipular esses eventos quando eles ocorrerem. Os aplicativos que usam atividades nativas devem ser executados no Android 2.3 (API Nível 9) ou posterior. Você não pode acessar recursos como Serviços e Provedores de Conteúdo de forma nativa; portanto, se desejar usá-los ou qualquer outra API de estrutura, ainda poderá escrever o código JNI para fazer isso.
O problema é que, se você usar o NDK mais recente, não poderá implantar e muitas versões Android não recentes.
De qualquer forma, mesmo nas versões NDK anteriores, você pode ter um código Java mínimo (para interagir com o SO) e o código completo do aplicativo em C ++ ou qualquer coisa nativa.
Também há esforços para ajudar os desenvolvedores nativos a trabalharem totalmente em C ou C ++ por meio de plugins IDE como este Vs-Android, que é um plug-in para o Visual Studio 201x, ocultando todo o processo de compilação e geração: http://code.google.com / p / vs-android /
Além disso, se você planeja portar seu aplicativo para outro sistema operacional, usar C ++ para o núcleo do aplicativo (talvez com uma linguagem de script no topo) é uma boa idéia. É apenas mais caro no tempo de desenvolvimento do que outras alternativas - por motivos específicos ao C ++ e às implementações disponíveis das ferramentas de desenvolvimento, por exemplo, tempos de compilação excessivos podem prejudicar sua produtividade efetiva.
Dito isto, essa não é a maneira mais fácil de trabalhar em aplicativos móveis.