26 May 2017

feedAndroid Community

Samsung says iris hack is not realistic, difficult to mimic an eye pattern

Once again, Samsung quickly responded to the latest issue that its iris recognition system can be fooled. Earlier this week, we shared with you CCC's findings that they were able to fool the Galaxy S8 with a dummy eye. Samsung said it is not really easy to fool the system. In a short statement sent to […]

26 May 2017 11:00am GMT

‘Asphalt Street Storm Racing’ almost ready for release

Asphalt games are guaranteed to give you adrenaline rush. We've lost count how many racing games we've featured already but we know Gameloft will not stop anytime soon. We've tried the Asphalt 8 recently after the Asphalt Extreme, Asphalt Nitro, and the Asphalt Overdrive. The latest title that will have you racing for hours is […]

26 May 2017 2:00am GMT

Google Opinion Rewards reaches India, Turkey, and Singapore

We don't really care much about Play Store credits and rewards but for those waiting for the Google Opinion Rewards app to be available in your country, know that it is now ready in Singapore, India, and Turkey. That's only three countries but this could mean impending arrival in more regions in the coming months. […]

26 May 2017 1:20am GMT

T-Mobile launches #GetOutoftheRed campaign to entice Verizon customers

T-Mobile has never been shy about getting a leg up on their competitor and being very vocal about it. To kick off their summer celebration, they are taking on Verizon with their #GetOutoftheRed campaign, aiming to lure their subscribers over to the un-carrier by offering to pay off the balance on their smartphone when they […]

26 May 2017 12:50am GMT

Empire TV Tycoon lets you fulfill your TV station management dreams

If you've ever gone, "Man, I think I can manage that TV station better than those clowns on ________ (insert TV station here)" whenever a favorite TV show of yours gets cancelled, you will now be able to put that to the test. Well, at least virtually of course. Popular Steam game Empire TV Tycoon […]

26 May 2017 12:00am GMT

25 May 2017

feedAndroid Community

New Pokemon game makes jumpy Magikarp lovable

Pokemon Go is not even a year old but Niantic has unleashed a lot of related games. They are not really from Niantic but you can find a lot of apps and games that are focused on Pokemon. The latest of which is this 'Pokémon: Magikarp Jump' by The Pokemon Company. It's a simulation adventure […]

25 May 2017 11:00pm GMT

IKEA releases price points for TRÅDFRI smart lighting range

While we probably don't see IKEA as a smart home brand, it's also not surprising that they would come up with products that would turn houses smarter. They recently announced a new smart lighting range called TRÅDFRI and they have now released the price details of the various products in that line. It has also […]

25 May 2017 10:00pm GMT

E FUN unveils new Nextbook Ares 11A Android tablet

The Nextbook Ares 11A tablet is the latest Android-powered tablet from E FUN. We've been seeing tablets from this brand since 2013 and we don't think it will stop anytime soon because people are always looking for inexpensive yet reliable gadget. The new Nextbook Ares Android tablet comes equipped with a standard 64GB of built-in […]

25 May 2017 9:20pm GMT

Verizon introduces new SmartHub Wi-Fi router

If you're looking for a brand new Wi-Fi router for your home or your office or even to take on your vacation, Verizon is offering up its newest product, the SmartHub. It is actually a 4G LTE router where you can bring Internet to your smartphone, tablet, laptop, computer, smart devices and more than 200 […]

25 May 2017 8:40pm GMT

Want to develop Android apps like a pro? Read these eBooks [DEALS]

Time to train for a new career? Learn how to program apps for the world's most popular mobile operating system with the Android Development eBook Bundle, just $24 - a savings of 83% off the regular retail price - right now at Android Community Deals. The world's most popular mobile operating system continues to be […]

25 May 2017 8:00pm GMT


Join Talk Android as its assistant video editor!

If you've checked out our YouTube channel in recent weeks, you probably noticed something is different. We're in the process of overhauling our video strategy under Kent Oki's lead. That's why the videos are really solid these days. Now we're seeking an assistant video editor to contribute when needed. We want you to focus on […]

Come comment on this article: Join Talk Android as its assistant video editor!

Visit TalkAndroid

25 May 2017 7:15pm GMT

Android co-founder Andy Rubin will introduce Essential’s first phone on May 30

The brain behind Android is about to introduce his first phone outside of Google. Following a hype-filled tweet from Alphabet's Eric Schmidt, Android co-founder Andy Rubin has finally shared when we'll get to see his new company's phone. Both he and his company have confirmed Essential will launch its first phone on Tuesday, May 30. […]

Come comment on this article: Android co-founder Andy Rubin will introduce Essential's first phone on May 30

Visit TalkAndroid

25 May 2017 7:08pm GMT

feedAndroid Community

Android 7.0 Nougat ready to roll out for more LG mobile devices

More LG devices are getting the newest Android 7.0 Nougat update. Finally, these LG phones and tablets will get a taste of the chunky, chewy treat: LG G Pad III 8.0, LG Stylus 2, LG G5, and the LG V10. We haven't really featured any LG getting the OS update. The last information we heard […]

25 May 2017 7:00pm GMT

Tasker: 10 best things you can do on the best automation there ever was

We're on a Tasker binge these days, and we've already introduced you to what is probably the best automation app you can find out there for an Android device. Because of how the Android operating system is designed, there is a seemingly endless list of possibilities when it comes to features. You only need to […]

25 May 2017 6:00pm GMT

Garmin VIRB 360 action cam introduced

Garmin doesn't just want to excel in the GPS-navigation game. The brand recently entered the wearable game and now it wants to tap into the action camera industry by introducing the VIRB 360. It's a new 360-degree camera that is poised to rival the Samsung Gear 360, Acer Holo 360, YI HALO VR Camera, and […]

25 May 2017 5:20pm GMT

feedAndroid Developers Blog

Welcome to your New Home on Android TV

Posted by Paul Saxman, Android Devices and Media Developer Relations Lead

Android TV brings rich app experiences and entertainment to the biggest screen in your house, and with Android O, we're making it even easier for users to access content from their favorite apps. We've built a new, content-centric home screen experience for Android TV, and we're bringing the Google Assistant to the platform as well. These features put content that users want to access a few clicks, or spoken words, away.

The New Android TV Home Screen

The new Android TV home screen organizes video content into channels and programs in a way that's familiar to TV viewers. Each Android TV app can publish multiple channels, which are represented as rows of programs on the home screen. Apps add relevant programs on each channel, and update these programs and channels as users access content or when new content is available. To help engage users, programs can include a video preview, which is automatically played when a user focuses on a program. Users can configure which channels they wish to see on the home screen, and the ordering of channels, so the themes and shows they're interested in are quick and easy to access.

In addition to channels for you app, the top of the new Android TV home screen includes a quick launch bar for users' favorite apps, and a special Watch Next channel. This channel contains programs based on the viewing habits of the user.

The APIs for creating and maintaining channels and programs are part of the TvProvider APIs, which are distributed as an Android Support Library module with Android O. To get started using these APIs, visit the Android O Developer Preview site for an overview, and try out the Android TV Channels and Programs codelab for a first-hand experience building an Android TV app for Android O.

Later this year, Nexus Players will receive the new Android TV home experience as an OTA update. If you wish build and test apps for the new interface today, however, you can use the Android TV emulator or Nexus Player device images that are part of the latest Android O Developer Preview.

The Google Assistant on Android TV

The Google Assistant on Android TV, coming later this year, will allow users to quickly find and access content using their voice. Because the Assistant is context-aware, it can help users narrow down what content to play. Users will also be able access the Assistant to control playback, even while a video or music is playing. And since the Assistant can control compatible smart home devices, a simple voice request can dim the lights to create an ideal movie viewing environment. When the Google Assistant comes to Android TV, it will launch in the US on Android devices running M, N, and O.

We're looking forward to seeing how developers take advantage of the new Android TV home screen. We welcome feedback, so please visit the Android TV Developer Community on G+ to share you thoughts and ideas!

25 May 2017 5:00pm GMT

feedAndroid Community

Acer unveils two new Nougat-powered Iconia tablets ahead of Computex

Computex is happening in Taiwan next month and before it opens, Acer has announced two tablets under the Iconia series. The Iconia One 10 and the Icone Tab 10 both run Android 7.0 Nougat OS out of the box already. The Tab 10 is ideal for those who wants to use the tablet for media […]

25 May 2017 4:40pm GMT


Lenovo will “never phase out” its brand for phones despite Motorola’s comeback

Maintaining two brands in the same industry is tough. Lenovo, however, doesn't seem to mind the challenge. It'll continue selling phones with its own name while the Motorola brand makes a comeback. Lenovo CEO Yang Yuanqing spoke to Reuters about changes going on within the business. After becoming profitable again in March, the executive revealed […]

Come comment on this article: Lenovo will "never phase out" its brand for phones despite Motorola's comeback

Visit TalkAndroid

25 May 2017 4:35pm GMT

feedAndroid Community

OnePlus 5 confirmed to have a Snapdragon 835, fingerprint scanner

More confirmation about the OnePlus 5. This time, no more leaks and speculations but rather official ones from the company. The Chinese OEM just posted on its community site the fact that the OnePlus 5 will be powered by a Snapdragon 835 processor. It's the latest premium chipset from Qualcomm so we can expect that […]

25 May 2017 4:00pm GMT

Xiaomi Mi Max 2 debuts with a large 6.44-inch screen, 5300mAh batt

