On Thursday, October 31st Google announced their new flagship phone, the Nexus 5. Along with their newest device they announced it would ship with Android 4.4, codenamed “KitKat” (much to the surprise of the entire Android community that was expecting “Key Lime Pie”.)
I received my Nexus 5 on November 7th, and have had some time to get used to KitKat as well as the device itself. Originally this post was going to review the device and the new Android version, but instead I want to discuss several of the key changes that have been introduced with 4.4 and my thoughts on them.
The first big change to Android 4.4 that I want to share my thoughts on is the changes to SMS provider. In the past third-party SMS apps relied on some undocumented API’s to write SMS to the provider, and were able to listen for some global incoming intents. With the changes introduced in Android 4.4 (presumably to allow for Hangouts to be the new SMS application on “Google Experience” devices,) only a single app is allowed to be the “primary SMS app”.
The primary SMS application is the only one that is able to write to the SMS provider and receives the SMS_DELIVER_ACTION intent. Other apps are still able to receive SMS through the old SMS_RECEIVED_ACTION intent, but are unable to abort the intent and cannot send SMS without going through the primary SMS app.
With only one app able to be the primary SMS app, features of some common apps have been broken or made impossible. Apps which backup and restore SMS messages are now only able to backup. Apps like DeskSMS which allow a user to send and receive SMS messages via gmail/google talk/web/tablets are now only able to receive messages. These limitations are a bit annoying since I used to use SMS Backup+ and DeskSMS, but I have a feeling that we will see some clever workarounds or even some of these features builtin to new SMS apps.
System UI: Translucent bars
Finally apps are able to do a little more to customize the look and feel of the system UI. Now apps are able to request translucent SystemUI elements, and can draw behind them. This allows for more immersive apps or even the customization of the look of the entire screen to match the look and feel of a given app. I believe the system will still show edge gradients within the elements (see screenshots of the launcher on the Nexus 5), but we still get more flexibility than before. I know that I’ve been asked by designers and product people about changing the color of the system UI bars more than once.
Storage Access Framework
This is probably one of the new features that I am most excited for. This allows for you to access files from file hosting services right from the file picker. This means that when you want to share a picture on Twitter, you can look through dropbox or google drive for that picture, rather than having to save the picture to your phone first, or having to share from within the Dropbox or Drive app directly. Allowing 3rd party apps to provide seamless access like this huge in terms of pushing users towards remote storage, as well as making Android the best platform for sharing from.
A new runtime
Android 4.4 brings a new runtime with it: ART. It uses AOT (ahead of time) compilation instead of Dalvik’s JIT (just in time) compilation. This promises increased performance for app launches and across the board improvements. Installing apps will take a bit longer, and they will use 10-20% more storage, but the end result will be higher performance. The feature is still experimental though, so to enable it you will need to look in the developers menu for the option to switch your runtime. I gave it a try for a day and did not notice a big difference, except for an incompatible app which caused me to switch back to Dalvik for the time being. Since this feature is experimental the improvements that it could bring may not be obvious just yet.
Android 4.4 KitKat is a step in the right direction. I think that the changes that “break” SMS apps will be worked around in an innovative way, or new ideas will come about. Once ART is ready for prime time it will also become the default runtime. Android is constantly evolving and each new release brings some cool hints about the future.