If you haven't heard, the Android 2.3 SDK was released to the public today. Up until this release, Android has been a bit problematic for many game developers. While it's made steady progress in that area since the 1.0 release in 2008, there have been many things missing that we game developers have been begging for. Ask and you shall receive. 2.3 comes with the release of NDK r5 which includes a slew of game-friendly native APIs. Native Input, Native EGL and one of the biggest ones.. OpenSL!
This release is really a big push toward native game development on Android. When I say native, I mean c or c++ (the native languages of Linux, which Android runs on top of). This new NDK release does affect Java game developers in a positive way as well as they can do things like implement their own SoundPool or Audio DSPs in native code and use them with their Java-based game. There are also some HUGE bug fixes in core Android including a completely rewritten touch input system which FINALLY solves the problem of significant game slow down when the screen is touched. That problem has plagued many Android games and I think developers will be happy when they see their game taking its new breath of performance on Gingerbread devices.
Let's take a look at the features listed in the NDK r5 release notes:
* Native Activity support (you no longer need to write JNI for the activity lifecycle!)
* Native Input support (you no longer need to write JNI for the touch and keyboard!)
* Native sensor data support (once again, no more JNI for sensor data!)
* Native event loop APIs
* Window and surface subsystem (direct control from your native app)
* OpenSL ES support (this is HUGE. Finally - low latency audio for Android!)
* C++ STL support (crystax has been a good workaround until now but this is excellent to see)
Surely Gingerbread will be known as the version that made Android good for gaming. These features open up a whole new realm of high performance games on the platform. I'm very, very happy to see that the Android team has put such effort into bringing these features in. Originally I was hoping just to see OpenSL, but then in the release announcement today there was all that gravy!
So what's the catch? First of all, device manufacturers have been notoriously slow (or non-existant) at getting new versions of Android onto their devices. I feel like we'll be lucky to see 50% of devices running Gingerbread next year. As always, the devices that need it the most (older ones) will be the ones that get passed over. The theory is that eventually everyone gets a new phone. That's going to lead to some tough decisions for developers as they'll be missing out on quite a huge chunk of the market if they only target 2.3 and up.
Still, the sooner the better and this release is a milestone in platform maturity. I'm glad to see the emphasis on game support and I hope it continues, though I think at this point it's in pretty good shape and I look forward to seeing the next generation of Gingerbread games!
Badlogic Games has a more detailed editorial on this release - initial thoughts on android 2.3 from a game developer's perspective
And here is the official announcement