I am an Android developer.
aegis wrote:spliff, it will not sync with x86.
This is a very important aspect. Furthermore, Android will likely run on ARM, MIPS, and x86 (official, unofficial port already exists) over the next year or so. Furthermore, ARM in of itself has many variations - for example, some don't have FP, whereas some that do have FP is actually still fairly slow. Additionally, on Android, all UI components of an application must still be coded in Java, requiring a JNI interface bindings and/or various service hooks, or other tricks.
Also, while the NDK continues to improve, it is still rather limited and APIs can continue to change/evolve over time.
Furthermore, GPU performance is still all over the place. Some high end devices have lackluster GPU performance. Not all use VR-based implementation. Unlike Apple's platform, support can be a serious headache because of the huge variation in capabilities and performance. Even worse, some devices are just flat out broken in regard to various features (e.g. Droid exposes light sensor but it never returns results).
OpenGL ES is a variation of traditional OpenGL. This likely means writing a completely new render pipeline, which based on comments I've read here, due to Spring's design, is a serious project in of itself, over and above what is already a considerable project. And that ignores the fact that some OGL profiles are flat out broken on some Android devices; resulting in everything from flat out breakage to lackluster performance.
Also, the Dalvik VM is very finicky about performance critical code. Its extremely important the GC never attempt to collect during game play as jitter and all out lag will become painfully obvious to players. Creating such a design is unquestionably doable, but requires a precise eye during design and development.
Lastly, Android's support for C++ sucks. They only support a subset which absolutely does not include templates, exceptions, or RTTI.