Xiaomi has recently announced a new Mi Max entry. The phablet follows after the Mi Max which was introduced last year. As early as February, we've been speculating the successor that we said could launch with 6GB RAM and Snapdragon 660. Over a month ago, some images were also leaked and now it's officially here. […]

25 May 2017 3:20pm GMT


[TA Deals] Learn the most important programming languages with these courses (89% off)

You're going to learn it all with this bundle on Talk Android Deals. We're offering a pack of courses that covers multiple programming languages like Scala, Java, and Python. It's 96+ hours of courses that you can actually go through on your own time and at your own pace. Here's what you get: Learn By […]

Come comment on this article: [TA Deals] Learn the most important programming languages with these courses (89% off)

Visit TalkAndroid

25 May 2017 11:50am GMT

Samsung Gear 360 goes on sale on Thursday, May 25th

When Samsung held their big launch event for the Galaxy S8 and Galaxy S8+, most of the attention was on those smartphones. However, they were not the only hardware announced by Samsung that day. The company also revealed their second generation Gear 360 camera. At the time, pricing and a release date were not announced […]

Come comment on this article: Samsung Gear 360 goes on sale on Thursday, May 25th

Visit TalkAndroid

25 May 2017 3:30am GMT

T-Mobile bumps up deprioritization limit to 32GB

Back in March, T-Mobile updated their deprioritization limit from 28GB to 30GB. Now, only a couple months later, T-Mobile is making another adjustment to the limit by raising it to 32GB. If you are not familiar with deprioritization, this means T-Mobile may throttle your connection speeds if you have used over 32GB of data in […]

Come comment on this article: T-Mobile bumps up deprioritization limit to 32GB

Visit TalkAndroid

25 May 2017 2:35am GMT

OnePlus confirms Snapdragon 835 for OnePlus 5

One of the next highly anticipated flagship devices poised to hit the market this summer is the OnePlus 5. Early rumors suggest OnePlus has decided to try to go toe-to-toe with industry heavyweights like LG and Samsung by giving the new device all the best components. We are still waiting for the big reveal on […]

Come comment on this article: OnePlus confirms Snapdragon 835 for OnePlus 5

Visit TalkAndroid

25 May 2017 2:21am GMT

24 May 2017

feedAndroid Developers Blog

Request a professional app translation from the Google Play Console and reach new users

Posted by Rahim Nathwani, Product Manager, Google Play
Localizing your app or game is an important step in allowing you to reach the widest possible audience. It helps you increase downloads and provide better experiences for your audience.
To help do this, Google Play offers an app translation service. The service, by professional linguists, can translate app user interface strings, Play Store text, in-app products and universal app campaign ads. We've made the app translation service available directly from inside the Google Play Console, making it easy and quick to get started.
  • Choose from a selection of professional translation vendors.
  • Order, receive and apply translations, without leaving the Play Console.
  • Pay online with Google Wallet.
  • Translations from your previous orders (if any) are reused, so you never pay for the same translation twice. Great if you release new versions frequently.
Using the app translation service to translate a typical app and store description into one language may cost around US$50. (cost depends on the amount of text and languages).
Find out more and get started with the app translation service.

How useful did you find this blogpost?

24 May 2017 5:45pm GMT


[Video] Unboxing the Samsung Galaxy S8

Let's see what's in the box. We already reviewed the Samsung Galaxy S8 and S8+, but now we're showing you what every unit includes. Kent finally got his hands on the phone to do an unboxing video. And, because its him sharing the experience with you, you're bound to laugh and smile throughout. Somehow Kent […]

Come comment on this article: [Video] Unboxing the Samsung Galaxy S8

Visit TalkAndroid

24 May 2017 5:05pm GMT

[Deal] Amazon knocks $10 off the Echo Dot for a limited time

Today is the best day of the year for you to buy the Echo Dot from Amazon. The online retailer currently has its smaller in-home digital assistant available for $40, which is $10 less than the everyday price. It's a discount we haven't seen since Black Friday 2016. Like the Echo, the Echo Dot is […]

Come comment on this article: [Deal] Amazon knocks $10 off the Echo Dot for a limited time

Visit TalkAndroid

24 May 2017 3:27pm GMT

Facebook doubles down on live video with two new features

Facebook Live has been an incredibly popular part of the social media website since it was introduced, and Facebook has seen increased user engagement from it, too. To keep that popularity growing, they've announced two brand new features explicitly focused on live video broadcasts and chats. First up is called Live Chat with friends, which does […]

Come comment on this article: Facebook doubles down on live video with two new features

Visit TalkAndroid

24 May 2017 2:43pm GMT

Google’s Jamboard for group collaboration is now available for purchase

Google wants to help solve your collaboration issues, and they're going to do with Jamboard, a gigantic whiteboard with a ton of cloud integration. It features a 55-inch screen that can be drawn and worked on, and its team-focused feature set makes it easy to sync things up for multiple people in a group. This device […]

Come comment on this article: Google's Jamboard for group collaboration is now available for purchase

Visit TalkAndroid

24 May 2017 12:00pm GMT

LeEco layoffs affect 325 employees, pauses U.S. expansion amid financial crisis

It could be months before we see what's next for LeEco. It might even be 2018 by the time we see anything new. With its cash spent and little revenue coming in, the company announced today its expansion in the United States is on hold indefinitely. Hundreds of employees have been laid off while the […]

Come comment on this article: LeEco layoffs affect 325 employees, pauses U.S. expansion amid financial crisis

Visit TalkAndroid

24 May 2017 1:25am GMT

23 May 2017

feedAndroid Developers Blog

Group Messaging in Android Auto

Posted by David Nelloms, Software Engineer

Communicating with a group of people is a common use case for many messaging apps. However, it may be difficult to know how the Android Auto messaging API applies to group conversations. Here are some tips for getting started with group messaging in Android Auto:

Conversation Name

When constructing the UnreadConversation builder, you are required to pass in a name. This is the name of the conversation that is displayed to the user when messages arrive.

UnreadConversation.Builder unreadConvBuilder =
    new UnreadConversation.Builder(conversationName)
        .setReplyAction(msgReplyPendingIntent, remoteInput);

For one-on-one conversations, this is simply the name of the other participant. For group conversations, it is best to choose one of two options for the name:

  1. Conversation title: If your app supports adding a title to group conversations, use the title for the name parameter to be consistent with your in-app experience. This field is similar to NotificationCompat.MessagingStyle#setConversationTitle.
  2. A list of participants: Build a comma-separated list of participants for the name parameter to identify the group. Note that this is read aloud by the text-to-speech system, so you may need to abbreviate the list for large groups. You should balance allowing users to uniquely identify the group with the time taken to listen to messages.

Text to Speech Formatting

Getting text to sound natural using a TTS system is a challenging problem. There are teams working hard to improve this, but there are steps you can take to create a better user experience with the current capabilities. The Android Auto messaging API does not yet have an option for pairing participants with individual messages in a group conversation. This is problematic for drivers when there are multiple unread messages from multiple participants in a group conversation, as the drivers cannot see which group member sent which message. One solution is to prepend the sender's name to the message whenever the sender changes so that the names are read aloud to the driver.

