This Thursday, May 28th 2015, I was able to attend Google I/O Extended at their Cambridge Massachusetts campus. A special thanks to the Boston Android meetup group for the invitation!
Of course, Google had a plethora of announcements. Here are some of the most interesting ones I took away, in no particular order.
First, the developer preview is officially available! Head here to download it now. During the What’s New in Android live stream it was noted that the Google Android team will be iterating on a monthly release cycle. Each release will incorporate bug fixes as well as feedback from the developer community. So, pull it down and start playing with it now. Get your feedback and suggestions in there. Preview 2 will land towards the end of June. Preview 3 will land towards the end of July, and the final release will land sometime in Q3.
So what is Android M all about? It seems to be largely about optimization and polish under the hood. Still, there are some compelling new features being baked in worth mentioning. The three that stand out most for me when it comes to app development are App Permissions, Doze, and App Linking.
Gone will be the days where you have to agree to grant an app unfettered access to any number of device capabilities at install time. Apps will now request permission at the time that permission is needed. As an example, an app that uses the device camera to scan a bar-code, would request permission to use the camera at the time that feature is first used. Now, as users, we can make informed choices that are pertinent to the particular context that requires the permission. It gets even better. This is no longer a one and done proposition. We will now be able to look at each of the permissions an app has, after the fact, and revoke those permissions on an a la carte basis, at any time. One additional nicety is that we can inspect things from the other side and see a list of which applications have a particular permission. We can revoke permissions in that view as well. For example, if I wanted to look at a list of all apps that have permission to read my contacts, I could easily review this and remove apps as I saw fit. The upside to being able to revoke permissions after granting them is that it makes it possible to temporarily grant an app permission. We can allow an app to access something on a one time basis if we agree with the use case and then block it afterwards. That way we can feel comfortable there isn’t something suspect going on in the background once an app has permission. If we don’t feel comfortable with the use case we can block it from the onset. Of course, this may prevent some apps from being able to carry out desired functions, such as looking for friends who also use an app, but it empowers the user to make these decisions at run time. As a user I’ve always wanted this capability. It seems enough of us did too and Android team listened.
This permission model is part of Android M. That’s important to the developer and I’ll explain why. Empowered with this capability, a user can view and revoke permissions from any legacy app even though it was never built with M in mind. That may pose some problems. If an app expects, or assumes a permission is available, the app may run into errors, or even worse, crash should those permissions be revoked. It remains to be seen how widely this impacts existing apps, but chances are there is a lot of code out there not checking which will need to be updated or risk unintended behavior.
Doze is more of a background optimization feature so it may not seem to fit into mentioning it in an “interesting to developers” context. Not so. I’ll explain. What does Doze do? Doze improves battery life by up to 50%. That is great news for the device end user. How it works is where things get interesting for the developer. It works by monitoring device usage while the device is unplugged, discovering patterns, and dialing back activity such as updates over the network to a sleepy “doze” mode, automatically. That may be important to your app so keep it in mind. Where this becomes most important to a developer is gaining the understanding that if your app is not used for a sufficiently long enough period of time, the OS will park it and the app will lose all network connectivity. This isn’t permanent, as network connectivity will be restored if/when the user opens the app again, but if the app is making background updates for some functional reason, your inactive users are going to fall off the map. There are certainly use cases I can think of where having this knowledge, as a developer, or even a product owner, is going to matter.
We know that the current digital landscape is represented by mobile apps (both native and hybrid/cross-platform), mobile websites, and desktop websites alike. The new app linking capability available in Android M allows for more seamless integration between apps and the web. Currently, when we click a link from somewhere within Android, we are presented with the disambiguation dialog so that we can choose what app equipped to handle the intent should open it. App linking is a really cool way to skip that and have links open directly in the intended app. Let’s take YouTube as an example. The intent filter in the activity that would handle the YouTube URL can be configured to auto verify with the YouTube server that it owns the URL. That way when you click on a YouTube link from an email it would automatically open in YouTube, provided the app is on the phone, without having to ask the user first. This will provide for a much better user experience for large and small sites/apps alike. I know I’ll be using this one in the near future
Chrome Custom Tabs
Speaking of hybrid apps, Chrome custom tabs is a useful feature that I foresee being employed on any number of my future projects. It is a way to seamlessly overlay a somewhat customizable Chrome tab, within an App, and make it feel like it is part of the app. It is a better alternative to using a WebView since it comes with all of Chrome’s capabilities such as the ability to save passwords, auto-fill data, and security model.
Android Studio 1.3 has been released! Get it here. It now has built in Android NDK development support in both C and C++.
Project Brillo is Google’s latest foray into the IoT (internet of things) space. Brillo is a light weight derivative of the Android operating system. It is meant to run on very low power, very low memory devices such as connected appliances and other smart home components. Accompanying Brillo is a new cross-platform protocol/language called Weave. It stands to handle device to device communication as well as communication between devices and the cloud, whether on Android or iOS.
This one captured my attention as a consumer of Google services as opposed to the developer in me. The key takeaway on this one is that Google will give you unlimited storage for videos and photos for free! Compare that to Amazon Prime Photos which lives under the umbrella of a paid prime membership and doesn’t include video. Unlimited does come with a slight catch though. From the documentation it sounds like images will be down sampled if they are over 16-megapixels and videos will be down sampled to 1080p if they are over 1080p. That still means unlimited actually applies to just about every smart phone user who would like their photos, not only automatically backed up, but cleverly organized, categorized and searchable — for free. Professional photographers wanting to back up their 34-megapixel photos and 4k videos in original fidelity are going to either have to pay for that privilege or be limited to the capacity of their Google Drive account. Jump on over to the Google Photos about page to see all of the features offered and get the App from the Play Store here.
Google continues to prove it is investing heavily in innovation. These are exciting times we are living in. Remember, this is by no means an exhaustive list of the announcements at I/O 2015. They are just the things that I was most excited about. That’s not to say other announcements such as Google Pay, Expeditions, Jump, off-line maps and off-line YouTube, Now on Tap, etc. weren’t also interesting. They are. Head here to watch a recording of the entire Keynote.