google io 2015 aa (11 of 13)

Google I/O 2015 has come and gone, and as expected, left us with a ton of exciting new features, announcements and products, from the entirety of the Googleplex, including Android, Chrome, Search and ATAP. There is a lot of information from this years conference, and we have sifted through this information avalanche, and filtered out the most important stuff for Android Developers.

We will dive deeper into many of these technologies in the coming weeks. At the barest minimum, Android developers should watch the I/O 2015 Keynote, What’s new in Android and What’s new in Android Developer Tools videos. They all contain vital information regarding currently available and upcoming features.

Without further ado, some of the most important announcements in I/O 2015 for Android developers include:

Android Studio 1.3

ioreview2
Android Studio has gotten a lot of love over the years, and has become the de facto IDE for Android Developers. A lot of new features and updates were revealed, although most are currently available in the Canary (experimental, bleeding edge) update channel for now. Some of the updates include:

  • NDK C/C++ Support. Complete support provided for C/C++ code, including syntax highlighting, code linking and more.
  • New simultaneous visual layout builder and layout editor. While editing a layout xml file, the “Preview” image now also doubles as a visual layout editor.
  • Improved gradle build performance. We were shown scenarios, where the time spent in a gradle build was halved, from 10.2 secs to 5.0 secs in one test, and from 54 secs to 5.9 secs in another.
  • Use of Vector images (.svg) when developing/designing, and the IDE would automatically generate bitmap images for all the different resolutions on build.

Android Design Support Library

ioreview3
Google introduced the Material Design specifications with Android Lollipop, and strongly encouraged app developers to transition existing apps to conform to, and build all new apps with the new design specs. Unfortunately, there was no uniform implementation for some of the most used widgets (e.g.  Floating Action Buttons). This led to diverse implementations of these widgets, especially while trying to support pre Lollipop devices. The Android Design Support Library is a new support library, available to all Android devices from version 2.1 upwards, that provides widgets and views that implement many Material Design specifications and recommendations including CoordinatorLayout, Snackbar, TabLayout, NavigationView, TextInputLayout and Floating Action Buttons. There are exciting APIs available within this library. Visit the Android developer blogpost for more information and links on how to use it.

App Permissions

ioreview1
This is a long requested and anticipated feature. Rather than granting all permissions required by an app on install, users can now grant, deny or revoke previously granted permissions at will. From the users point of view, this is a fantastic and welcome change. For developers, this presents new challenges when building apps. Before accessing a resource that requires permissions, you must confirm that the user has granted your app the necessary permissions, and provide an alternate if your request was rejected.

Full App backup

Currently, app developers can backup user data through Google Cloud services. However, the app developer has to write the code that persists and retrieves the user data. This means that when a user installs your app on a new device, he must start-up your app, and login, before your app fetches the saved data. With full backup however, the backup and restore of user data is done automatically. If the user installs your app on another device, app data is synchronized automatically, and should be available to the user immediately he opens the app. Nifty. Of course, the app developer can specify what files and folders should be backed up, using include (or exclude) tags in the AndroidManifest.xml, but that is all. To take advantage of this, the app must also be built with the “targetSdkVersion” set to 23(Android M). More information is available on the Android Developer site.

Multiple Device testing with Cloud Test Lab

ioreview4
We ran an article, a few days before I/O 2015 kicked off, discussing the best ways to economically test your app across a wide range of Android devices. It appears Google has been hard at work trying to solve this problem faced by Android developers, and introduced Cloud Test Lab during the conference. Cloud Test Lab enables developers test their app(s) on multiple devices simultaneously, and provides detailed reports of success or failures. It appears the devices will be limited to the “top 20 Android devices from around the world”. While this service is not immediately available, it is billed to be released this year, and it’s expected to be completely free and integrated in the Google Play Developer Console. Awesome! You can sign up and get notified of updates.

App Invites

New API that helps users share apps/invite other users to use an app. This is great news for developers, since it helps users share your app via word of mouth with specific other users (their friends, family or colleagues that they expect will like the app). The invites are sent either over SMS or email, with a direct install button. There is a website with detailed instructions and sample code.

DataBindings

This is one of those tools that’s really difficult to explain. You have to see it in action to actually appreciate its brilliance and potential usefulness.
At its most basic, this is a method that helps bind data in an application to specific views in a layout file. For example, if you have a class called User, that has constants firstName and lastName. You could have two TextViews in your layout, called firstNameView and lastNameView, that display the corresponding User values. With data binding, you can describe this relationship in the layout xml file.

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
   <data>
       <variable name="user" type="com.example.User"/>
   </data>
   <LinearLayout
       android:orientation="vertical"
       android:layout_width="match_parent"
       android:layout_height="match_parent">
       <TextView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@{user.firstName}"/>
       <TextView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@{user.lastName}"/>
   </LinearLayout>
</layout>

This is a support library, and would be available to all Android versions from 2.1 upwards. It is still very much experimental, and there is a guide available

Google Cloud Messaging 3.0

ioreview-gcm
Google Cloud Messaging (GCM) is now available for Android, iOS and Chrome apps. The big news here is the new ways of sending the same message to multiple devices. In the past, if you wanted to send the same message to multiple devices, you had to send the message repeatedly to each device id. Now, however, there are two new ways to achieve this. The first, Device Group Messaging, works for sending a message to a single user’s different devices. The other, Topic Messaging, sends a message to all users subscribed to a given topic. With both these methods, you send a single message to the GCM server, requesting either a device group or topic message, and GCM determines what devices to send the message to, and pushes it out to all that match/qualify. This feature is available now, with more information available at the Cloud Messaging website.

Honourable Mentions

Some other exciting stories from I/O include

  • Now on tap and App Indexing – App Indexing helps you get your app found in Google Search, while Now on tap is Google Now with contextual awareness.
  • Voice interactions – Now your app can interact more fully with the user when making voice commands, by asking for confirmations/clarifications and more
  • Fingerprints API – Can verify a user through fingerprint, with the UI completely controlled by your app. Your app can also present a lock screen to the user, forcing him/her to unlock the device before continued use (actually available in Lollipop). Sample FingerprintDialog and ConfirmCredential code available on github.
  • App Linking – Enable your app automatically be launched by default for web domains that you own/control. More information available on the M Preview website.
  • New developer guides/tutorials – There is a new developer tutorial series/channel/community available containing best practices, guides and correct ways of implementing many Android APIs.

Many of the I/O sessions and talks are available on the Google Developers youtube channel. Be sure to check them out for more information. Also, get started developing for Android M, with the developer preview

We will be running more in-depth articles in the coming weeks, discussing these new features in detail, including howtos and tutorials. Do you feel we left out any vital Android developer announcements? Share with the community using the comments section below.

Android Developer Newsletter

Do you want to know more? Subscribe to our Android Developer Newsletter. Just type in your email address below to get all the top developer news, tips & links once a week in your inbox:

PS. No spam, ever. Your email address will only ever be used for Android Dev Weekly.