CharSequence currentSender = null;
for (Message message : myMessages) {
    StringBuilder messageText = new StringBuilder();
    CharSequence sender = message.getSender();
    // Maybe append sender to indicate who is speaking.
    if (!TextUtils.isEmpty(sender) && !sender.equals(currentSender)) {
        if (currentSender != null) {
            // Punctuation will briefly pause TTS readout between senders.
            messageText.append(". ");
        currentSender = sender;
        // Punctuation will separate sender from message in TTS readout.
        messageText.append(": ");

Some things to note about the above sample code:

Get participants

In searching for how to handle group messaging, you may have noticed UnreadConversation#getParticipants. This can be confusing as there is no mechanism to add multiple participants in the builder. The builder implementation populates the array with the conversation name passed to its constructor. Internally, Android Auto uses the singular UnreadConversation#getParticipant, which returns the first element of the participants array, to populate the title in the notification view.

Stay tuned

The Android Auto team is working on ways to make messaging with drivers simpler and more intuitive for app developers. Stay tuned for future updates so that you can continue to deliver a great user experience!

23 May 2017 8:48pm GMT


Russia added to list of countries where Android Pay is available

Today Google announced Russia has become the 11th country where Android Pay is available for use. In their announcement, Google goes over all of the basics about Android Pay including things like how to use it with your device via NFC at a physical retailer or using the Android Pay button with online retailers. Like […]

Come comment on this article: Russia added to list of countries where Android Pay is available

Visit TalkAndroid

23 May 2017 5:41pm GMT

Xfinity Mobile offering unlimited data for $45 per month to Comcast customers

During the past week set against the hoopla of Google I/O 2017, Comcast went live with their new Xfinity Mobile wireless service. Xfinity Mobile is the company's entrance into the wireless market made possible by a deal they struck with Verizon to operate as an MVNO. To celebrate the launch of the new service, users […]

Come comment on this article: Xfinity Mobile offering unlimited data for $45 per month to Comcast customers

Visit TalkAndroid

23 May 2017 5:17pm GMT

[Deal] Take $50 off the Moto Z Play, buy it for $399

Its successor may be coming soon, but right now you can get the Moto Z Play for $50 less than its usual price. Last year's device is getting ready to be refreshed; therefore, it's maker wants to unload existing inventory. There's no better way to quickly get units out off your hands than running sales. […]

Come comment on this article: [Deal] Take $50 off the Moto Z Play, buy it for $399

Visit TalkAndroid

23 May 2017 3:16pm GMT

19 May 2017

feedAndroid Developers Blog

Make more money with subscriptions on Google Play

Posted by George Audi, Tom Grinsted and Larry Yang, Google Play

The subscription business model is one of the best ways to make more regular, reliable, and recurring revenue on Android and Google Play. In fact, both developers and users love subscription apps so much that we've seen a 10X growth in consumer spend over the past three years and double the number of active subscribers in the past year. Thousands of developers are offering subscriptions through Google Play and are already seeing success with our billing platform. That's why we've been working hard to help you take advantage of this opportunity and give you greater insights into your business and Android users.

New features to help your subscriptions business thrive

You've got a high-performing product with fantastic features and compelling content, but your business can't succeed without acquiring new users. In addition to free trials, intro pricing, flexible billing periods, and more, we recently launched the ability to pay for subscriptions with Google Play balance. Although people have already been using gift cards to pay for Play content in over 20 countries, the use of gift cards to pay for subscriptions in regions where cash is a popular form of payment, such as Latin America, has resulted in as high as a 15% increase in subscription spend.

But it's not just about acquiring new customers, it's about retaining the ones you have. That's why we are introducing account hold, where we work with you to block access to your content or service if a user's form of payment fails. This directly links a payment failure to the user losing access to your content and/or premium features, which is enough to get them to go and choose a new form of payment. When Keepsafe-the developer of Keepsafe Photo Vault, a photo locker for private pictures and videos with over 50M downloads-integrated account hold, their renewal rate on Android increased by 25%. We have over a dozen developers in early access today, and we will be announcing public availability at the end of June.

We know data is vital to running your business, so we're excited to announce a new subscriptions dashboard in the Play Console, and a new report on Android app subscribers.

The dashboard brings together subscription data like new subscribers, cancellations, and total subscribers. It also displays daily and 30-day rolling revenue data, and highlights your top-performing products. This will give visibility into your subscription products and users and will help guide your business decisions.

Insights to help you grow your subscriptions business

In addition to products and features, understanding people's needs is core to building a successful subscription business. We talked to 2,000 Android app subscribers in the US and UK and asked them how and why they use the apps they do. The results shared in 'Subscription apps on Google Play: User insights to help developers win' report highlight some of the opportunities for you to grow your subscriptions user base, set pricing strategies and learn to keep your users engaged, including:

To find out more about your growing your subscription business with Google Play, watch our I/O session, download the research report (PDF), and get started with subscriptions with Google Play In-app Billing.

How useful did you find this blogpost?

★ ★ ★ ★ ★

19 May 2017 5:30pm GMT

18 May 2017

feedAndroid Developers Blog

Android Wear: New complications tools and watch friendly UI library

Posted by Hoi Lam, Lead Developer Advocate, Android Wear

Android Wear 2.0 gives users more informative watch faces and provides developers with new ways to build useful apps. These new opportunities have been well received by users and developers alike. To help developers take advantage of these new features, we have released a suite of complication API tools, to make it easier for developers to add complication support to their watch faces, and a new Wear UI library, to help developers build watch friendly user interfaces.

New Complications API tools for Watch Face developers

Complications are bite-sized pieces of information displayed directly on the watch face. They can also be great shortcuts into your favorite apps. We introduced the Complications API last year to enable watch faces to receive data from any app that the user selects, and display the data to the user in a way that is stylistically coherent. Today, we are introducing four new tools to make it easier for watch face developers to integrate with the Complications API:

It's never been easier to integrate complications into your watch faces.

New Wear UI Library for Wear developers

We have provided Android view components for building watch friendly user interfaces since the launch of Android Wear 1.0. Developers have told us that they would like to see these components open sourced. So, starting at Google I/O, we are open sourcing some components and providing some Android Wear UI components in the Android Support Library. This brings a number of advantages, including more consistent APIs with the rest of the Support Library, more frequent releases, and better responsiveness to developer feedback. We will:

In the first wave of these changes, we migrated the WearableRecyclerView, BoxInsetLayout and SwipeDismissFrameLayout classes to the new Android Wear UI Library. We expect the migration process to continue during 2017, and developers will have until mid-2018 to migrate to the new UI components. For additional information, see Using the Wear UI Library.

Get started and give us feedback!

To get started with these new tools, simply update the Android Support Library in Android Studio and update your gradle build files to import the new support libraries. In addition to the documentation links above, check out the Google I/O session - Android Wear UI development best practice - where lead engineers for these tools will be on-hand to explain the technical details.

We will continue to update these tools over the next few months, based on your feedback. The sooner we hear from you, the more we can include, so don't be shy! Let us do some of the heavy lifting for your Android Wear apps and watch faces.

18 May 2017 5:00pm GMT

What’s next for Google payment and loyalty experiences

Posted by Pali Bhat, VP of Payment Products

Thousands of apps and millions of stores accept Android Pay, a simpler and more secure mobile payment experience. Android Pay is now available in 10 markets, with more coming soon, including Brazil, Canada, Russia, Spain and Taiwan. And in addition to our already announced Visa and Mastercard partnerships, we'll soon enable a streamlined mobile checkout experience for PayPal users.

The newest ways to pay with Google

Yesterday, we announced the Google Payment API, which lets people pay in app or online with any verified credit or debit card saved to their Google Account, via products like Google Play, Chrome and YouTube.

Paying with Google in the Wish app

For users, the option to pay with Google means breezing through checkout without needing to remember and type multiple lines of payment details. You simply choose your preferred card, enter a security code or authenticate with your Android device, and check out.

Developers who adopt this API can enable an easy-to-use checkout experience for their customers. Sign up for early access to the new Google Payment API.

In the upcoming months, we'll also enable people in the U.S. to send or receive payments via the Google Assistant. On your Google Home or Android device, it's as simple as saying "Ok Google, send $10 to Jane for pizza." All you need is a debit card linked to your Google account.

Pay friends on Google Assistant

Connect with customers before, during and after purchase

We're also announcing new ways for merchants to engage and reward customers before they walk into the store and after they've left.

The Card Linked Offers API drives customer loyalty by providing a new channel to deliver targeted offers, and Panera Bread is one of the first merchants who will roll out this new capability nationally. MyPanera members who save their loyalty card to Android Pay can discover offers and learn about new menu items, surfaced by Android Pay when they are at the store. The offer is redeemed when you use your MyPanera account at checkout.

Card Linked Offers for Panera Bread in the Android Pay app

We're also making it easier for Android Pay users to add loyalty programs. For example, Walgreens Balance Rewards® members who manually apply their loyalty account with a phone number and use Android Pay will receive a notification on their phone that easily enables them to link that loyalty card to Android Pay for future visits. This experience is powered by our smart tap technology, which Walgreens has fully deployed across their 8,000+ U.S. stores.

There's more-we're collaborating with Clover, a First Data company, to expand our smart tap technology beyond national retailers to businesses of all sizes. With the upcoming integration of smart tap in Clover's developer APIs, you'll be able to build Android apps for loyalty, coupon and gift card redemption and new features, such as order ahead and tap for pick up.

Visit developers.google.com/payments for the latest on all of our Google Payment, Loyalty and Offers APIs.

18 May 2017 1:00pm GMT

Android and Architecture

The Android operating system provides a strong foundation for building apps that run well on a wide range of devices and form factors. That being said, we've listened to developer feedback; Issues like complex lifecycles and the lack of a recommended app architecture make it challenging to write robust apps.

We need to make it easier - and more fun - to write robust apps, empowering developers to focus on areas where they can innovate. Today we're announcing a guide to Android app architecture along with a preview of Architecture Components. Rather than reinventing the wheel, we're also recognizing the work done by popular Android libraries.

Opinions not Prescriptions

We know that there's more than one way to write Android applications. What we're providing is a set of guidelines that can help you architect an Android application to work best with the unique ways that Android interacts. The Android framework has well-defined APIs to handle contact points with the OS, such as Activities, but these are entry points into your application, not building blocks for your application architecture; Framework components don't force you to separate your data model from your UI components, or provide a clear way to persist data independent of the lifecycle.

Building Blocks

Android Architecture Components work together to implement a sane app architecture, while they individually address developer pain points. The first set of these components helps you:

Lifecycle Components New lifecycle-aware components provide constructs to tie core components of your applications to lifecycle events, removing explicit dependency paths.

A typical Android observation model would be to start observation in onStart() and stop observation in onStop(). This sounds simple enough, but often times you'll have several asynchronous calls happening at once, all managing the lifecycles of their component. It's easy to miss an edge case. The lifecycle components can help.

Lifecycle, LifecycleOwner, and LifecycleObserver

The core class for all of this is Lifecycle. It uses an enumeration for the current lifecycle state along with an enumeration for lifecycle events to track the lifecycle status for its associated component.

Lifecycle States and Events

LifecycleOwner is an interface that returns a Lifecycle object from the getLifecycle() method, while LifecycleObserver is a class that can monitor the component's lifecycle events by adding annotations to its methods. Putting this all together, we can create lifecycle-aware components that can both monitor lifecycle events and query the current lifecycle state.

public class MyObserver implements LifecycleObserver {
  public MyObserver(Lifecycle lifecycle) {
    // Starts lifecycle observation
  public void startFragmentTransaction() {
     // Queries lifecycle state
     if (lifecycle.getState.isAtLeast(STARTED)) {
        // perform transaction
  // Annotated methods called when the associated lifecycle goes through these events
  public void onResume() {
  public void onPause() {
MyObserver observer = new MyObserver(aLifecycleOwner.getLifecycle());


LiveData is an observable lifecycle-aware data holder class. Your UI code subscribes to changes in the underlying data, tied into a LifecycleOwner, and LiveData makes sure the observer:

This helps to eliminate many pathways for memory leaks, and reduces crashes by avoiding updates to stopped activities.

LiveData can be observed by many listeners, each tied to a lifecycle owner such as a Fragment or Activity.


ViewModel is a helper class that contains UI data for an Activity or Fragment that serves to separate view data ownership from UI controller logic. A ViewModel is retained as long as the scope of its Activity/Fragment is alive, including when the Activity/Fragmentis destroyed and recreated due to a configuration change; This allows ViewModel to make UI data available to the recreated activity or fragment instance. Wrapping UI data stored within the ViewModel with LiveData provides the data an observable lifecycle-aware home. LiveData handles the notification side of things while the ViewModel makes sure that the data is retained appropriately.

Data Persistence

The Android Architecture Components also simplify data persistence with the Room library. Room provides an object-mapping abstraction layer that allows fluent database access while harnessing the full power of SQLite.

The core framework provides built-in support for working with raw SQL content. Although these APIs are powerful, they are fairly low-level and require a great deal of time and effort to use:

Room takes care of these concerns for you while providing an abstraction layer over SQLite.

Database, Entity, and DAO

There are three major components in Room:

To use Room, you annotate the Java data objects you wish to persist as entities, create a database containing these entities, and define a DAO class with the SQL to access and modify the database.

public class User {
    private int uid;
    private String name;
    // Getters and Setters - required for Room
    public int getUid() { return uid; }
    public String getName() { return name; }
    public void setUid(int uid) { this.uid = uid; }
    public void setName(String name) { this.name = name; }

public interface UserDao {
    @Query("SELECT * FROM user")
    List getAll();
    void insertAll(User... users);

@Database(entities = {User.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
    public abstract UserDao userDao();

Guide to App Architecture

Architecture Components are designed to be standalone, but they're most effective when they're incorporated into an effective app architecture. Today we're launching a Guide to App Architecture that shows how to build a robust, modular, and testable app using Architecture Components. The Guide has three main goals:

We recommend all developers who have had to deal with these problems read the Guide; Even if you're happy with your existing app architecture, the Guide will have useful principles and insights.

Just the Beginning

We're planning to continue being opinionated, and to continue to introduce new Architecture Components to make it easier for Android developers to make informed choices when architecting their applications. We encourage you to try the preview and provide feedback on what we're doing, because we're all in this together to make robust Android app development easier and more fun.

To learn more about Android Architecture, check out:

18 May 2017 1:54am GMT

17 May 2017

feedAndroid Developers Blog

Google I/O 2017: Empowering developers to build the best experiences across platforms

By Jason Titus, Vice President, Developer Product Group
It's great to be in our backyard again for Google I/O to connect with developers around the world. The 7,200 attendees at Shoreline Amphitheatre, millions of viewers on the livestream, and thousand of developers at local I/O Extended events across 80+ countries heard about our efforts to make the lives of developers easier -- allowing them to focus on the problems they're trying to solve by minimizing the pain points of building a product.
Earlier this morning, our CEO Sundar Pichai talked about our various billion-user platforms. Whether it's Android or Chrome or the mobile Web, our success would not have been possible without the developer community. And during our Developer Keynote, we covered our heavy investments in tools and services for developers who build on our platforms every day.
We have a lot to cover over the next three days. Let's take a closer look at the major developer news at I/O so far:

Platforms that connect developers to billions of users around the world

  • Android O Developer Preview 2 - Get a look at the next release of Android O focused on fluid experiences that make Android even more useful, and our efforts to optimize battery life, startup time, graphic rendering time, and stability. Early adopters can opt in to the Android O Beta Program at android.com/beta and run Android O now.
  • Project Treble - Last week, we also introduced a new Android framework designed to help reduce the time and effort it takes device makers to upgrade a phone to a new version of Android, starting with Android O.
  • Android Go - We're optimizing Android to run smoothly on entry-level devices, starting with the O release. We're also designing Google apps to use less memory, storage space, and mobile data, including apps such as YouTube Go, Chrome, and Gboard.
  • Kotlin - Android is officially supporting the Kotlin programming language, in addition to the Java language and C++. Kotlin is a brilliantly designed, mature, production-ready language that we believe will make Android development faster and more fun.
  • Android Studio 3.0 Canary - Our new preview includes three major features to accelerate development flow: a new suite of app performance profiling tools to quickly diagnose performance issues, support for the Kotlin programming language, and increased Gradle build speeds for large sized app projects.
  • Mobile Web - AMP and Progressive Web Apps (PWAs) are re-defining modern mobile web development. AMP gets content in front of users fast and PWAs deliver app-focused experiences that are reliable, fast and engaging. We're seeing success stories from all around the world - travel company Wego has rolled out a successful AMP based PWA and Forbes has seen user engagement double since launching a PWA. If you're wondering how good your current web experience is, you can use Lighthouse - an automated tool for measuring web-page quality. Be sure to tune in this afternoon for theMobile Web: State of the Union talk to hear more about building rich mobile web experiences.

Infrastructure and services to take mobile apps and the Web to the next level

  • Firebase - At last year's I/O, we expanded Firebase to a full mobile development platform with products to help you build your app and grow your business. Over a million developers now use Firebase, and we're doubling down on our efforts to simplify more every-day developer challenges. We're giving more insights to understand app performance through Firebase Performance Monitoring, introducing integration between Hosting and Cloud Functions, adding support for Phone Number Authentication, and continuing to improve Analytics in a number of ways. We've also started open sourcing our SDKs.
  • Mobile web developer certifications - At I/O'16 we launched the Associate Android Developer Certification. This year, we're adding two new certifications for web developers: the Mobile Sites Certification and the Mobile Web Specialist Certification.

Powerful tools to acquire and engage new users; grow successful businesses

  • Google Play Console - We announced several powerful, new features and reports in the Play Console to help developers improve their app's performance, manage releases with confidence, reach a global audience, and grow their business. The Play Console also has a new name, to reflect its broadened business uses, and a fresh look to make it easier to get things done.
  • Android Instant Apps - We opened Android Instant Apps, a new way to run Android apps without requiring installation, to all developers. Now anyone can build and publish an instant app. There are also more than 50 new experiences available for users to try out from a variety of brands, such as Jet, New York Times, Vimeo and Zillow.
  • Payments, Monetization & Ads - We introduced a Google Payment API that enables developers to give their customers the ability to pay in apps and online with credit or debit cards saved to their Google Account. New AdMob integration with Google Analytics for Firebase helps them monetize efficiently and updates to Universal Apps Campaigns will help them grow their user base.

New interfaces to push the limits of what's possible

  • Actions on Google for the Google Assistant - We brought Actions on Google to phones, introduced new features and functionality, improved our SDK and more. We also launched the Actions Console, a new developer console that helps developers work as a team, and collect data on app usage, performance and user discovery patterns. This new console is integrated with the Firebase and Google Cloud consoles.
  • VR and AR at Google - We'll have more to share on the latest Daydream platform features and developer tools during our "VR and AR at Google" session tomorrow (May 18) at 9:30 AM PT in the Amphitheatre and on the livestream.
It's important to us that developers are successful. In addition to building products that help solve developer challenges, we're on the ground in over 130 countries, growing and expanding the developer community through programs such as Women Techmakers & Google Developer Groups (GDGs). We're also investing in training programs like Google Developers Certification and courses through Udacity and other partners to help developers deepen their technical capability. We're also excited to announce two large multi-product developer events, Google Developer Days, which are planned for Europe (September 2017 in Krakow, Poland) and India (December 2017 in Bangalore, India). If you are interested to find out more, sign up for updates on g.co/gdd2017.
During Google I/O, attendees and viewers have an opportunity to dive deep into a number of these areas with 14 content tracks and 140+ breakout sessions -- covering Android to Assistant to VR -- and all livestreamed. We've also launched over 70 codelabs to get developers up and running with our latest APIs today.
Whether it's Android, Chrome, Play, VR/AR, the Cloud, and the Mobile Web - we're constantly investing in the platforms that connect developers to billions of users around the world. Thank you to the continued support and feedback from the developer community.

17 May 2017 9:17pm GMT

Android Announces Support for Kotlin

By Mike Cleron, Director, Android Platform

Today the Android team is excited to announce that we are officially adding support for the Kotlin programming language. Kotlin is a brilliantly designed, mature language that we believe will make Android development faster and more fun. It has already been adopted by several major developers - Expedia, Flipboard, Pinterest, Square, and others - for their production apps. Kotlin also plays well with the Java programming language; the effortless interoperation between the two languages has been a large part of Kotlin's appeal.

The Kotlin plug-in is now bundled with Android Studio 3.0 and is available for immediate download. Kotlin was developed by JetBrains, the same people who created IntelliJ, so it is not surprising that the IDE support for Kotlin is outstanding.
In addition to the IDE support, we're announcing a collaboration with JetBrains to move Kotlin into a non-profit foundation. (Kotlin is already open sourced under Apache2.)

Say "Hello" to Kotlin

Kotlin will be very familiar to anyone who has used the Java programming language.
package helloWorld

fun main(args: Array) {
   println("Hello World!")
At first glance, you will see comforting elements like curly braces, classes, packages, functions and methods. But as you go deeper, you will discover that although Kotlin is based on familiar concepts, it is a uniquely modern, elegant and pragmatic riff on those models. In particular, Kotlin is highly expressive with minimal syntactic friction between your thoughts and what you have to type in order to express those thoughts. If when writing code you have asked yourself questions that began "why do I have to …?" you will be pleased to learn that in Kotlin the answer to many of those questions is "you don't!"
For example, perhaps you have asked why you need to type in a bunch of boilerplate getters and setters as well as overriding equals(), hashCode() and toString() when implementing a simple class. Here is a typical example from the Java programming language (in a microscopic font for brevity).
public class Customer {
   private String name;
   private String email;
   private String company;

   public Customer(String name) {
       this(name, "", "");

   public Customer(String name, String email) {
       this(name, email, "");


   public Customer(String name, String email, String company) {
       this.name = name;
       this.email = email;
       this.company = company;

   public String getName() {
       return name;

   public void setName(String name) {
       this.name = name;

   public String getEmail() {
       return email;

   public void setEmail(String email) {
       this.email = email;

   public String getCompany() {
       return company;

   public void setCompany(String company) {
       this.company = company;

   public boolean equals(Object o) {
       if (this == o) return true;
       if (o == null || getClass() != o.getClass()) return false;

       Customer customer = (Customer) o;

       if (name != null ? !name.equals(customer.name) : customer.name != null) return false;
       if (email != null ? !email.equals(customer.email) : customer.email != null) return false;
       return company != null ? company.equals(customer.company) : customer.company == null;

   public int hashCode() {
       int result = name != null ? name.hashCode() : 0;
       result = 31 * result + (email != null ? email.hashCode() : 0);
       result = 31 * result + (company != null ? company.hashCode() : 0);
       return result;

   public String toString() {
       return "Customer{" +
               "name='" + name + '\'' +
               ", email='" + email + '\'' +
               ", company='" + company + '\'' +
In Kotlin, you don't have to type any of that. This single line is equivalent to the entire class above.
data class Customer(var name: String, var email: String = "",
                    var company: String = "")

History and Reference

Kotlin has been around for quite a while; it was announced back in 2011 and the first preview was released in 2012. Kotlin 1.0 was released in 2016, at which point JetBrains committed to maintaining backwards compatibility for stable features from 1.0 forward.
You can find excellent training material and references at https://kotlinlang.org/. The Android team has found the Kotlin Koans tutorial to be especially helpful as a quick way to get started writing some Kotlin snippets. These tutorials range from the simple to the sublime as the material progresses from the basics to more sophisticated Kotlin idioms.

Why Kotlin?

Why did the Android team decide to support Kotlin? Most importantly, it was because we think Kotlin is a great language that will make writing Android apps easier and more enjoyable.
Kotlin is also a great match for the existing Android ecosystem. It is 100% compatible with the Java programming language. You can add as little or as much Kotlin into your existing codebase as you want and mix the two languages freely within the same project. Calling out to Kotlin code from code written in the Java programming language Just Works™. Going the other direction usually works without any developer effort too via some automatically applied translation conventions (for example, things like property getters and setters are created for you). With the help of a few Kotlin annotations, you can also customize how the translation is performed.
Finally, many, many developers have told us they love the Kotlin language. (Many of our own developers on the Android team have also been saying similar things.) There is already an enthusiastic community of Kotlin developers for Android, and the Android team has been routinely peppered with questions about Kotlin at public events. The Android community has spoken, and we listened.

A Quick Tour

To help you get a sense of where all of the excitement around Kotlin is coming from, here is a quick, very-much-not-comprehensive tour of some of the particularly appealing aspects of Kotlin:
The Kotlin compiler enforces that variables that can hold null values are explicitly declared - thus no more NullPointerExceptions at runtime!
var neverNull: String = "something"
var mightBeNull: String? = null // "?" indicates this can be null

if (neverNull.length > 0) {   // This is OK

if (mightBeNull.length > 0) { // Compiler catches this error for you
Named parameters and default arguments
We've all seen methods that have too many parameters to keep track of. For example:
fun orderPizza(size: Size, pepperoni: Boolean, mushrooms: Boolean,
               ham: Boolean, pineapple: Boolean, pickles: Boolean,
               sausage: Boolean, peppers: Boolean, onion: Boolean)

// Wait… did I just order pickles on my pizza?
// Why do we even have that option?
orderPizza(Size.LARGE, true, false, false, false, true,
           false, true, false)
Compare that to a similar scenario using named parameters and default arguments:
fun orderPizza(size: Size,
               pepperoni: Boolean = false,
               mushrooms: Boolean = false,
               ham: Boolean = false,
               pineapple: Boolean = false,
               pickles: Boolean = false,
               sausage: Boolean = false,
               peppers: Boolean = false,
               onion: Boolean = false)

orderPizza(Size.LARGE, ham = true, mushrooms = true)
In addition to helping to avoid tragic pizza outcomes, this is much easier to read. It also reduces the number of variants of overloaded functions you need to write.
When statement
Kotlin has a variation of a switch statement that allows matching on arbitrary expressions.
// Please don't put this in your app!
when {
    password.equals("password") -> println("Insecure password!")
    password.length < 4 -> println("Too short!")
    else -> {
        println("Secure password!")
Smart Casts
Why should you have to cast something to a class right after you just tested that it is an instance of that class? In Kotlin, you don't have to do that anymore.
if (obj is String) {
    // Compiler casts obj to a String for you.
    // (Would work with && instead of nested ifs too.)
    if (obj.length > 0) {
This generalizes to the when statement as well:
// Assume reasonable implementations of Cat and Dog
when (obj) {
   is Cat -> obj.meow(...)
   is Dog -> obj.woof(...)
   else -> {
Extension functions
Kotlin lets you essentially retcon new methods onto an existing type. If you, like many people, wish that the String class had a toPigLatin method, you can now add it yourself without having to create a new helper class to wrap String or going through the trouble of serving on a language committee:
// The "String." prefix indicates that this method should
// extend the existing String class
fun String.toPigLatin() : String {

val plainOldString : String = "some text"

// Can now call toPigLatin as if were a method on String

// Or:
println("some text".toPigLatin())
Destructuring Declarations
We have already seen how easy it is to define a simple data class:
data class Order(val itemCode: String, val quantity: Int,
                 val price: Float)
A function that uses one of these classes as the return type is very close to supporting multiple return values:
fun getOrder(...): Order {
    return Order(itemCode, quantity, price);
To get all the way there, you can use the destructuring declaration syntax. The following statement takes the Order object, extracts its three properties, and then assigns them to the three variables what, howMany and howMuch - all courtesy of the Kotlin compiler, which also infers the correct types for you.
val (what, howMany, howMuch) = getOrder(...)
Kotin has an extremely concise syntax for lambdas that makes is easy to express powerful functional programming paradigms. Here's a simple example that uses a lambda to test that everything in a collection is a String:
fun allStrings(collection: Collection)=
    collection.all { it is String }
That lambda syntax is building block of one of Kotlin's coolest features: the ability to create builders that use JSON-like syntax that also happens to be syntactically valid Kotlin. This example is adapted from an extended discussion here, but you can get the flavor of what it possible with this snippet:
fun generatePage(withEmphasis : Boolean) {
    val result =
        html {
            head {
                title { +"Kotlin Builders" }
            body {
                h1 { +"Kotlin Builders" }
                p {
                    +"This is "
                    if (withEmphasis) b { +"really " }
                    a(href = "https://goo.gl/rHwJio") { +"More here" }
There are a couple of interesting things going on here. First, this shows how expressive Kotlin's functional syntax can be: in this example, "html", "head", "body, etc. are all just functions written in Kotlin and the stuff in curly braces that follows are functional parameters. (This snippet uses functions with names that match HTML tags to build a representation of a web page, but of course you can use this pattern to build any complex data structure with whatever names you want.) The second interesting thing is the "withEmphasis" conditional. This may look like we are mixing code (if (withEmphasis) …) with data (all the HTML-esque tags), but the "data" here is actually just more code. Since it is all really just code, this lets you build complex data structures using a declarative syntax while also having inline access to the full capabilities of the Kotlin language.

Getting Started

If you want to get started with Kotlin, you can start playing with code online immediately here. Just hit the green triangle to compile and run.
To try Kotlin in your app, follow these steps:
  1. Download Android Studio 3.0
  2. Open one of your existing ".java" files
  3. Invoke "Code > Convert Java File to Kotlin File"
The IDE will then walk you through adding Kotlin dependencies into your project, and then convert the code to functionally equivalent Kotlin code. (The IDE will also offer to touch up all of the call sites to the converted class when suitable to be more idiomatic Kotlin such as when static methods are moved to companion objects.)
You can also find a lot more information on how to start using Kotlin on developer.android.com.

17 May 2017 9:11pm GMT

I/O 2017: Everything new in the Google Play Console

Posted by Vineet Buch, Director of Product Management, Google Play Apps & Games

Read this in العَرَبِيَّة‎‎, Bahasa Indonesia, Deutsch, español (Latinoamérica), le français, português do Brasil, tiếng Việt, русский язы́к, ไทย, Türkçe, 한국어, 中文 (简体), 中文 (繁體), or 日本語.

Google Play continues to grow rapidly around the world, thanks to our ecosystem of developers building high quality and engaging app experiences. There are now 2 billion monthly active Android devices. People in 190 countries downloaded 82 billion apps from the Play Store in the last year and the number of developers with more than 1 million monthly installs grew by 35 percent year on year. We've made huge investments to make purchasing quick and easy by offering direct carrier billing with 140 operators that reach 900M devices every month. These, and other efforts, have made the number of buyers on Google Play grow by almost 30 percent in the last year.
Since we launched the Google Play Console in 2012, we've continued to add features to help you do much more than just publish apps. People in a variety of roles at app and game companies, large and small, carry out tasks like running beta tests, analyzing crashes, responding to customer reviews, evaluating A/B experiments on store listings, pulling financial reports, and more.
Today at Google I/O, we're announcing new and improved features to help you improve your app's performance and quality, and grow your business on Google Play.


UPDATED The statistics page for your app now gives you quicker, more flexible access to important data about your business. Compare two different metrics and break them down by a dimension. Select any date range you want, view a breakdown of your data, and even access hourly stats.

Android vitals

NEW Understand your app's Android vitals so you can fix bad behaviors, improve your app experience, and increase your star rating. View aggregated, anonymized device data from people who have opted in their devices to understand three crucial aspects of your app's performance: stability (crash rates and App Not Responding [ANR] rates), battery usage (stuck wake locks and excessive wakeups), and render time (slow rendering and frozen UI frames). Learn more about Android vitals.

UPDATED The ANRs & crashes page has also been updated with larger crash coverage and now benefits from a higher volume of data.

Release management

NEW Use the new release dashboard to track a release as it happens. By monitoring how your release is affecting important metrics, you can be confident that everything is going as planned or you can quickly halt your rollout if anything looks out of the ordinary.

NEW Publish Android Instant Apps with the same release management flow you're familiar with from publishing apps on Google Play. Iterate quickly with a development track, gather feedback from trusted testers on a pre-release track, and when you're ready, release to production. Get started with Android Instant Apps.

NEW The new device catalog will help ensure you're offering a great user experience on the widest range of devices. Search and filter across rich device data for thousands of devices certified by Google. The catalog even shows you your installs, rating, and revenue contributed by device type to help you make the right decisions. You can now also set device exclusion rules by performance indicators like RAM and system on chip. With more granular controls you can exclude fewer devices and offer the best experience on all devices your app supports. Learn more about the device catalog.

NEW For something as important as your app signing key, there's no room for error. With app signing in the Play Console, you now have the option to securely transfer your key to Google to manage on your behalf. You'll benefit from Google's industry leading security and be able to opt-in for upcoming assistive services like app optimizations for APK size. Once opted-in to this service, the Play Store will deliver versions of your APK optimized for the screen density and native architecture of each target device type, saving data and device storage for your users. Learn more about app signing.

UPDATED The pre-launch report, powered by Firebase Test Lab, shows you the results of testing your alpha or beta app on real devices in the lab so you can spot and fix issues before you launch, so they won't affect your rating. The report has been updated with more device test coverage including Android O devices, and new controls, like being able to provide credentials so your app can be tested behind a login.

User acquisition

NEW The acquisition report helps you understand where visitors to your store listing are coming from and whether they go on to install and buy things in your app. The report now includes retained installer data. This reveals which channels and geographies drive valuable users who keep your app installed over periods of up-to 30 days, helping you optimize your marketing efforts.

Financial reports

NEW Subscriptions are the fastest growing business on Google Play - the number of active subscribers has doubled in the last year. With the subscriptions dashboard, see how your subscriptions are performing and make better decisions to grow your business. Understand and analyze total subscribers, revenue, retention, and churn across multiple dimensions.

User feedback

UPDATED Reviews are a valuable channel you can use to engage with people who have your app installed directly. Reviews analysis now covers more languages to help you gather insights from reviews to improve your app. Updated ratings summarizes how users have updated their ratings and reviews, including the effect any replies you made had on those updates. Reviews history shows you the history of your conversation with a user. Finally, we are rolling out the ability to report reviews which do not meet the posting policy guidelines.

Watch us introduce the new Play Console features live at I/O 2017

Tune in live to watch the 'What's new in Google Play at I/O 2017' session, which starts at 12:30pm PT on Thursday, May 18. The team is excited to share all the features we've been working on.
We're also presenting deeper dives into all of our new features and sharing best practices to help you succeed on Google Play. Watch all the Google Play I/O sessions live or afterwards on YouTube:

Day 1, May 17

Day 2, May 18

Day 3, May 19

And be sure to watch the Google Play Awards on day two, which will once again recognize outstanding developers that continue to set the bar for quality apps and games.

How useful did you find this blogpost?

17 May 2017 9:10pm GMT

Android Studio 3.0 Canary 1

By Jamal Eason, Product Manager, Android

Just in time for Google I/O 2017, we're providing a sneak peak of Android Studio 3.0 - available to download today on our canary release channel. Android Studio's our official IDE, purpose-built for Android, and we keep increasing our investment. The feature set in Android Studio is focused on accelerating your app development flow and providing the latest tools built for the Android platform.

To accelerate your development flow, Android Studio 3.0 includes three major features: a new suite of app performance profiling tools to quickly diagnose performance issues, support for the Kotlin programming language, and increased Gradle build speeds for large sized app projects. Android Studio 3.0 also tightly integrates with Android platform development with these additional key features: support for Instant App development, inclusion of the Google Play Store in the Android O emulator system images, and new wizards for Android O development. Overall, this first canary release of Android Studio 3.0 has 20+ new features.

We have been quietly iterating on many of these features as part of the Android Studio 2.4 Canaries. Today we are renumbering the release to Android Studio 3.0 after recognizing that we added many significant features, and that we had to introduce a rare breaking change in the Android Gradle Plugin to improve scalability and build times. If you want to target Android O, create an Instant App, start developing with the Kotlin language or use the latest in Android app performance tools to improve your app quality then you should download Android Studio 3.0 Canary 1 today.
What's New in Android Development Tools - Google I/O '17

Check out the the list below organized into key developer flow for the details of the new features in this first canary release of Android Studio 3.0.


  • Kotlin Programming Language - By popular request, Android Studio 3.0 now includes support for Kotlin. With this new language support, you can seamlessly add Kotlin code next to your existing Android app code and have access to all the great development tools found in Android Studio. You can choose to add Kotlin to your project using the built-in conversion tool found under CodeConvert Java File to Kotlin File, or you choose to create a Kotlin enabled project with the New Project Wizard. Lean more about Kotlin language support in Android and Android Studio.

Kotlin Language Conversion in Android Studio

  • Java 8 Language features - We are continuing to evolve the support for Java 8 language features and APIs. With the recent deprecation of the Jack toolchain and migration to the javac based toolchain, you have access to features such as Instant Run for projects using the Java 8 language features in Android Studio. To update your project to support the new Java 8 Language toolchain, simply update your Source and Target compatibility levels to 1.8 in the Project Structure dialog. Learn more.
Update Project Structure Dialogue for Java 8 Language

  • Layout Editor - With this Android Studio release, you will find additional enhancements to the Layout Editor. We have updated the component tree with better drag-and-drop view insertions, and a new error panel. In coordination with an update to ConstraintLayout, the Layout Editor also supports creating view Barriers, creating Groups, and enhances Chain Creation. Learn more.
Layout Editor Component Tree & Warning Panel

  • Adaptive Icon Wizard - Android O introduces adaptive launcher icons, which can display in different shapes across different Android devices. The new Adaptive Launcher Icon wizard creates the new and legacy launcher icon assets and provides previews of how your adaptive icon will look on different launcher screen icon masks. Create a new asset by right-clicking on the /res folder in your project then navigate to → NewImage AssetLauncher Icons (Adaptive and Legacy) Learn more.
Adaptive Icon Wizard

  • XML Fonts & Downloadable Fonts - Adding custom fonts to your app (available when targeting Android O) is now even easier with the XML fonts preview and font selection tools in Android Studio. You can can also create a downloadable font resource for your app. Using downloadable fonts allows you to use a custom font in your app while avoiding the need to bundle in a font resource into your APK. To use downloadable fonts, ensure that you device or emulator is running Google Play Services v11.2.63 or higher. Learn more.
Downloadable Fonts Resource Picker

XML Fonts Preview

  • Android Things Support - With Android Studio 3.0, you can start developing on Android Things with a new set of templates in the New Project wizard and the New Module wizard. Android Things allows you to extend your Android development knowledge into the Internet of Things (IoT) device category. Learn more.

Android Things New Module Wizard

  • IntelliJ Platform Update: Android Studio 3.0 Canary 1 includes the IntelliJ 2017.1 release, which has features such as Java 8 language refactoring, parameter hints, semantic highlighting, draggable breakpoints, enhanced version control search, and more. Learn more.


  • Instant App Support - With Android Studio 3.0, you can create Instant Apps in your project. Instant Apps are lightweight Android apps that your users can immediately run without installation. To support this, Android Studio introduces two new module types: instant app and feature. Combined with a new "Modularize" refactoring action and the App Links Assistant, Android Studio can help you extend your app into an Instant App. To use you can use the New Module Wizard or right-click on a class and navigate to: RefactorModularize Learn more.

Instant App Module Wizard

  • Build Speed Improvements - We are continuing to invest in making build speeds faster. For this release, we focused on improving speed for projects that have many modules. To achieve these speed improvements and to support future enhancements, we have made breaking API changes to the Android Gradle plugin used by Android Studio. If you depended on APIs provided by the previous plugin you should validate compatibility with the new plugin and migrate applicable APIs. To test, update the plugin version in your build.gradle file. Learn more.


dependencies {
   classpath 'com.android.tools.build:gradle:3.0.0-alpha1'
  • Google's Maven Repository - Also, by popular request, we are now distributing the Android Support Library maven dependencies outside of the Android SDK Manager in a brand new Maven repository. For those developing with a Continuous Integration (CI) system, this should make Maven dependency management easier. Used in combination with the latest command line SDK Manager tool and Gradle, CI builds should be easier to manage with Google's Maven Repository. To use the the new Maven location, add the following url to your app module's build.gradle file. Learn more.
repositories {
   maven {
       url "https://maven.google.com"

Test & Debug

  • Google Play System Images - Along with the update to the Android O Beta release, we updated the Android Emulator O system images to include the Google Play Store. Bundling in the Google Play store allows you to do end-to-end testing of apps with Google Play, and provides a convenient way to keep Google Play services up-to-date in your Android Virtual Device (AVD). Just as Google Play services updates on physical devices, you can trigger the same updates on your AVDs.
Google Play Store in Android Emulator

Update Google Play Services in Android Emulator

To ensure app security and a consistent experience with physical devices, the emulator system images with the Google Play store included are signed with a release key. This means you will not be able to get elevated privileges. If you require elevated privileges (root) to aid with your app troubleshooting, you can use the Android Open Source Project (AOSP) emulator system images that do not include Google apps or services. To get started, make sure you are using Android Emulator v26.1+, the latest system images API 24+ and then create a new AVD with a Google Play icon next to the device definition. Learn more.

Android Virtual Device Manager with Google Play Store Support

  • OpenGL ES 3.0 Support in Android Emulator - As a part of our ongoing investment in making your development experience fast, the latest version of the Android Emulator has OpenGL ES 3.0 support for Android O system images along with significant improvements in OpenGL ES 2.0 graphics performance for older emulator system images. Most modern graphics cards on all operating systems support OpenGL ES 2.0 acceleration. To use OpenGL ES 3.0 with the Android Emulator, your development machine needs a host GPU graphics card that supports OpenGL 3.2 or higher on Microsoft® Windows® or Linux (with Apple MacOS® support coming in the future). Learn more.

OpenGL ES 3.0 in Android Emulator

  • App Bug Reporter in Android Emulator - To help in documenting bugs in your app, we have added an easier way to generate a bug report with all the necessary configuration settings and space to capture your repro steps. Additionally, if you want to share a specific emulator bug with the Android team, we have also added a link to quickly generate a bug on the Android Issue Tracker. To use this feature, navigate to the Emulator Tool BarExtended ControlsHelpEmulator HelpFile a Bug. Learn more.

App Bug Reporting in Android Emulator

  • Proxy Support in Android - For those who need to use a HTTP proxy to access the Internet, we have added a user interface to manage the proxy settings used by the emulator. By default, the Android Emulator will now use the settings from Android Studio, but you can override these settings for your network setup. To configure navigation to the Extended ControlsSettingsProxy.
Android Emulator Proxy Settings

  • Android Wear Rotary Controls in Android Emulator -The Android Emulator now supports rotary controls for the Android Wear 2.0 emulator system image. It is now easier to test your apps that target Android Wear devices that include rotary input scrolling. To enable, create an Emulator AVD that targets Android Wear, and the Rotary Input panel should appear under Extended controls. Learn more.

Rotary input in Android Emulator

  • APK Debugging - For those of you who just want to debug an APK without building your project in Android Studio, the Android Studio 3.0 release now has the ability to debug an arbitrary APK. This functionally is especially helpful for those who develop your Android C++ code in another development environment, but want to debug and analyze the APK in the context of Android Studio. As long as you have a debuggable version of your APK, you can use the new APK Debugging features to analyze, profile & debug the APK. Moreover, if you have access to the sources of your APK, you can link the source to the APK debugging flow for a higher fidelity debugging process. Get started by simply selecting Profile or debug APK from the Android Studio Welcome Screen or File → Profile or debug APK. Learn More.

Profile or Debug an APK

APK Debugging

  • Layout Inspector - You will find that the Layout Inspector has a few additional enhancements in Android Studio 3.0 that make it easier to debug issues in your app layouts. A couple of the enhancements include better grouping of properties into common categories, as well as search functionality in both the View Tree and Properties Panels. While an application is running, access the Layout Inspector via ToolsAndroidLayout Inspector. Learn more.
Layout Inspector

  • Device File Explorer - Ported from DDMS into Android Studio by popular demand, the new Device File Explorer allows you to view the file and directory structure of your Android device or emulator. As you are testing your app, you can now quickly preview and modify app data files directly in Android Studio. Learn more.

Device File Explorer


  • Android Profiler - Android Studio 3.0 includes a brand new suite of tools to help debug performance problems in your app. We completely rewrote the previous set of Android Monitor tools, and replaced them with the Android Profiler. Once you deploy your app to a running device or emulator, click on the Android Profiler tab and you will now have access to a real-time & unified view of the CPU, Memory, & Network activity for your app. Each of the performance events are mapped to the UI event timeline which highlights touch events, key presses, and activity changes so that you have more context on when and why a certain event happened. Click on each timeline to dig into each performance aspect of your app. Learn more.

Android Profiler - Combined timeline view.

  • CPU Profiler - Unnecessary CPU processing and load spikes are symptoms of poor app performance. With the CPU Profiler, you can analyze the CPU thread usage of your app by triggering a sample or instrumented CPU trace. At this point, you can troubleshoot CPU performance issues using a variety of data views and filters built into the CPU Profiler. Learn more.

CPU Profiler

  • Memory Profiler - Using memory inefficiently can lead to many device problems ranging from a janky UI to low memory events. The Memory Profiler combines the functionality of the previous Heap Viewer and Allocation Tracker in one rich interface to help debug memory usage problems in your app. You can diagnose a range of memory issues by analyzing memory allocations, heap dumps and more. Learn more.

Memory Profiler

  • Network Profiler - Optimizing foreground and background network usage in your app can lead to a more performant app and lower app data usage. The network profiler allows you to monitor the network activity of your app, inspect the payload of each of your network requests, and link back to the line of source code that generated the network request. Currently, the network profiler works with HttpURLConnection, OkHttp, and Volley network libraries. The network profiler is an advanced analysis feature that can be enabled on Pre-Android O devices & emulators by selecting Enable Advanced Profiling in the Profiling Tab in the Run Configuration box. In addition to enabling network request and payload analysis, this checkbox enables event collection at the top level, memory object count, and memory garbage collection. For Android O-based devices and emulator, just deploy your app. Learn more.
Network Profiler

Network Profiler Setup for Pre- Android O Devices

  • APK Analyzer Improvements - In Android Studio 3.0, we have added some additional enhancements to the APK Analyzer to help you further optimize the size of your APK. With this feature update, you can now analyze Instant App zip files & AARs, and view dex bytecode of classes & methods. You can also generate Proguard configuration rules and load Proguard mapping files in the dex viewer. Learn more.

APK Analyzer
Check out the release notes for more details.
Android DevByte - What's New in Android Studio 3.0 Canary 1

Getting Started


If you are using a previous version of Android Studio, you can install Android Studio 3.0 Canary 1 alongside your stable version. You can download this update from the official Android Studio Preview download page. As mention in this blog, there are some breaking Gradle Plugin API changes to support new features in the IDE. Therefore, you should also update your Android Gradle plugin version to 3.0.0-alpha1 in your current project to test and validate your app project setup.

We appreciate any feedback on things you like, issues or features you would like to see. If you find a bug or issue, feel free to file an issue. Connect with us -- the Android Studio development team ‐ on our Google+ page or on Twitter.

17 May 2017 9:10pm GMT

Android Instant Apps is open to all developers. Start building today!

Posted by: Jonathan Karmel, Product Manager

Earlier this year, we began testing Android Instant Apps, a new way to run Android apps without requiring installation. Thanks to our incredible developer community, we received a ton of feedback that has helped us refine the end-to-end product experience.

Today, we're opening Android Instant Apps to all developers, so anyone can build and publish an instant app. There are also more than 50 new experiences available for users to try from a variety of developers, such as HotPads, Jet, the New York Times, Vimeo, and One Football. While these experiences have only been live for a short amount of time, the early data shows positive results. For example, Jet and HotPads are seeing double digit increases in purchases and leads generated.

(left to right: One Football, Dotloop, Jet, Vimeo, HotPads and The New York Times)

Feedback from our early partners has directly shaped the development tools we're making available to all of you today.

To get started building an instant app, head over to developer.android.com and download the latest preview of Android Studio 3.0 and the Android Instant Apps SDK. You'll continue to use a single codebase. Android Studio provides the tools you need to modularize your app so that features can be downloaded as needed. Every app is different, but we've seen with our early partners that with the latest tools, instant app development typically takes about 4-6 weeks.

Once you've built your app, the Play Console provides support for distributing your instant app. You just upload your instant app APKs together with your installable APK.

Instant Apps continues to ramp up on the latest Android devices in more than 40 countries. And with Android O, we've gone further, building a new, more efficient runtime sandbox for instant apps, sharable support libraries to reduce app size, and launcher integration support.

To learn more, visit g.co/InstantApps. We're also hosting a session "Introduction to Android Instant Apps" on Thursday, May 18 from 1:30-2:30 PM PT at the conference to dig deeper into the topic. You'll also be able to watch the live stream on Google I/O YouTube channel.

We are excited to see what experiences you create with Instant Apps!

17 May 2017 9:10pm GMT

What’s New in Android: O Developer Preview 2 & More

Posted by: Dave Burke, VP of Engineering


With billions of Android devices around the world, Android has surpassed our wildest expectations. Today at Google I/O, we showcased a number of ways we're pushing Android forward, with the O Release, new tools for developers to help create more performant apps, and an early preview of a project we call Android Go -- a new experience that we're building for entry-level devices.

Fluid experiences in Android O
It's pretty incredible what you can do on mobile devices today, and how easy it is to rely on them as computers in our pockets. In the O release we've focused on creating fluid experiences that make Android even more powerful and easy to use, and today we highlighted some of those:

(L) Android O: Picture-in-picture, (R) Android O: Notification dots

Working on the Vitals in Android
We think Android's foundations are critical, so we're investing in Android Vitals, a project focused on optimizing battery life, startup time, graphic rendering time, and stability. Today we showcased some of the work we've done so far, and introduced new tools to help developers understand power, performance, and reliability issues in their apps:

Android Go
Part of Android's mission is to bring computing to everyone. We're excited about seeing more users come online for the first time as the price of entry level smart phones drop, and we want to help manufacturers continue to offer lower-cost devices that provide a great experience for these users. Today we gave a sneak peek of a new experience that we're building specifically for Android devices that have 1GB or less of memory -- Internally we call it "Android Go," and it's designed around three things

The Android Go experience will ship in 2018 for all Android devices that have 1GB or less of memory. We recommend getting your apps ready for these devices soon -- take a look at the Building for Billions to learn about the importance of offering a useful offline state, reducing APK size, and minimizing battery and memory use.

O Developer Preview 2, Now in Public Beta
Today's release of O Developer Preview 2 is our first beta-quality candidate, available to test on your primary phone or tablet. We're inviting those who want to try the beta release of Android O to enroll now at android.com/beta -- it's an incredibly convenient way to preview Android O on your Nexus 5X, 6P, and Player, as well as Pixel, Pixel XL, or Pixel C device.

With more users starting to get Android O on their devices through the Android Beta program, now is the time to test your apps for compatibility, resolve any issues, and publish an update as soon as possible. See the migration guide for steps and a recommended timeline.

Later today you'll be able to download the updated tools for developing on Android O, including the latest canaries of Android Studio, SDK, and tools, Android O system images, and emulators. Along with those, you'll be able to download support library 26.0.0 beta and other libraries from our new Maven repo. The change to Maven from SDK Manager means a slight change to your build configuration, but gives you much more flexibility in how you integrate library updates with your CI systems.

When you're ready to get started developing with Android O, visit the O Developer Preview site for details on all of the features you can use in your apps, including notification channels and dots, picture-in-picture, autofill, and others. APIs have changed since the first developer preview, so take a look at the diff report to see where your code might be affected.

Thanks for the feedback you've given us so far. Please keep it coming, about Android O features, APIs, issues, or requests -- see the Feedback and Bugs page for details on where to report feedback.

17 May 2017 6:42pm GMT

16 May 2017

feedAndroid Developers Blog

Android Things Developer Preview 4

Posted by Wayne Piekarski, Developer Advocate for IoT

Today, we are releasing the next Developer Preview 4 (DP4) of Android Things, bringing new supported hardware, features, and bug fixes to the platform. The goal of Android Things is to enable Android Developers to quickly build smart devices, and seamlessly scale from prototype to production using a Board Support Package (BSP) provided by Google.
AIY Projects and Google Assistant SDK
Earlier this month, we announced a partnership with AIY Projects, enabling Android Things support for the Raspberry Pi-based Voice Kit. And now with DP4, the necessary drivers are provided to support the Google Assistant SDK on all Android Things certified development boards. Learn more from the instructions in the sample.
New hardware and driver support
We are now adding a new Board Support Package for the NXP i.MX7D, which supports higher performance than the i.MX6UL while still using a low power System on Module (SoM) design. Support for Inter-IC Sound Bus (I2S) has been added to the Peripheral I/O API, now enabling audio drivers to be written in user space for sound hardware connected via an I2S bus. The AIY Voice Kit sample demonstrates how to use I2S support for audio. We have also provided the ability for developers to enable/disable Bluetooth profiles at run time.
NXP i.MX7D System on Module
Production hardware sample
Android Things is very focused on helping developers build production-ready devices that they can bring to market. This means building custom hardware, in addition to the software running on the Android Things system-on-module (SoM). As a part of this effort, we have released Edison Candle, the first in a series of production samples showcasing hardware and software designed to work together. The code is hosted on GitHub and the hardware design files are on CircuitHub, and can be easily fabricated by many 3rd party companies.
Edison Candle sample with source and schematics

Thank you to all the developers who submitted feedback for the previous developer previews. Please continue sending us your feedback by filing bug reports and feature requests, and asking any questions on stackoverflow. To download images for DP4, visit the Android Things download page and find the changes in the release notes. You can also join Google's IoT Developers Community on Google+, a great resource to get updates and discuss ideas, with over 4,900 members. We also have a number of great talks about Android Things and IoT at Google I/O, which you can view via live stream or as a recording later.

16 May 2017 5:17pm GMT

12 May 2017

feedAndroid Developers Blog

Here comes Treble: A modular base for Android

Posted by Iliyan Malchev, Project Treble team lead

On the Android team, we view each dessert release as an opportunity to make Android better for our users and our ecosystem partners. One thing we've consistently heard from our device-maker partners is that updating existing devices to a new version of Android is incredibly time consuming and costly.

With Android O, we've been working very closely with device makers and silicon manufacturers to take steps toward solving this problem, and we're excited to give you a sneak peek at Project Treble, the biggest change to the low-level system architecture of Android to date.

Life of an Android Release

First, it's helpful to understand the "life of an Android release". There are several steps a new Android release goes through before getting into the hands of users:

  1. The Android team publishes the open-source code for the latest release to the world.
  2. Silicon manufacturers, the companies that make the chips that power Android devices, modify the new release for their specific hardware.
  3. Silicon manufacturers pass the modified new release to device makers - the companies that design and manufacture Android devices. Device makers modify the new release again as needed for their devices.
  4. Device makers work with carriers to test and certify the new release.
  5. Device makers and carriers make the new release available to users.

With Project Treble, we're re-architecting Android to make it easier, faster and less costly for manufacturers to update devices to a new version of Android.

The Vendor Interface

Android was unveiled in 2007 as a free, open-source mobile operating system. From the beginning, we intended Android to be scaled across a variety of manufacturers. We knew that consistency of API was important for developers, so we created a compatibility program for the Developer API specified by the Compatibility Definition Document (CDD) and its associated Compatibility Test Suite (CTS), now comprising over a million tests.

The result today is that app developers can write a single app that works across over a billion devices running on different hardware from different manufacturers.

Project Treble aims to do what CTS did for apps, for the Android OS framework. The core concept is to separate the vendor implementation - the device-specific, lower-level software written in large part by the silicon manufacturers - from the Android OS Framework.

This is achieved by the introduction of a new vendor interface between the Android OS framework and the vendor implementation. The new vendor interface is validated by a Vendor Test Suite (VTS), analogous to the CTS, to ensure forward compatibility of the vendor implementation.

Benefits of Project Treble

Today, with no formal vendor interface, a lot of code across Android needs to be updated when a device moves to a newer version of Android:

With a stable vendor interface providing access to the hardware-specific parts of Android, device makers can choose to deliver a new Android release to consumers by just updating the Android OS framework without any additional work required from the silicon manufacturers:

Project Treble will be coming to all new devices launched with Android O and beyond. In fact, the new Project Treble architecture is already running on the Developer Preview of O for Pixel phones.

In addition to the architectural changes, we're working with our silicon and device partners to take their code changes, such as features for a carrier network in a specific country, and move them into the common Android Open Source Project (AOSP) codebase. For example, Sony and Qualcomm contributed dozens of features and hundreds of bugfixes to Android O so they no longer need to rework these patches with each new release of Android.

We plan to publish the full documentation for Project Treble on source.android.com with the launch of O later this summer.

12 May 2017 8:31pm GMT

Track your subscriptions better with the Google Play Developer API

Posted by Neto Marin, Developer Advocate

Back in 2012, we introduced free trials support for Android app subscriptions. A free trial runs for a period of time that you set and then automatically converts to a full subscription based on the subscription's billing interval and price. Google Play supports free trials for all subscription types. Check out Free trials in our documentation for more details.

This feature is an important tool for user conversion because the user can try your app or game before committing to paying. To help you track the subscription status better, we are adding a third "paymentState" value to the Purchases.subscriptions API (on Google Play Developer API) to represent that the user is in a free trial. Possible values are:

Since there is a new possible value, it is necessary to check how your back end is handling the paymentState parameter. If you are doing something like this, you potentially could have a problem:

// WARNING: Don't do this!
if (paymentState == 1) {
    // User is in normal state
} else {
    // Handle user in grace period   # this would now be a bug

As a best practice, and to avoid issues on future updates, we recommend checking specifically for each possible case, like this:

if (paymentState == 0) {
    // Subscriber with payment pending
} else if (paymentState == 1) {
    // Subscriber in good standing (paid)
} else if (paymentState == 2) {
    // Subscriber in free trial

You can check the Purchases.subscriptions documentation for more details. And if you're not offering free trials in your app or game, don't miss the chance to increase user conversions by letting them have a taste of your app - check out our documentation on Free trials.

12 May 2017 8:30pm GMT