Ещё есть
несколько middleware-движков, которые умеют билдить андроид-приложения,
например Corona SDK, или та же Unity. Там языки свои, в Короне- Lua, в
Unity — C#, JS.
Родной язык Андроида (как это ясно видно из документации) — это Java.
Весь API к платформе предоставлен в виде Java библиотек. Впрочем, на
самом телефоне бежит не джава — джававский байткод интерпретируется в
родной андроидовский (Dalvik), который и запускается на аппарате. Кроме
этого, есть NDK (native development kit) — набор инструментов и
библиотек, которые позволяют скомпилировать нейтивный позикс (Линукс)
код и прицепить это к аппликации. Соответственно, там может бежать все,
что компилируется в нейтевный код, включая интерпретаторы скриптовых
языков и виртуальные машины. До недавнего времени, нельзя было создать
приложение полностью в нейтивном коде — все равно нужна была обертка из
Java, недавно, добавив набор нейтивных библиотек с системными API стало
возможно написать нейтивную программу от начала до конца, без Java.
Из вышеперечисленного ясно, что можно писать практически на чем угодно. В
реальности же, в большинстве случаев, пишут на Java, иногда цепляют
переписанные узкие места и/или сторонние библиотеки на С/С++. Исключения
— игры, которые часто пишут целиком или почти целиком на С++.