ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: ОТВЕТ НИЖЕ УЖАСНО УСТАРЕЛ И НЕ МОЖЕТ БЫТЬ ПОЛНОСТЬЮ ПРАВИЛЬНЫМ.
Вы можете программировать на C / C ++, используя Android NDK . Вы должны будете обернуть свою кодовую базу c ++ в статическую библиотеку и загрузить ее через оболочку Java и JNI.
Стандартный NDK не поддерживает RTTI, и многие функции стандарта c ++ также недоступны, такие как std :: string и т. Д. Чтобы решить эту проблему, вы можете перекомпилировать NDK. Дмитрий Москальчук поставляет модифицированную версию NDK, которая поддерживает это в http://www.crystax.net/android/ndk-r3.php. Эта модифицированная версия работает на всех телефонах Android, работающих на процессоре ARM.
В зависимости от типа приложения вы должны решить использовать Java или C / C ++. Я бы использовал C / C ++ для всего, что требует вычислительной мощности и игр выше среднего уровня - Java для остальных.
Просто выберите один язык и напишите большую часть заявки на этом языке; Вызовы JNI могут значительно снизить вашу производительность. Java не так сложен, хотя - если вы знаете, как программировать на C / C ++. Преимущество Java состоит в том, что приложение может работать на любом устройстве под управлением Android, поскольку приложения NDK зависят от архитектуры, для которой оно было скомпилировано.