I have been starting to look into what KitKat means for Android developers. Here are some high level thoughts on some of the changes.
- The headline news for KitKit is that it has a lower memory footprint suitable for lower end hardware. However, as Google themselves say, this is for "next generation" low end devices rather than those already released. There’s no way OEMs are going to update their shipped low end devices. Let’s hope it’s not too much effort for OEMs to start shipping new low end KitKat devices.
- There are some new NFC Capabilities such as Reader Mode to act as readers for HCE. I don’t expect this to excite many developers at the moment as NFC hasn’t yet taken hold. Read Charles Weir’s excellent article on NFC Payments is not Dead Yet where he argues that iOS will have to eventually support NFC. At around that time, Android NFC capabilities will suddenly become more important.
- Android now has a new printing framework. This happens to be an area I am currently working on at the moment trying to get Android 2.3 devices to print for a client project. On 4.4 you can programatically print via Google Cloud Print or to printers where vendors have provided plugins. Note that the Nexus 5 only has HP plugins at present. One useful result of printing support is that the printing API provides native and WebView helper classes to let you create PDFs using standard Android drawing APIs. I expect printing to become more important as tablets increasingly replace desktops.
- There’s a new DENSITY_400 intermediate screen density. However, Google recommend developers do nothing about this and instead rely on the OS scaling from DENSITY_XXHIGH.
- There’s a new shared SMS provider and new APIs. This is likely to cause pain for some developers, for example backup and restore apps, that already access SMS. Google has detailed advice how to update existing apps. SMS might also be a pain point for end users. I personally don’t like the idea of having to use the Hangout app for SMS. We don’t need all the extra fluff when all we want to do is send texts. Reminder to self to try to replace the app with an older stock SMS app. It doesn’t bode well for Google’s future aspirations for the platform if they are willing to coerce users in this way.
- Immersive mode where an app can take over the whole UI is very interesting. I have previously worked on projects that needed a kiosk or captive environment and this has been very difficult on post Android 3.0 devices and required some unconventional/innovative techniques to hide the system soft keys or, more specifically, keep the current activity on top. I expect immersive mode will be well used in the rugged Android ecosystem.
- It’s interesting to see that bitmaps can now also now be re-used when the new bitmap is a different (smaller) size.
- There might be some challenges for WebView developers or developers who use tools that implement screens as webviews. The code underlying the WebView class and related APIs now uses the recent Chromium source code. Google offers some migration tips.
- Another common ask from clients is to see a video of the current development app. This is made much easier with the new "adb shell screenrecord" screen recording. The procstats adb tool is also interesting but let’s hope we will be able to get it to work on more devices than systrace works on.