Get it on Google Play تحميل تطبيق نبأ للآندرويد مجانا

Continuing to boost developer success on Google Play

Android Developers Blog

Posted by Purnima Kochikar, VP of Play Partnerships

As we highlighted in March, our mission is to help all developers succeed and build sustainable businesses. Last month at Google I/O, we built on this by announcing updates aimed at ‍helping more users discover your apps and games, opening enrollment for the new 15% service fee tier, and more.

But we’re always looking for ways to help developers of all types succeed on Google Play, and today we have even more to share.

Investing in better cross-device experiences

Users expect compelling content no matter what device they’re on. With our recent launch of Entertainment Space for tablets, the announcement that Samsung watches are coming to Wear OS, the upgraded Android Auto platform, and a new discovery experience on Google TV, there’s more opportunity for developers to engage their users than ever.

On Play, we are excited to help developers scale their services beyond mobile and across all the form factors that are important to users. We've long offered programs to help you build innovative experiences and today, we are opening our Play Media Experience Program globally to enable even more developers to invest in best-in-class media experiences across devices, including:

Through these integrations, we enable new discovery and re-engagement opportunities for developers to accelerate their overall growth on Play and offer a service fee of 15% during the program term, all to help developers deliver premium experiences.

Developers can review program guidelines and express interest now and we’ll follow up with more information if you are eligible. The Play Media Experience Program joins our many other resources for developers, including, Subscribe with Google for news publishers, our existing enterprise programs, and our many other initiatives like Play Points and Play Pass that help us continually improve our offerings to users and meet the needs of developers.

New updates ahead for game developers

Register now for the digital Google for Games Developer Summit on July 12 and 13 to hear the latest product updates from across Google. We’ll have over 20 sessions from Android, Play, Cloud, Firebase, and ads to help you build better games and reach your users.

As always we will continue to listen to your feedback and we look forward to looking for even more ways to support your business at every stage on Google Play.

June 23rd 2021, 6:11 pm

Join us for Google for Games Developer Summit 2021

Android Developers Blog

Posted by Greg Hartrell, Head of Product Management, Games on Android & Google Play

With a surge of new gamers and an increase in time spent playing games in the last year, it’s more important than ever for game developers to delight and engage players. To help developers with this opportunity, the games teams at Google are back to announce the return of the Google for Games Developer Summit 2021 on July 12th-13th.

Hear from experts across Google about new game solutions they’re building to make it easier for you to continue creating great games, connecting with players, and scaling your business. Registration is free and open to all game developers.

Register for the free online event at to get more details in the coming weeks. We can’t wait to share our latest innovations with the developer community.

June 22nd 2021, 11:08 am

Android @ Google I/O: 3 things to know in Modern Android Development

Android Developers Blog

Posted by The Modern Android Development Team

This year’s Google I/O brought lots of updates for Modern Android Development. Here are the top 3 things you should know:

#1: Lots of new Jetpack library releases!

In recent months, several Jetpack libraries reached stable, beta or were just launched in alpha. Here are some the highlights:

To find out more about what’s new, check out the What’s new in Jetpack, What’s new in Compose and for a deep dive into Macrobenchmark: Measuring Jank and Startup with Macrobenchmark.

#2: Inspectors in Android Studio

Debugging your application becomes easier with all the inspectors provided by Android Studio Arctic Fox: for background work, like understanding what’s the status of your WorkManager workers, use Background Task Inspector; for UI use Layout Inspector, for both Android Views and Compose; for database debugging use Database Inspector.

To see the inspectors in action, check out What’s new in Android development tools.

#3: New features in Kotlin

We keep improving Kotlin on Android at all levels, from tools to APIs, and giving you different ways to learn. Kotlin Symbol Processing (KSP), now in alpha, provides a simplified compiler plugin API that can run up to 2 times faster than KAPT. Together with JetBrains, we’re addressing performance issues in the IDE and we’re seeing up to 20x faster auto-import suggestions. We added StateFlow support to DataBinding and new APIs for observing Flows in the UI without DataBinding. To learn about all the improvements we’ve made for Kotlin, check out the State of Kotlin on Android talk:

You can find all of this year’s Google I/O talks covering Modern Android Development in this playlist:

June 22nd 2021, 11:08 am

#AndroidDevJourney spotlight - May edition

Android Developers Blog

Posted by Luli Perkins, Developer Relations Program Manager

The May edition of #AndroidDevJourney spotlights five Android developers from around the world and each of their own unique experiences. In January we started the #AndroidDevJourney series to highlight members of the Android developer community on our Twitter account. As we reach the end of our six month journey, be sure to check out all the great developers we’ve featured on Twitter. 

Mada Aflak

Tell me about your journey to becoming an Android Developer and how you got started.

My journey in becoming an Android Developer started in 2015, during my final year of engineering school in Paris. My friends and I created a startup that allows you to easily create social events. As an Android user, my mission was to create an Android app. The experience made me excited to build apps, brainstorm products, engage with users; understand metrics and the process of innovation.

Initially, learning to code in Android was a tool to help reach my goal: to create a product that would be used by the largest audience possible. My passion to develop on Android, however, gave me the patience and perseverance needed to self-improve and become an expert. I realized the key to success is consistency: that step-by-step progress allows big achievements.

Although I entered the Android field by chance, I feel very grateful to have specialized in a technology which allows me to reach the huge Android marketplace, with an incredibly diverse user base. I believe when you love working on products, specifically in B2C business, being a client software engineer is very appealing. You’re in a unique position where you can interact with customers, as well as product, design, backend, and data scientists.

After receiving my Master's, I took intensive Java training and worked at a chic software consultant engineering company, in the famous avenue Les Champs & Elysee. Whilst I learned a lot from this experience, I wanted to give entrepreneurship another shot so I left Paris for San Francisco and opened a startup called Tribe, with friends. Tribe consisted of 10 talented French entrepreneurs aiming to re-invent the video chat messaging app. This is where I started to specialize in live video streaming technology and - more precisely - WebRTC.

Tribe gathered thousands of upvotes on Product Hunt and was awarded several times by worldwide institutions including Google and Time, and also featured in various international publications such as TechCrunch, Business Insider, and more! Our hard work and determination led us to be backed by Sequoia and Kleiner Perkins Capital. This experience was utterly unique: we all were working and living in the same house with a common goal to create an everlasting impact! With this experience, I learned the power of collective intelligence; that people will go far in learning how to work with each other.

After three years of entrepreneurship, we made the hard decision to discontinue Tribe and I decided to return to Europe. During this time, Twitter contacted me for my skills in live video streaming technology. As my passion for social science, politics and economy was growing, Twitter interested me greatly as it’s the only social media platform that enables public conversation; its main focus is to highlight and discuss what’s happening in the world. Considering myself a “citizen of the word”, I found that its purpose resonated strongly with me: a global inclusive platform, where everyone has a voice. What I love the most about working at Twitter is that Twitter has a unique position by being relatively small as a company, but has a huge impact on society.

My Twitter journey began working on a live video streaming product on Periscope, called Hydra. After sunsetting Periscope, my team began to wonder what to do with the live streaming publishing pipeline technology that we built. We then partook in a brainstorm session, concluding that audio was an under-used and under-valued media that could enhance and drive Twitter’s public conversation.

We started small with one developer on each platform, reaping the benefits of being a small team that could iterate and move fast. Today, the team has vastly expanded and I am proudly operating as the Android Space Tech Lead. Twitter Space has now become one of the company's top priorities: we have only just started to witness the powerful impact of live audio, with a social media network set to drastically change social behavior.

What’s one shortcut, tip, or hack you can’t live without?

Learning how to use Android Studio property is a must! There are many hidden tools in Android Studio that can help developer velocity.

What's the one piece of advice you wish someone would have given you when you started on your journey?

1- Learn English fluently

2- Don’t be afraid to make mistakes

3- Work on something you love!

Lin Guo

Tell me about your journey to becoming an Android Developer and how you got started.

That was a story from a long time ago. I was learning Java when I got into college in 2008. One day in 2010, I was just browsing the Internet as usual, and found a course talking about how to learn Android development. That was the first time I heard about Android. It was a brand-new mobile system for me, besides, Java just happened to be the designated programming language for it. I was very interested at that time, and made a decision to get onboard.

Now I am an Android GDE and work for Microsoft where I continue my Android development journey. I also published a book in 2014 which is the best-selling Android programming book in China. I feel so fortunate to have made that decision in 2010.

What’s one shortcut, tip, or hack you can’t live without?

I really do have one. Use Ctrl+W to expand selection in Android Studio.

This is absolutely my favorite one. I often have some conditions where I need to copy some part of code to somewhere else. Dragging to select is the last thing I want to do. With Ctrl+W, I can always select the part of the code just as I wanted quickly and conveniently. Thanks to Google and JetBrains.

What's the one piece of advice you wish someone would have given you when you started on your journey?

I joined the Microsoft Edge mobile team recently. It is an Android project, but most of the code was written in C++. I was struggling with it at first, because I had never written C++ code before.

Now, I have started learning C++ programming from scratch. It is still a happy journey to learn something new. But I wish someone would have given me this advice when I started with Android: C++ is also an important part of Android development.

Anita Singh

Tell me about your journey to becoming an Android Developer and how you got started.

I started my career after university in Silicon Valley as a Java backend engineer and was curious about mobile, and wanted to give it a try. At my first job, I was working at Intuit on Mint and asked the mobile PM if I could help out with either the iOS or Android app.

At the time I was an iOS user so I was leaning towards iOS, but upon research I saw that Android was dominating in the global market. Since I already knew Java, the barrier of entry was lower.

I then joined the Mint mobile team and learned Android development on the job, converted to being an Android user and never looked back :-). Since then I’ve led both Android and cross-functional teams, and enjoy collaborating across functions to deliver great mobile experiences to users.

What’s one shortcut, tip, or hack you can’t live without?

The “Design View” in Android Studio where I can quickly see what screens look like in night mode, landscape, and small devices while developing screens, helps save time.

In the Compose world, Interactive Mode and Deploy Preview are quite handy in quickly iterating over them as well. I am looking forward to performance improvements here.

A second tip would be to use the Accessibility Scanner to help identify accessibility improvements. This is another great tool that can give you quick wins!

What's the one piece of advice you wish someone would have given you when you started on your journey?

To lean into the Android community. I relied solely on Android documentation to learn when I started, and didn’t know about the supportive community and content that surrounds it until later!

Reading blog posts, watching/giving talks, and connecting with other developers accelerated my learning, and I can’t recommend it enough.

Marion Hayoun

Tell me about your journey to becoming an Android Developer and how you got started.

My Android journey began with a G1, the very first commercialized Android smartphone. It had a built-in keyboard, a joystick and hard buttons, to me it was amazing. At the time I was still in engineering school and hadn't even developed in Java yet but I had the opportunity to help organize meetups with the Paris Android User Group.

That’s how I started to meet people and saw what they were trying to build. Everyone I met at the time was really open minded and I wanted to be a part of this community and contribute to this platform by building beautiful apps too.

I started my professional journey back in 2012 and had the opportunity to work for editors and in agencies too. Today I’m working at Dashlane and I’m still organizing events with the Paris Android User Group :)

What’s one shortcut, tip, or hack you can’t live without?

I used to mostly rely on Find Usage ⌥F7 to navigate code base, but then I started using Go to Implementation ⌥⌘B. It is really *really* helpful to jump to any interface's implementation right away. It is a "more advanced" shortcut, but it is one that will make navigating a codebase with composition, contract, multi-modules, etc. really smooth. Especially when an interface and implementation can be far apart in the file hierarchies.

What's the one piece of advice you wish someone would have given you when you started on your journey?

Find what works for you to keep learning. Huyen Tue Dao gave an amazing talk with a lot of advice on this, check it out here. She covered talks, to podcasts, articles, newsletters, Twitter, community, sketchnotes, and more. She shared a lot of ways to stay up to date and gave us the honest truth: you just can't keep up with everything ^^ So find what best fits you and your lifestyle to keep improving and learning.

There will always be highs and lows in your career; knowing people who will support you is why you may be able to overcome challenges in the long run. And that is why, I would recommend you to take a look at your local developer community. Those are perfect spots to learn, share what you learn, and meet people who understand what you're doing. It’s perfect to gain knowledge, take a step back, share advice and experiences, and support each other. We're human first and foremost, and most solutions are human too.

Gonzalo Serrano

Tell me about your journey to becoming an Android Developer and how you got started.

My path to becoming an Android developer started my senior year of high school when I Googled “What do you need to do to be a computer programmer?” We had a class assignment about researching a career. I had always been interested in coding. As a kid, I played way too many video games and wanted to learn how they worked. Then, when I got into high school, I started teaching myself to code from reading blogs.

I grew up poor in East Los Angeles and went to a school that had little money with very little access to quality technology. I didn’t know anyone else who was coding, but the Internet said to be a developer, you needed to go to college and get a bachelor’s degree. So I went and studied computer science, learning C++, JavaScript, Java, and other languages.

In 2014, I went to a panel at my community college and met AnnMaria, a co-founder of 7 Generation Games, where we develop educational games aimed at closing the math gap, especially within Latino and Indigenous communities. I applied for an internship, because I wanted to be part of making software for good. Initially, we were just making games for computers or to run on the web. But as technology evolved and we expanded to mobile, it was really important that we were developing for Android because those are the primary devices people are using in many of the communities we’re in. Because of my background, developing for Android was especially important to me because I know how valuable quality and accessible technology is for students. In 2016, I offered to take the lead on our first Android project, a game - now a series - called Making Camp. I downloaded Android Studio, cracked open the documentation and got to work.

When I graduated with my bachelor’s in 2018, I joined 7 Generation Games full-time. I am now our lead Android developer and just put our 10th app into Google Play.

What’s one shortcut, tip, or hack you can’t live without?

On Android, I primarily work in WebView. When trying to execute JavaScript code on the WebView from outside the page, it is easily facilitated by passing a string in Java with the code you want to execute. But the reverse is less common. My hack for this is if you want the app to react to JavaScript code, you have to create an event to catch the error returned from the page, then parse the string for what you wanted to do and react outside the WebView with that information.

What's the one piece of advice you wish someone would have given you when you started on your journey?

Don't be afraid to ask questions. Don't think everyone knows more than you because they don't. That said, the most useful piece of advice I was given was to read documentation. It might seem simple, but I’ve been surprised by how often people don’t. That’s advice I would give to anyone starting out.

The Android Developer community prides itself in its inclusivity and welcomes developers from all backgrounds and stages of life. If you’re feeling inspired and want to learn more about how to become a part of our community, here are a few resources to help get you started.

Dive into

Follow us on Twitter

Subscribe to our YouTube channel

The Google Developer Groups program gives developers the opportunity to meet local developers with similar interests in technology. A GDG meetup event includes talks on a wide range of technical topics where you can learn new skills through hands-on workshops.

Join a chapter near you here.

Founded in 2014, Google’s Women Techmakers is dedicated to helping all women thrive in tech through community, visibility and resources. With a member base of over 100,000 women developers, we’re working with communities across the globe to build a world where all women can thrive in tech.

Become a member here.

The Google Developers Experts program is a global network of highly experienced technology experts, influencers and thought leaders who actively support developers, companies and tech communities by speaking at events, publishing content, and building innovative apps. Experts actively contribute to and support the developer and startup ecosystems around the world, helping them build and launch highly innovative apps.

Learn more about the program here.

Java is a registered trademark of Oracle and/or its affiliates.

June 22nd 2021, 11:08 am

Android @ Google I/O: Recapping building across devices

Android Developers Blog

Posted by The Android Team

At Google I/O this year, we talked about how your app can take advantage of Android's different screens, both large and small. But if you missed the show, here are the top things you should know:

Tablets, Foldables, and Large Screens

It's more important than ever to design your app to work well on large screens — including tablets, foldables, and Chrome OS laptops. There are already over 250 million large screen Android devices in use today. Meanwhile, new foldable devices are making it easier for users to multitask, and opening up new experiences like tabletop mode for hands-free activities. See this example of Disney+ using tabletop mode on the Samsung Galaxy Z Fold2.

Fortunately, it's also easier than ever to design apps which seamlessly scale to adapt to any device size — including dynamically resizing on Chrome OS and foldable devices, taking advantage of Jetpack Compose or ConstraintLayout to build responsive layouts. We also studied how people interact with large screens, like where their fingers are placed, and we’re giving you APIs and Tools to make that experience easier:

We’ve also made updates to the Android platform, Chrome OS, and Jetpack WindowManager, so apps just work better by default. For example, many UI elements now have default Max Width values to make sure they look better on large screens, while changes to the Display API ensure that existing apps continue to render correctly on foldables even if they aren't using WindowManager to query window metrics.

Learn more about how we are helping you build for large screens with these I/O sessions:

For even more details, check out the what's new in foldables, tablets, and large screens article, or read the case study on how Google Duo sees increased engagement and improved ratings.

Wear OS

We announced our biggest update yet to the Wear platform, with new features, APIs and tools to help developers create beautiful, high quality wearable experiences.

There are new Jetpack APIs to help you streamline your development. The Tiles library gives users fast, predictable access to the information and actions they rely on most. Another notable addition is the Ongoing Activities API, which enables you to let your users return to your app after they’ve navigated away (to start some other task such as music playback). Both of these libraries are currently in alpha.

We also released a new set of APIs for health and fitness that act as an intermediary to the sensors and related algorithms on the device to provide apps with high-quality data related to activity, exercise, and health. The alpha of the Health Services platform is available to use today.

Download Android Studio Arctic Fox Beta to try out a developer preview of the new Wear system image and start preparing your apps for the new platform. Check out the I/O sessions below to learn more about these announcements:

You can also read more details on the latest changes to Wear, as well as learn about how Spotify is building on Wear.

Android TV

Android TV OS now has over 80 million monthly active devices, with 80% growth in the US and is at the heart of the Google TV experience launched last fall. Meanwhile, Google TV itself can be found on streaming devices like the Chromecast with Google TV, smart TVs from Sony, and as an app on Android devices — including tablets.

This year at I/O, we announced several new tools and features to make developing for Android TV OS easier:

These releases make it easier to build and test applications across a range of device configurations, while bringing the latest Android 12, Googler Assistant, and Cast features to the TV. To learn more, watch the What's new in Android TV and Google TV session from I/O.

Android for Cars

Android Auto allows applications to connect with the infotainment displays built into many modern vehicles. To make this even easier we recently made the Android for Cars App Library available as part of Jetpack. This library allows navigation, EV charging, and parking apps to integrate directly with compatible cars.

We plan to expand to more app categories in the future, so if you’re expressing interest in bringing your app to Android Auto please fill out this interest form. You can also get started with the Android for Cars App Library today, by visiting Watch the What’s new with Android for Cars session from I/O for even more detail, or the accompanying What's new with Android for Cars blog post.

June 22nd 2021, 11:08 am

Introducing Security By Design

Android Developers Blog

Posted by Jon Markoff, Staff Developer Advocate & Sean Smith, Technical Program Manager

As a developer, are you struggling to figure out when to build security threat protection into your roadmap? Integrating security into your app development lifecycle can save a lot of time, money, and risk. That’s why we’ve launched Security by Design on Google Play Academy to help developers identify, mitigate, and proactively protect against security threats.

The Android ecosystem, including Google Play, has many built-in security features that help protect developers and users. The course Introduction to app security best practices takes these protections one step further by helping you take advantage of additional security features to build into your app. For example, Jetpack Security helps developers properly encrypt their data at rest and provides only safe and well known algorithms for encrypting Files and SharedPreferences. Are you concerned about using Rooted or compromised devices that may allow a bad actor to use your app in a non-sanctioned way? The SafetyNet Attestation API is a solution to help identify potentially dangerous patterns in usage. There are several common design vulnerabilities that are important to look out for, including using shared or improper file storage, using insecure protocols, unprotected components such as Activities, and more. The course also provides methods to test your application, to keep apps safe in the wild after launch. Finally, you can set up a Vulnerability Disclosure Program (VDP) to engage security researchers to help.

In the next course, you can learn how to integrate security at every stage of the development process by adopting the Security Development Lifecycle. The SDL is an industry standard process and in this course you’ll learn the fundamentals of setting up a program, getting executive sponsorship and integration into your development lifecycle.

Threat modeling is part of the Security Development Lifecycle, in this course you will learn to think like an attacker to identify, categorize, and address threats. By doing so early in the design phase of development, you can identify potential threats and start planning for how to mitigate them at much lower cost and create a more secure product for your users.

Improving your app’s security is a never ending process. Sign up for the Security by Design module where in a few short courses, you will learn how to integrate security into your app development lifecycle, model potential threats, and app security best practices into your app, as well as avoid potential design pitfalls.

June 22nd 2021, 11:08 am

Build sophisticated search features with AppSearch

Android Developers Blog

Posted by Dan Saadati, Software Engineer, and Hanaa ElAzizi, Technical Program Manager

Introducing AppSearch in Jetpack, now available in Alpha. AppSearch is an on-device search library which provides high performance and feature-rich full-text search functionality.

With AppSearch, your application can:

In AppSearch, you need to create a database to manage structured data, called “documents”. You then define what the structure looks like using “schema types”. For instance, you can model a message as a schema type with properties such as subject, body, and sender.

Documents that are added to your database can be queried over. Querying for “body:fruit” will retrieve all documents with the term “fruit” in the “body” of the Message.

Diagram illustrating indexing and searching within AppSearch

To showcase how an application might integrate AppSearch, take this example of a grocery list application. Users can add grocery items to their list to refer to when they’re out shopping. Since AppSearch offers multi-language support by default, users can also include specialty ingredients for their global recipes. Users add an item by typing in the name and selecting the store and category it belongs to. The user can search by item name and select filters for store or category. AppSearch will return matching results for the application to display.

Ready to dive into using AppSearch to enrich your app’s search functionality? Check out the AppSearch guide and start using it in your app.

Help us make the library better: give us feedback on things you like, and issues or features you would like to see. If you find a bug or issue, feel free to file an issue.

June 22nd 2021, 11:08 am

What's new for Android developers at Google I/O

Android Developers Blog

Posted by Karen Ng, Director, Product Management & Jacob Lehrbaum, Director of Developer Relations, Android & Play

As Android developers, we are all driven by building experiences that delight people around the world. And with people depending on your apps more than ever, expectations are higher and your jobs as developers aren’t getting easier. Today, at Google I/O, we covered a few ways that we’re trying to help out, whether it be through Android 12 - one of the biggest design changes ever, Jetpack, Jetpack Compose, Android Studio, and Kotlin to help you build beautiful high quality apps. We’re also helping when it comes to extending your apps wherever your users go, like through wearables and larger-screened devices. You can watch the full Developer Keynote, but here are a few highlights:

Android 12: one of the biggest design updates ever.

The first Beta of Android 12 just started rolling out, and it’s packed with lots of cool stuff. From new user safety features like permissions for bluetooth and approximate location, enhancements to performance like expedited jobs and start up animations, to delightful experiences with more interactive widgets and stretch overscrolling, this release is one of the biggest design updates to Android ever. You can read more about what’s in Android 12 Beta 1 here, so you can start preparing your apps for the consumer release coming out later this year. Download the Beta and try it with your apps today!

Jetpack Compose: get ready for 1.0 in July!

For the last few years, we’ve been hard at work modernizing the Android development experience, listening to your feedback to keep the openness–a hallmark of Android, but becoming more opinionated about the right way to do things. You can see this throughout, from Android Studio, a performant IDE that can keep up with you, to Kotlin, a programming language that enables you to do more with less code, to Jetpack libraries that solve the hardest problems on mobile with backward compatibility.

The next step in this offering is Jetpack Compose - our modern UI toolkit to easily build beautiful apps for all Android devices. We announced Compose here at Google I/O two years ago and since then have been building it in the open, listening to your feedback to make sure we got it right. With the Compose Beta earlier this year, developers around the world have created some truly beautiful, innovative experiences in half the time, and the response to the #AndroidDevChallenge blew our socks off!

With the forthcoming update of Material You (which you can read more about here), we’ll be adding new Material components as well as further support for building for large screens, making it fast and easy to build a gorgeous UI. We’re pressure testing the final bits in Compose and will release 1.0 Stable in July—so get ready!

Android Studio Arctic Fox: Design, Devices, & Developer Productivity!

Android Studio Arctic Fox (2020.3.1) Beta, the latest release of the official powerful Android IDE, is out today to help you build quality apps easier and faster. We have delivered and updated the suite of tools to empower three major themes: accelerate your UI design, extend your app to new devices, and boost your developer productivity. With this latest release you can create modern UIs with Compose tooling, see test results across multiple devices, and optimize debugging databases and background tasks with the App Inspector. We’re also making your apps more accessible with the Accessibility Scanner and more performant with Memory Profiler. And for faster build speeds, we have the Android Gradle plugin 7.0, new DSL, and variant APIs. You can learn more about the Android Studio updates here.

Kotlin: the most used language by professional Android devs

Kotlin is now the most used primary language by professional Android developers according to our recent surveys; in fact, over 1.2M apps in the Play Store use Kotlin, including 80% of the top 1000 apps. And here at Google, we love it too: 70+ Google apps like Drive, Home, Maps and Play use Kotlin. And with a brand-new native solution to annotation processing for Kotlin built from the ground up, Kotlin Symbol Processing is available today, a powerful and yet simple API for parsing Kotlin code directly, showing speeds up to 2x faster with libraries like Room.

Android Jetpack: write features, not boilerplate

With Android Jetpack, we built a suite of libraries to help reduce boilerplate code so you can focus on the code you care about. Over 84% of the top 10,000 apps are now using a Jetpack library. And today, we’re unpacking some new releases for Jetpack, including Jetpack Macrobenchmark (Alpha) to capture large interactions that affect your app startup and jank before your app is released, as well as a new Kotlin Coroutines API for persisting data more efficiently via Jetpack DataStore (Beta). You can read about all the updates in Android Jetpack here.

Now is the time: a big step for Wear

The best thing about modern Android development is that these tools have been purpose built to help make it easy for you to build for the next era of Android, which is all about enabling devices connected to your phone–TVs, cars, watches, tablets–to work better together.

Starting today, we take a huge step forward with wearables. First, we introduced a unified platform built jointly with Samsung, combining the best of Wear and Tizen. Second, we shared a new consumer experience with revamped Google apps. And third, a world-class health and fitness service from Fitbit is coming to the platform. As an Android developer, it means you’ll have more reach, and you’ll be able to use all of your existing skills, tools, and APIs that make your mobile apps great, to build for a single wearables platform used by people all over the world.

Whether it’s new Jetpack APIs for Wear tailored for small screens and designed to optimize battery life, to the Jetpack Tiles API, so you can create a custom Tile for all the devices in the Wear ecosystem, there are a number of new features to help you build on Wear. And with a new set of APIs for Health and Fitness, created in collaboration with Samsung, data collection from sensors and metrics computation is streamlined, consistent, and accurate–like heart rate to calories to daily distance–from one trusted source. All this comes together in new tooling, with the release of Android Studio Arctic Fox Beta, like easier pairing to test apps, and even a virtual heart rate sensor in the emulator. And when your app is ready, users will have a much easier time discovering the world of Wear apps on Google Play, with some big updates to discoverability. You can read more about all of the Wear updates here.

Tapping the momentum of larger screens, like tablets, Chrome OS and foldables

When it comes to larger screens -- tablets, foldables, and Chrome OS laptops-- there is huge momentum. People are increasingly relying on large screen devices to stay connected with family and friends, go to school, or work remotely. In fact, there are over 250 million active large screen Android devices. Last year, Chrome OS grew +92% year over year–5 times the rate of the PC market, making Chrome OS the fastest growing and the second-most popular desktop OS. To help you take advantage of this momentum, we’re giving you APIs and tools to make optimizing that experience easier: like having your content resize automatically to more space by using SlidingpaneLayout 1.2.0 and a new vertical navigation rail component, Max widths on components to avoid stretched UIs, as well as updates to the platform, Chrome OS, and Jetpack windowmanager, so apps work better by default. You can learn more here.

Google Duo's optimized experience for foldable devices

This is just a taste of some of the new ways we’re making it easier for you to build high quality Android apps. Later today, we’ll be releasing more than 20 technical sessions on Android and Play, covering a wide range of topics such as background tasks, privacy, and Machine Learning on Android, or the top 12 tips to get you ready for Android 12. If building for cars, TVs, and wearables is your thing, we got that covered, too. You can find all these sessions - and more - on the I/O website. Beyond the sessions and news, there’s a number of fun ways to virtually connect with Googlers and other developers at this year’s Google I/O. You can check out the Android dome in I/O Adventure, where you can see new blog posts, videos, codelabs, and more. Maybe even test out your Jetpack Compose skills or take a virtual tour of the cars inside our dome!

June 22nd 2021, 11:08 am

Improve your app mileage with Android for Cars App library

Android Developers Blog

Posted by Madan Ankapura, Product Manager

In April, we announced our first version of the Android for Cars App Library as part of Jetpack, reaching a milestone to let developers publish their navigation, parking, charging apps on the Google Play Store.

Today, we’re announcing that version 1.1 is in alpha, which brings the following features to developers:

For the entire list of changes, please see the release notes. To start building your app for the car, check out our updated developer documentation, car quality guidelines and design guidelines.

These library features are available for testing only with the Desktop Head Unit. We will announce when these features are available to run in cars in the future.

If you’re interested in joining our Early Access Program in the future, please fill out this interest form. You can get started with the Android for Cars App Library today, by visiting

June 22nd 2021, 11:08 am

Android 12 Beta 2 Update

Android Developers Blog

Posted by Dave Burke, VP of Engineering

Just a few weeks ago at Google I/O we unwrapped the first beta of Android 12, focusing on a new UI that adapts to you, improved performance, and privacy and security at the core. For developers, Android 12 gives you better tools to build delightful experiences for people on phones, laptops, tablets, wearables, TVs, and cars.

Today we’re releasing the second Beta of Android 12 for you to try. Beta 2 adds new privacy features like the Privacy Dashboard and continues our work of refining the release.

End-to-end there’s a lot for developers in Android 12 - from the redesigned UI and app widgets, to rich haptics, improved video and image quality, privacy features like approximate location, and much more. For a quick look at related Google I/O sessions, see Android 12 at Google I/O later in the post.

You can get Beta 2 today on your Pixel device by enrolling here for over-the-air updates, and if you previously enrolled for Beta 1, you’ll automatically get today’s update. You can also get Android 12 Beta 2 on select devices from some of our device-maker partners like Sharp. Learn more at

Visit the Android 12 developer site for details on how to get started.

What’s new in Beta 2?

Beta 2 includes several of the new privacy features we talked about at Google I/O, as well as various feature updates to improve functionality, stability, and performance. Here are a few highlights.

Privacy Dashboard - We’ve added a Privacy Dashboard to give users better visibility over the data that apps are accessing. The dashboard offers a simple and clear timeline view of all recent app accesses to microphone, camera, and location. Users can also request details from an app on why it has accessed sensitive data, and developers can provide this information in an activity by handling a new system intent, ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD. We recommend that apps take advantage of this intent to proactively help users understand accesses in the given time period. To help you track these accesses in your code and any third-party libraries, we recommend using the Data Auditing APIs. More here.

Privacy dashboard and location access timeline.

Mic and camera indicators - We’ve added indicators to the status bar to let users know when apps are using the device camera or microphone. Users can go to Quick Settings to see which apps are accessing their camera or microphone data and manage permissions if needed. For developers, we recommend reviewing your app’s uses of the microphone and camera and removing any that users would not expect. More here.

Microphone & camera toggles - We’ve added Quick Settings toggles on supported devices that make it easy for users to instantly disable app access to the microphone and camera. When the toggles are turned off, an app accessing these sensors will receive blank camera and audio feeds, and the system handles notifying the user to enable access to use the app’s features. Developers can use a new API, SensorPrivacyManager, to check whether toggles are supported on the device. The microphone and camera controls apply to all apps regardless of their platform targeting. More here.

Clipboard read notification - To give users more transparency on when apps are reading from the clipboard, Android 12 now displays a toast at the bottom of the screen each time an app calls getPrimaryClip(). Android won’t show the toast if the clipboard was copied from the same app. We recommend minimizing your app’s reads from the clipboard, and making sure that you only access the clipboard when it will be expected by users. More here.

More intuitive connectivity experience - To help users understand and manage their network connections better, we’re introducing a simpler and more intuitive connectivity experience across the Status Bar, Quick Settings, and Settings. The new Internet Panel helps users switch between their Internet providers and troubleshoot network connectivity issues more easily. Let us know what you think!

New Internet controls through Quick Settings.

Visit the Android 12 developer site to learn more about all of the new features in Android 12.

Android 12 at Google I/O

At Google I/O we talked about everything that’s new in Android for developers - from Android 12 to Modern Android Development tools, new form factors like Wear and foldables, and Google Play. Here are the top 3 things to know about Android 12 at Google I/O.

#1 A new UI for Android - Android 12 brings the biggest design change in Android's history. We rethought the entire experience, from the colors to the shapes, light and motion, making Android 12 more expressive, dynamic, and personal, under a single design language called Material You.

#2 Performance - With Android 12, we made significant and deep investments in performance, from foundational system performance and battery life to foreground service changes, media quality and performance, and new tools to optimize apps.

#3 Privacy and security - In Android 12 we’re continuing to give users more transparency and control while keeping their devices and data secure.

For an overview of Android 12 for developers, watch this year’s What's new in Android talk, and check out Top 12 tips to get ready for Android 12 for an overview of where to test your app for compatibility. The full list of Android content at Google I/O is here.

App compatibility

With more early-adopter users and developers getting Android 12 beta on Pixel and other devices, now is the time to make sure your apps are ready!

To test your app for compatibility, install the published version from Google Play or other source onto a device or emulator running Android 12 Beta. Work through all of the app’s flows and watch for functional or UI issues. Review the behavior changes to focus your testing. There’s no need to change your app’s targetSdkVersion at this time, so when you’ve resolved any issues, publish an update as soon as possible for your Android 12 Beta users.

With Beta 2, Android 12 is closing in on Platform Stability in August 2021. Starting then, app-facing system behaviors, SDK/NDK APIs, and non-SDK lists will be finalized. At that time, you should finish up your final compatibility testing and release a fully compatible version of your app, SDK, or library. More on the timeline for developers is here.

Get started with Android 12!

Today’s Beta release has everything you need to try the latest Android 12 features, test your apps, and give us feedback. Just enroll any supported Pixel device to get the update over-the-air. To get started developing, set up the Android 12 SDK.

You can also get Android 12 Beta 2 on devices from some of our top device-maker partners. Visit to see the full list of partners participating in Android 12 Beta. For even broader testing, you can try Android 12 Beta on Android GSI images, and if you don’t have a device you can test on the Android Emulator.

Beta 2 is also available for Android TV, so you can check out the latest TV features and test your apps on the all-new Google TV experience. Try it out with the ADT-3 developer kit. More here.

For complete details on Android 12 Beta, visit the Android 12 developer site.

June 22nd 2021, 11:08 am

Grow your indie game with help from Google Play

Android Developers Blog

Posted by Patricia Correa, Director, Global Developer Marketing

At Google Play we’re committed to helping all developers thrive, whether these are large multinational companies or small startups and indie game studios. They are all critical to providing the services and experiences that people around the world look for on their Android devices. The indie game developer community, in particular, constantly pushes the boundaries with their creativity and passion, and bring unique and diverse content to players everywhere.

To continue supporting indies, today we’re opening submissions for two of our annual developer programs - the Indie Games Accelerator and the Indie Games Festival. These programs are designed to help small games studios grow on Google Play, no matter what stage they are in:

This year the programs come with some changes, including more eligible markets and fully digital event experiences. Learn more below and apply by July 1st.

Accelerator: Get education and mentorship to supercharge your growth

If you’re an indie developer, early in your journey - either close to launching a new game or recently launched a title, this is the program for you. We’ll provide education and mentorship that will help you build, launch and grow successfully.

This year we have nearly doubled the eligible markets, with developers from over 70 countries being eligible to apply for the 2021 program.

Selected participants will be invited to take part in a 12-week online acceleration program. During this time you’ll get exclusive access to a community of Google and industry experts, as well as a network of other passionate developers from around the world looking to supercharge their growth.

Festival: win promotions that put your game in the spotlight

If you're an indie game developer who has recently launched a high quality game, this is your chance to have your game discovered by industry experts and players worldwide.

This year we will, again, host three competitions for developers from Japan, South Korea, and selected European countries.

Prizes include features on Google Play store, promotional campaigns worth 100,000 EUR, and more.

June 22nd 2021, 11:08 am

Android Studio 4.2

Android Developers Blog

Posted by Jamal Eason, Product Manager, Android

We are excited to announce that Android Studio 4.2 is now available to download in the stable release channel. The focus areas for this release is an upgraded IntelliJ platform and a handful of new features centered around improving your productivity as an Android app developer.

We know sometimes upgrading your app project to the latest version can be complicated. To address this, we have a new app project upgrade assistant in Android Studio 4.2 that makes it easier to migrate your project and to take advantage of the latest Android Gradle Plugin APIs. Additionally, we have added a whole range of enhancements to the existing features like the Database Inspector, System Trace, SafeArgs support, Apply Changes, the new project wizard and more. If you use these features and you are looking for the next stable version of Android Studio, you should download Android Studio 4.2 today!

Check out the list of new features in Android Studio 4.2 below, organized by key developer flows.


New Project Wizard & New Module Wizard


Query History with the Database Inspector


AGP Upgrade Assistant

// build.gradle.kts

android {
   signingConfigs {
      config {

APK v3 and APK v4 singing support


Multiple Device Deployment


Getting Started


Download the latest version of Android Studio 4.2 from the download page. If you are using a previous release of Android Studio, you can simply update to the latest version of Android Studio. If you want to maintain a stable version of Android Studio, you can run the stable release version and canary release versions of Android Studio Arctic Fox at the same time. Learn more.

We appreciate any feedback on things you like, and issues or features you would like to see. If you find a bug or issue, feel free to file an issue. Follow us -- the Android Studio development team ‐ on Twitter and on Medium.

Java is a registered trademark of Oracle and/or its affiliates.

May 14th 2021, 12:50 am

New safety section in Google Play will give transparency into how apps use data

Android Developers Blog

Posted by Suzanne Frey, VP, Product, Android Security and Privacy

We work closely with developers to keep Google Play a safe, trusted space for billions of people to enjoy the latest Android apps. Today, we’re pre-announcing an upcoming safety section in Google Play that will help people understand the data an app collects or shares, if that data is secured, and additional details that impact privacy and security.

Developers agree that people should have transparency and control over their data. And they want simple ways to communicate app safety that are easy to understand and help users to make informed choices about how their data is handled. Developers also want to give additional context to explain data use and how safety practices could affect the app experience. So in addition to the data an app collects or shares, we’re introducing new elements to highlight whether:

  1. The app has security practices, like data encryption
  2. The app follows our Families policy
  3. The app needs this data to function or if users have choice in sharing it
  4. The app’s safety section is verified by an independent third-party
  5. The app enables users to request data deletion, if they decide to uninstall

This can be a big change, so we’re sharing this in advance and building with developers alongside us.

What this section will include

Among other things, we’ll ask developers to share:

Similar to app details like screenshots and descriptions, developers are responsible for the information disclosed in their section. Google Play will introduce a policy that requires developers to provide accurate information. If we find that a developer has misrepresented the data they’ve provided and is in violation of the policy, we will require the developer to fix it. Apps that don’t become compliant will be subject to policy enforcement.

What you can expect

All apps on Google Play - including Google's own apps - will be required to share this information and provide a privacy policy.

We’re committed to ensuring that developers have plenty of time to prepare. This summer, we’ll share the new policy requirements and resources, including detailed guidance on app privacy policies. Starting Q2 2022, new app submissions and app updates must include this information.

Target Timeline (Dates subject to change)

In the future, we’ll continue providing new ways to simplify control for users and automate more work for developers.

In the meantime, here are some resources to help you design secure & privacy-friendly apps

We’re excited to advance our partnership with developers to make Google Play a trustworthy platform for everyone.

How useful did you find this blog post?

May 14th 2021, 12:50 am

#AndroidDevChallenge - It’s a wrap!

Android Developers Blog

Posted by The Jetpack Compose Team

From delightful doggos to creative countdowns and storming weather apps, the 2000 submissions to the #AndroidDevChallenge blew our socks off. We are truly amazed at the creativity and beauty of the apps you built with Jetpack Compose, Android’s new UI toolkit. Now that we judged the final challenge, let’s wrap up, look back at this incredible journey and find out who the winners are!

Week #1 - Puppy adoption app 🐶

The week that made us say “Aww” every time we check out our social media timelines. With this challenge you took your first steps with Compose and learned how to work with lists.

We already shipped the prizes to the first 500 successful submissions: a limited edition trophy of our Jetpack Compose superhero, made of LEGO bricks.

Week #1 prize: Jetpack Compose superhero

Week #2 - Countdown timer ⏲️

When time came to implement a countdown timer, you didn’t disappoint! This challenge showed us that you mastered state and animation in Compose.

The first successful 500 submissions already got this week’s prize: a Compose poster pack.

Week #2 prize: a Jetpack Compose poster pack

Week #3 - Speed round 🏎

We couldn’t believe how fast you were! This week you had to implement a design provided by us (the designs are still available if you want to try your hand at them in your own time). We opened the challenge in 3 different time zones, each with its own design to build. Here are the winning projects and the time it took to implement each of them:

It was incredible seeing how quickly the winners worked with themes and layouts in Compose; scoring themselves a Pixel 5 each!

Week #4 - Weather app 🌤

Come rain or shine, Android developers don’t disappoint! This week it rained… Compose weather apps. We judged them on 4 categories: code quality, novelty of idea, visual beauty and overall execution. As you made our job quite hard, we got some help from some of our Google Developer Experts to decide the winning projects:

Code quality: Paulo Pereira - JetWeatherfy

Novelty of idea: Roman Levinzon - Colony X Weather

Visual beauty: Chris Horner - Weather Scene

Overall execution: Corentin Bect - Flux

The winners each got a Google Pixel 5!

It was incredible to see what thousands of you built in this Jetpack Compose #AndroidDevChallenge. We hope that the challenge gave you a fun way to start learning Jetpack Compose and get ready to adopt it in your apps. If you’re new to Compose or want to dig deeper, check out our docs, codelabs & samples:

Have fun composing!

May 14th 2021, 12:50 am

Updated guidance to improve your app quality and discovery on Google Play

Android Developers Blog

Posted by Bert de Weerd and Tingmui Li, Google Play

When Google Play launched in 2008, it was easy for developers to get noticed with only a few hundred apps and games live on the Play Store. Fast forward to today, there are now millions of apps and games available to audiences in over 190 countries. The unique assets you provide to the Store – images, video, descriptions, even your app name itself – are essential to users making a decision on what to download.

Google Play is increasingly showing more of your assets front and center, surfacing graphic assets and descriptions right on Apps and Games home. To ensure that your store listing assets can help users anticipate your in-app or in-game experience and drive meaningful downloads, we are:

  1. Pre-announcing a policy change for app metadata
  2. Introducing new guidelines on Store listing preview assets

1. Pre-announce policy change for app metadata

Since your app title, icon, and developer name are the most important discovery elements on your store listing page, we are preparing to launch a new set of policies to keep these elements recognizable and unique, focusing on:

App title, icon and developer name that do not meet the upcoming policies will not be allowed on Google Play. You can expect more details about this policy change, including enforcement start dates, later this year.

We recommend reviewing the examples of do and don’t below and thinking about how these changes may impact you, so you can get ready for the upcoming policy changes.

Store performance or rank:
Price and promotional information:
Play programs and graphic elements that mislead users:
Emoticons & repeated or sequential special characters and or punctuations:

2. New guidelines for Store listing preview assets

We are also announcing new store listing preview asset guidelines for the feature graphics, screenshots, videos, and short descriptions you supply to showcase your app's features and functionality. Assets that don’t meet our guidelines may be ineligible for promotion and recommendation on major Google Play surfaces like Apps and Games home.

The new guideline for developer supplied assets focus on the following principles:

To ensure that your apps and games are eligible for recommendations on all surfaces on Google Play, please review our new store listing guidelines. We’ll start using these guidelines to inform our recommendations starting in the second half of 2021.

We hope you found both the policy pre-announcement and preview asset guideline announcement useful as you plan your roadmap for the year, and we hope you share in our excitement for a more useful and engaging Play Store.

April 29th 2021, 12:46 pm

#AndroidDevJourney spotlight - April edition

Android Developers Blog

Posted by Luli Perkins, Developer Relations Program Manager

We’re wrapping up the April edition of #AndroidDevJourney by highlighting Android developers from all over the world each with their own unique experience. Early this year, we launched the #AndroidDevJourney series to highlight our community on our social media accounts. Each Saturday, from January through June, we’ll feature a new developer on our Twitter account.

We’re getting near the end of our six month journey, so don’t miss your chance to be featured in one of our last two spotlight series, tweet us your story using #AndroidDevJourney.

Mohit Sarveiya

Tell me about your journey to becoming an Android Developer and how you got started.

I started my journey first as a backend developer 10 years ago while teaching myself Android development on the side. I had an opportunity to create an app from scratch. My first app had in-app-purchasing, notifications, and video playback. It wasn’t easy. I was the only Android developer and I learned as I went along. I kept building on this experience and have worked on building many apps in the past 10 years.

In my journey, I was an early adopter of Kotlin. During that time, there were very few resources to learn Kotlin. I learned Kotlin by converting lots of Java code to Kotlin. I’m grateful to have learned Kotlin early on. Coding is what I do, but not who I am. There have been many obstacles in my journey. But, Kotlin was my medium to discover my passion. It has had a profound impact on my life.

I have helped companies adopt Kotlin and Kotlin Coroutines on both Android and backend. I enjoy teaching it. I shared my experiences through tech talks. For the past eight years I gave a tech talk every month in the NYC community. Every talk has meant so much to me, because of what I went through to prepare for it. My adversity has been my motivator. Everyone sees the results, but not the process. I discovered my passion for public speaking and developer advocacy. After eight years, I became a GDE in Android & Kotlin and I’m still on this journey to inspire others.

What’s one shortcut, tip, or hack you can’t live without?

Finding ways to incorporate automation in your solutions is one of the attributes of a good developer. I have observed it in many examples through out my career. For example, a developer created many Gson adapters manually while another developer wrote an annotation processor to generate them. It cut down many lines of code. Another example is a developer who wrote a generator to setup the scaffolding for a module. Its valuable to find ways to automate tasks.

What's the one piece of advice you wish someone would have given you when you started on your journey?

You will seldomly work on green field projects. You will work on an app that already exists and has been built over the years. You’ll work on teams that have diverse perspectives on best practices on Android throughout your career. You may not work on an Android app that is using a modern Android development stack. You’ll find many obstacles navigating this spectrum. But, the obstacle is the way.

Imangi Studios

Tell me about your journey to becoming an Android Developer and how you got started.

We first became an Android Developers when we made Temple Run! We started out with a bang. Fans instantly all of the world came to love playing Temple Run on Android and we were happy to develop the game for Android!

What’s one shortcut, tip, or hack you can’t live without?

Tip 1 - To help deal with the larger number of Android devices out there, build a device farm with a wide range of devices, and do robust automated testing on your app from the start.

Tip 2 - Build releases and store listings can be updated independently.

What's the one piece of advice you wish someone would have given you when you started on your journey?

Advice 1 - The biggest thing that struck us about Android development is just how many devices there are out there. Google Play supports tens of thousands of devices, and if you want to cover a sizable portion of those, you need to plan ahead for things like quality controls, asset tiering, and content delivery specced. If we could go back to the beginning of Temple Run 2 and have known that at the start, we could have planned a game that would look and run even better across an even bigger range of devices.

Advice 2 - The industry moves fast so be open to change and research your craft.

Valentine Rutto

Tell me about your journey to becoming an Android Developer and how you got started.

My Android development journey started in 2015. I was doing my computer science degree and I felt that there was a gap between the theory and practical technical skills so I enrolled in the Moringa School coding bootcamp. Here I was introduced to Android development by the then instructor and cofounder Frank Tamre. I immediately fell in love with Android and I have been hooked ever since.

The Google Developer Groups and WomenTechMakers communities have played a great role in my journey. The tech community provides invaluable resources that have immensely helped in my career growth. I was the Women TechMakers Nyeri chapter lead for about two years where I taught Android development to aspiring developers. Through the community I was able to meet brilliant Android developers who I still learn from everyday.

Currently I always aim to contribute to the tech community in whatever capacity I can.

What’s one shortcut, tip, or hack you can’t live without?

I can't live without JsonToKotlin plugin it is an efficient tool that makes JSON deserialization easy and fast.

What's the one piece of advice you wish someone would have given you when you started on your journey?

Read the developer documentation, it will save you a lot of time which would otherwise have been wasted on trial and error.

Joe Birch

Tell me about your journey to becoming an Android Developer and how you got started.

I started working with Android while I was studying at university, and it was actually kind of by chance! One of my lecturers had some friends who were looking to build an app for their company. Truth is, at this point I had not even had an Android phone for long but I jumped at the chance to build something for a real client. During this build, I pretty much fell in love with Android and quickly became fascinated in how portable and accessible things that you build would become. As soon as I started building that project, I knew this is how I wanted my start off my career.

What’s one shortcut, tip, or hack you can’t live without?

For me, split screen in Android Studio has really helped my productivity when working on some projects. Whether it's during refactoring or working with a file and its corresponding tests, being able to display multiple files side-by-side removes the need to manually hop between them. Within Android Studio, you can do this by right-clicking on the tab for a file and selecting either "Split Horizontally" or "Split Vertically.” The selected file will then shift to a seperate section and you can work on that code at the same time as another file within a separate section.

What's the one piece of advice you wish someone would have given you when you started on your journey?

Don't get too caught up in making things perfect or strictly following standards. When I started out building things privately or sharing things in the public, I felt I had to match up to these and was worried too much about making mistakes.

All learning is a journey, we will always make mistakes and that's where growth comes from! While topics things can be important, getting something tangible in your hands can be incredibly motivating - something that can be slowed down greatly if you get caught up here. It's still worth diving in deeper and learning how things work once you have something working, but it can be inspiring to get something built without getting caught up in too many of the details!

The Android Developer community prides itself in its inclusivity and welcomes developers from all backgrounds and stages of life. If you’re feeling inspired and want to learn more about how to become a part of our community, here are a few resources to help get you started.

Dive into

Follow us on Twitter

Subscribe to our YouTube channel

The Google Developer Groups program gives developers the opportunity to meet local developers with similar interests in technology. A GDG meetup event includes talks on a wide range of technical topics where you can learn new skills through hands-on workshops.

Join a chapter near you here.

Founded in 2014, Google’s Women Techmakers is dedicated to helping all women thrive in tech through community, visibility and resources. With a member base of over 100,000 women developers, we’re working with communities across the globe to build a world where all women can thrive in tech.

Become a member here.

The Google Developers Experts program is a global network of highly experienced technology experts, influencers and thought leaders who actively support developers, companies and tech communities by speaking at events, publishing content, and building innovative apps. Experts actively contribute to and support the developer and startup ecosystems around the world, helping them build and launch highly innovative apps.

Learn more about the program here.

Java is a registered trademark of Oracle and/or its affiliates.

April 24th 2021, 12:09 pm

Google Developer Student Clubs in India build Android Apps with Kotlin

Android Developers Blog

Posted by Siddhant Agarwal, Google Developer Student Clubs India Community Manager and Biswajeet Mallik, Program Manager, Google Developers India

Google Developer Student Clubs recently hosted Android Study Jams, a collection of community-organized study groups, in 275 campuses across India. These study jams helped students build Android apps in the Kotlin programming language via a curriculum provided by Google.

These virtual events were attended by thousands of students in 250+ colleges and saw the creation of hundreds of new Android apps made with Kotlin. To celebrate all of this exciting work, we wanted to showcase some noteworthy apps built by the Android Study Jam session participants:

Stumate App

Developed by GDSC GMR Institute of Technology, Stumate is a place for students who are looking for a solution to store all of their files and notes in one organized place on their devices. This application also allows students to send notifications to their classmates about assignments while uploading notes in a PDF, Word Document or a Presentation.

The app uses the Material Design library for the front-end and Firebase as a backend. Some of the technical concepts used in the app include:

  1. SharedPreferences and RoomDatabase to store user credentials
  2. WorkManager to schedule the reminders at a particular time
  3. Data Binding to display the content
  4. Firebase Authentication (Google Single Sign On and Email Auth), Realtime Database, Storage, Firebase Cloud Messaging, Crashlytics
  5. Firebase Test Lab to test the application on various devices

You can find this app on the Play Store here.

Ask Me Anonymously App

Ask Me Anonymously is a chat application developed by GDSC Chandigarh University where users can ask questions to one another without revealing their identity.

This app uses concepts that were taught in Android Study Jams such as:

  1. RecyclerView
  2. Activity Lifecycle
  3. Data Binding
  4. Using Glide for loading and displaying images from the internet

The application also uses Firebase Realtime Database and Firebase Cloud Storage for implementing the above-said functionality, it also uses some other notable Firebase features such as Cloud Messaging and Firebase Dynamic Links.

You can find this app on the Play Store here.

Travel Wise App

Developed by GDSC Indian Institute of Information Technology, Lucknow, Travel Wise is an app that helps users find co-travellers in their journey, allowing you to share your journey and save money on travelling.

The app uses Google Firebase for authentication and Realtime Database for storage.

Eye Tester App

In today's digital age, our screen time has dramatically increased, making eyesight problems more common. GDSC Vidyavardhaka College of Engineering developed an Eye Tester app, which tells whether one should visit a doctor or not based on a simple digital eye test.

The app uses the concept 'toast' which makes the text appear for a short period and disappear, and 'random' which generates random numbers. The app is designed using Compose’s 'constraint-layout' which gives the flexibility to design the UI of the app efficiently.

Taperback App

GDSC Veermata Jijabai Technological Institute developed Taperback, a book and novel reading Android app. In Taperback, users can read from a large collection of free books collected manually from already publicly available online websites. Books from these sites are then later uploaded to the Firebase Firestore and Storage using a custom made Web Portal, along with other metadata of the books. New books are often added daily.

This app was created using Kotlin and XML. Some of the key concepts used are Kotlin Coroutines, navigation graphs, RecyclerView, WebView, SQLite, data caching, and more.

We want to thank all the Android Study Jam facilitators for hosting these sessions and for helping students develop these exciting Android apps with Kotlin.

The Google Developer Student Clubs Community in India is now bringing their enthusiasm to the 2021 Solution Challenge, where they’re building apps that serve their local community.

Get started

Ready to start learning Kotlin and building your own Android apps? If you’re a university student, join a Google Developer Student Club near you. If you’re a professional, find the right Google Developer Group for you.

April 23rd 2021, 2:41 pm

Android 12 Developer Preview 3

Android Developers Blog

Posted by Dave Burke, VP of Engineering

Google I/O 2021 is just a few weeks away and we’re looking forward to sharing all of the latest news in Android with you soon! To take us one step closer, today we’re sharing Developer Preview 3, the next milestone release of Android 12, for your testing and feedback.

In Android 12 we’re continuing to focus on making the OS smarter, easier to use, and better performing, with privacy and security at the core. We’re also working to give you new tools for building great experiences for users on phones, laptops, tablets, TVs, or cars. Some things to check out in today’s release include a new app launch experience, new video and camera capabilities to help you get more out of underlying hardware support, and a new permission for exact alarms to help users save battery.

Read on for more highlights and visit the Android 12 developer site for details and downloads for Pixel. If you’re already running a Developer Preview 2 build, watch for an over-the-air (OTA) update coming to you soon! As always, let us know what you think, and thanks for all of the feedback you’ve shared so far.

Better user experience tools

Today’s release includes new tools to help you deliver a polished experience and better performance for users. Here are some of the updates.

Improved app launch experience - In Android 12 we’re making app startup a more consistent and delightful experience. We’ve added a new app launch animation for all apps from the point of launch, a splash screen showing the app icon, and a transition to the app itself. The new experience brings standard design elements to every app launch, but we’ve also made it customizable so apps can maintain their unique branding. For example, you can use new splashscreen APIs and resources to manage the splash screen window’s background color; you can replace the static launcher icon with a custom icon or an animation; you can control the timing to reveal the app; and you can set light mode or dark mode, and manage exit animation.

There’s nothing you need to do to take advantage of the new experience - it’s enabled by default for all apps. We recommend testing your app with the new experience soon, especially if you’re already using a splash screen. To customize the experience, check out the new APIs and let us know what you think. More here.

New call notification template - Incoming and ongoing calls are important to users and they need to be easy to see and manage. In Android 12 we’re improving call notifications to give them more visibility and scannability, and improve their consistency with other notification components. If your app handles calls - such as a dialer app or chat app with video calling - you’ll want to try our new CallStyle template. You can use the template to create notifications for incoming, outgoing, and screened calls. Each type supports multiple actions, including default actions and custom actions that are specific to your app. You can also attach a large avatar image, provide text, and set button color hints. The OS gives CallStyle notifications high visibility, such as bringing them to the top of the notifications shade. More here.

New permission for exact alarms - Alarms are an important way for apps to schedule work. In most cases, apps should use inexact alarms, which have the advantage of being battery-friendly. Android manages these alarms to minimize wakeups and battery impacts, such as through Doze and App Standby. For cases where you need alarms with precise timing - for example alarm clocks and timers - you can use exact alarms instead. These are convenient and reliable, but they can also cause battery drain, especially when overused. So in Android 12, we’re making some changes to give users more control.

Apps targeting Android 12 that want to use exact alarms will now need to request a new permission, SCHEDULE_EXACT_ALARM. It’s a normal permission, so once you’ve declared it in your manifest, you’ll be automatically granted it at first startup. However, we’re also giving users visibility over the apps that have this permission and letting them grant and revoke it from Special App Access Permissions in Settings. If your app requires exact alarms, make sure you handle cases where it no longer has the permission. We’ve added a new API, canScheduleExactAlarms(), to let you check the permission status for your app. In general, we recommend migrating your apps away from uses of exact alarms wherever possible. More here.

Improved web linking - In Android 12 we’re making some changes to help users get to their content faster and more seamlessly. First, we’ve changed the default handling of links that aren’t verified through Android App Links or manually approved for links by the user. Now the OS will directly open them in the default browser, rather than showing a chooser dialog. To make it easier for users to approve your app for links, we’ve added a new Intent that takes them to “Open by default” in Settings. If you want to ensure that only your app can handle links from your domain, you can use App Links. We’ve added new adb commands to help you configure and test your links. More here.

Rich haptic experiences - We’re expanding the tools we offer for creating informative haptic feedback for UI events, immersive and delightful effects for gaming, and attentional haptics for productivity. We’ve added expressive effects like low tick that take advantage of the broader frequency bandwidth of the latest actuators. Game developers can now access multiple, different actuators independently in game controllers to deliver the same effect synchronously or different haptic effects on multiple actuators. For developers, we recommend using the constants and primitives as building blocks for rich haptic effects - constants to enhance UI events and haptic composer to sequence primitives for more complex effects. You can try these APIs to the fullest on Pixel 4 devices today, and we’re continuing to work with our device-maker partners to bring the latest in haptics support to users across the ecosystem.

Video encoding improvements - Android 12 standardizes the set of keys for controlling the range of the video Quantization Parameters (QP), allowing developers to avoid vendor-specific code. The new keys are available in the MediaFormat API and also in the NDK Media library. Video encoders must specify a minimum video quality threshold to ensure that users don't experience extremely low quality when videos are complex.

Camera2 vendor extensions - Many of our device manufacturer partners have built custom camera effects—such as bokeh, HDR, night mode, and others—that they want apps to use to create differentiated experiences on their devices. We’ve already supported these custom effects through a set of vendor extensions in our CameraX library, and now in Android 12 we’re exposing the vendor extensions directly in the platform as well. This helps apps that have complex Camera2 implementations to take advantage of the extensions without having to make significant changes to legacy code. The extension APIs expose exactly the same set of effects as in CameraX, and those are already supported on many different devices, so you can use them right out of the box. More here.

Quad bayer camera sensor support - Many Android devices today ship with ultra high-resolution camera sensors, typically with Quad / Nona Bayer patterns, and these offer great flexibility in terms of image quality and low-light performance. In Android 12, we’re introducing new platform APIs that let third-party apps take full advantage of these versatile sensors. The new APIs support the unique behavior of these sensors and take into account that they might support different stream configurations and combinations when operating in full resolution or ‘maximum resolution’ mode vs ‘default’ mode.

Faster machine learning - In Android 12, we invested in key areas so that developers can make the most of ML accelerators and always get the best possible performance through the Neural Networks API. In terms of performance improvements - we have more than halved inference call overhead by introducing improvements such as padding, sync fences and reusable execution objects. We’ve also made ML accelerator drivers updatable outside of platform releases, through Google Play services. This will make it easier for developers to take advantage of the latest drivers on any compatible device, and make sure that ML performance improvements and bug fixes reach users faster than ever before.

Standardizing GPU compute - We are deprecating the RenderScript APIs in favor of cross-platform GPU compute solutions such as Vulkan and OpenGL. We want you to have confidence that your high-performance workloads will run on GPU hardware, and many devices are already shipping with only CPU support for RenderScript. The existing APIs will continue to work for the time-being, and we've open-sourced a library for RenderScript intrinsics such as blur that uses the highly-optimized intrinsics platform code. Samples and a migration guide for using Vulkan to implement image processing are also available. More here.

Better debugging for native crashes - You've told us that debugging NDK-related crashes can be challenging. We’re making this easier in Android 12 by giving you more actionable diagnostics. In the platform, we use crash dump files called tombstones to debug our native crashes, and they contain the information required to diagnose a variety of issues; this includes unwinding through ART, integrating with fdsan, and recording all the stacks involved in a GWP-ASan, HWASan, or MTE crash. Now we’re giving your app access to its tombstone files through the App Exit Reasons API. When your app uses `ApplicationExitInfo` with `REASON_CRASH_NATIVE`, you can now call `getTraceInputStream()` to get the tombstone data as a protocol buffer.

More-flexible backup configurations - Android’s backup service lets users restore or migrate their data to a new device effortlessly. Apps are central to the experience, enabling users to easily transfer app data and continue where they left off. The backup service supports both cloud backups to Google Drive and device-to-device transfers, and developers can take advantage of these with minimal changes in their apps. For apps targeting Android 12, we’re improving the service to give you more flexibility and control. We’ve updated the XML configuration format so you can now set different rules for cloud backups and device-to-device transfers. With this, for example, you could exclude a large file from cloud backups but include it in device-to-device transfers. You can also set encryption requirements separately for backups or transfers. Last, if you’d like to opt-out of Auto Backup for device-to-device transfers, please use the new configuration format instead of the allowBackup manifest attribute. More here.

You can read more about all of the Android 12 features and behavior changes here.

App compatibility

We’re working to make updates faster and smoother by prioritizing app compatibility as we roll out new platform versions. In Android 12, we’ve made most app-facing changes opt-in to give you more time, and we’ve updated our tools and processes to help you get ready sooner.

With Developer Preview 3, we’re moving closer to our first Beta release as we continue to improve stability. Now is the time to try the new features and changes and let us know how these work with your apps. Please visit the feedback page to share your thoughts with us or report issues.

With the first Beta coming soon, it’s time to start your compatibility testing to make sure your app is ready. We recommend releasing a compatible update over the next few weeks. There’s no need to change your app’s targetSdkVersion at this time, although you can use the behavior change toggles to get a preliminary idea of how your app might be affected by opt-in changes in Android 12.

As we reach Platform Stability in August 2021, all of the app-facing system behaviors, SDK/NDK APIs, and non-SDK lists will be finalized. At that point, you can finish up your final compatibility testing and release a fully compatible version of your app, SDK, or library. More on the timeline for developers is here.

App compatibility toggles in Developer Options.

Get started with Android 12

Today’s Developer Preview has everything you need to try the Android 12 features, test your apps, and give us feedback. You can get started today by flashing a device system image to a Pixel 3 / 3 XL, Pixel 3a / 3a XL, Pixel 4 / 4 XL, Pixel 4a / 4a 5G, or Pixel 5 device or using the Android Emulator. If you’ve already installed a preview build to your Pixel device, you’ll automatically get this update and future Beta updates over-the-air. More details on how to get Android 12 are here.

For complete information, visit the Android 12 developer site.

April 21st 2021, 1:07 pm

MAD Skills WorkManager : Wrap-Up

Android Developers Blog

Posted by Caren Chang, Developer Relations Engineer

In case you missed it, we’ve just finished a MAD Skills series on WorkManager. We started by introducing WorkManager for those new to the library and then proceeded to talk more about advanced usages including how to test and debug your WorkManager code. The series ended with an episode on how to migrate your old code from GCMNetworkManager and FirebaseJobDispatcher to use WorkManager instead.

Here’s a quick summary of what we covered.

Episode 1: WorkManager: Basics

In our first episode, we explored the basics of WorkManager through the WorkManager codelab. We started by understanding how to define work we want done, and how to schedule the work. We then moved on to implementing different types of work: unique and periodic. Finally, we ended the episode by taking a look at app standby buckets to better understand how WorkManager schedules work.

If you’re new to WorkManager, we also recommend taking a look at the following articles:

Episode 2: WorkManager: Working in the background

The series continued with Ben giving a more in-depth look at how WorkManager deals with multi-threading. When working with threads, you have the option of using Executors, coroutines or RxJava, and Ben demonstrated each of these approaches with WorkManager. The episode concluded by demonstrating how to return a result when the work is completed so that the UI can be updated.

If you’re interested in using WorkManager with coroutines, we also recommend this article from Florina: WorkManager - Kotlin APIs

Episode 3: WorkManager: Advanced configuration and testing

In episode 3, we took a look at how to customize the initialization of WorkManager and support apps that span multiple processes. We’ve gotten a lot of questions from developers around testing and debugging, so Ben also dove into how to test your Workers, and useful debugging techniques.

Episode 4: Migrating from GCM NetworkManager and FirebaseJobDispatcher to WorkManager

In episode 4, we focused on how to migrate from old job scheduling libraries (GCMNetworkManager and FirebaseJobDispatcher) to WorkManager. Once your app starts targeting API level 30 and above, GCM NetworkManager and FirebaseJobDispatcher will no longer work on devices running Android Marshmallow (6.0) and above. If your app is still using either of those libraries, now is the time to update your apps to use WorkManager instead!

Episode 5: WorkManager with Hugo

Android GDE Hugo Visser talked about why he chose to use WorkManager in a health app he recently worked on and how the library has helped his development process.

Episode 6: Live Q&A

The series wrapped up with a live Q&A session where we answered your WorkManager related questions. Watch the recording to see all your questions answered, including future plans for WorkManager, handling duplicate work, retrying failed work, and more!

April 20th 2021, 8:16 pm

Tools to help developers provide a safer content experience

Android Developers Blog

Posted by Lisa Martinez, Head of Security & Privacy Business Development, Google Play and Andrew Ahn, Product Manager, Play and Android App Safety

Google helps protect billions of users every day through the use of a robust set of tools designed to keep users safe online. We’re proud to provide a wide range of these same resources to help developers build safe and successful apps. User participation increases when people have a safe and positive app engagement. We’d like to highlight a few of these free tools that developers can consider to help make user experiences safer for everyone.

Reducing toxic conversation with Perspective API

Perspective API, a free product offered by Jigsaw, uses machine learning to identify toxic language, like insults, profanity, or identity based attacks, making it easier to host healthier conversations in your apps. Perspective can be used to give feedback to commenters, help moderators more easily review comments, and keep conversations open online. Many online publishers and developers, such as the New York Times, El País, FACEIT, and Coral by VoxMedia have started to adopt this tool to promote constructive online dialogues. Learn how to get started here.

Increase child safety with Content Safety API

Google’s Content Safety API uses artificial intelligence to help developers better prioritize abuse material for review. We offer this service to NGOs and private companies to support their work protecting children. The API steps up the fight for child safety by prioritizing potentially illegal content for human review and helping reviewers find and report content faster. Quicker identification of new abuse images increases the likelihood that children being abused could be identified and protected from further abuse. Making review queues more efficient and less noisy also reduces the toll on human reviewers, who review images to confirm instances of abuse. Learn more about this on our Protecting Children site.

Prevent links to unsafe files and sites with the Safe Browsing API

Google Safe Browsing helps protect billions of devices every day by showing warnings to users when they attempt to navigate to dangerous sites or download dangerous files. Safe Browsing also notifies webmasters when their websites are compromised by malicious actors. Safe Browsing protections work across Google products and power safer browsing experiences across the Internet. Technical information on how to get started can be found here.

Thank you for continuing to partner with us to provide a positive experience for our shared users on Google Play.

April 20th 2021, 8:16 pm

Start Your Engines: Launch New Android Auto Apps to Production!

Android Developers Blog

Posted by Eric Bahna, Product Manager

In March, we published the Android for Cars App Library as part of Jetpack and most developers have already migrated their implementations to it! In addition to fantastic partner adoption, drivers have been enthusiastic about the new apps and our quality metrics have been positive.

Partner apps running on the Jetpack library (clockwise from upper left): T map, Chargepoint, Sygic, PlugShare, AmiGO, 2GIS, A Better Route Planner, and Flitsmeister

Today, we’re thrilled to announce that you can publish your Android Auto navigation, parking, and charging apps to production! We’ve been hard at work stabilizing the library, Android Auto, and the publishing process to reach this milestone. Publishing to production enables drivers to use your Android Auto app on their car screen without needing to sign up for a beta program. Here’s how:

Thank you for your collaboration and feedback on the Android for Cars App Library 1.0! One of the most common requests from Android Auto users has been for more categories of apps. Our goal with the library is to enable you to easily bring your app to 500+ models of Android Auto-compatible vehicles while meeting our app quality guidelines. The library abstracts away the complexities of screen form factors and input modes so you can focus on what makes your app shine.

Enabling navigation, parking, and charging apps in production is both a big step and the start of a much longer journey. We’re excited to see what you build and look forward to working together to deliver awesome in-car experiences.

April 20th 2021, 8:16 pm

A New Standard for Mobile App Security

Android Developers Blog

Posted by Eugene Liderman, Director, Android Security Strategy and Brooke Davis, Android Security & Privacy Partnerships

With all of the challenges from this past year, users have become increasingly dependent on their mobile devices to create fitness routines, stay connected with loved ones, work remotely, and order things like groceries with ease. According to eMarketer, in 2020 users spent over three and a half hours per day using mobile apps. With so much time spent on mobile devices, ensuring the safety of mobile apps is more important than ever. Despite the importance of digital security, there isn’t a consistent industry standard for assessing mobile apps. Existing guidelines tend to be either too lightweight or too onerous for the average developer, and lack a compliance arm. That’s why we're excited to share ioXt’s announcement of a new Mobile Application Profile which provides a set of security and privacy requirements with defined acceptance criteria which developers can certify their apps against.

Over 20 industry stakeholders, including Google, Amazon, and a number of certified labs such as NCC Group and Dekra, as well as automated mobile app security testing vendors like NowSecure collaborated to develop this new security standard for mobile apps. We’ve seen early interest from Internet of Things (IoT) and virtual private network (VPN) developers, however the standard is appropriate for any cloud connected service such as social, messaging, fitness, or productivity apps.

The Internet of Secure Things Alliance (ioXt) manages a security compliance assessment program for connected devices. ioXt has over 300 members across various industries, including Google, Amazon, Facebook, T-Mobile, Comcast, Zigbee Alliance, Z-Wave Alliance, Legrand, Resideo, Schneider Electric, and many others. With so many companies involved, ioXt covers a wide range of device types, including smart lighting, smart speakers, and webcams, and since most smart devices are managed through apps, they have expanded coverage to include mobile apps with the launch of this profile.

The ioXt Mobile Application Profile provides a minimum set of commercial best practices for all cloud connected apps running on mobile devices. This security baseline helps mitigate against common threats and reduces the probability of significant vulnerabilities. The profile leverages existing standards and principles set forth by OWASP MASVS and the VPN Trust Initiative, and allows developers to differentiate security capabilities around cryptography, authentication, network security, and vulnerability disclosure program quality. The profile also provides a framework to evaluate app category specific requirements which may be applied based on the features contained in the app. For example, an IoT app only needs to certify under the Mobile Application profile, whereas a VPN app must comply with the Mobile Application profile, plus the VPN extension.

Certification allows developers to demonstrate product safety and we’re excited about the opportunity for this standard to push the industry forward. We observed that app developers were very quick to resolve any issues that were identified during their blackbox evaluations against this new standard, oftentimes with turnarounds in a matter of days. At launch, the following apps have been certified: Comcast, ExpressVPN, GreenMAX, Hubspace, McAfee Innovations, NordVPN, OpenVPN for Android, Private Internet Access, VPN Private, as well as the Google One app, including VPN by Google One.

We look forward to seeing adoption of the standard grow over time and for those app developers that are already investing in security best practices to be able to highlight their efforts. The standard also serves as a guiding light to inspire more developers to invest in mobile app security. If you are interested in learning more about the ioXt Alliance and how to get your app certified, visit and check out Android’s guidelines for building secure apps here.

April 20th 2021, 8:16 pm

Android GPU Compute Going Forward

Android Developers Blog

Posted by Dan Galpin, Developer Advocate

We introduced RenderScript in Android 3.0 as a way for applications to run computationally-intensive code on the CPU or GPU without having to make use of the NDK or GPU-specific APIs. As Android has evolved, the NDK tooling and APIs for GPU compute using OpenGL have dramatically improved. In Android 7.0 (API level 24), we added the Vulkan API, which allows for low-level access to GPU hardware features. In Android 10.0 (API level 29) we added the capability to easily share Bitmap hardware buffers between Android SDK and NDK code to speed image processing.

We no longer recommend RenderScript as the optimal way to accomplish these performance-critical tasks, and will be deprecating the APIs in Android 12. We want you to have confidence that your high-performance workloads will run on GPU hardware, and many devices are already shipping with only CPU support for RenderScript. The APIs will continue to function, but compiling RenderScript code when targeting Android 12 will give a warning.

How we’re addressing RenderScript intrinsics

The RenderScript subsystem was also used to implement a number of useful image-processing intrinsics. We're providing an open-source library that contains the highly-tuned CPU implementations for all but the Basic Linear Algebra Subprograms (BLAS) intrinsics. For the cases that we have measured, intrinsics execute faster (often substantially so) on the CPU using our library than running within RenderScript, even on devices where GPU support was possible.

For BLAS, we suggest using one of the many libraries that already provide this functionality, such as netlib’s libblas.

Please file issues with the library here.

If you use RenderScript scripts:

To take full advantage of GPU acceleration, we recommend migrating RenderScript scripts to the cross-platform Vulkan API. To help get you started with this transition, we have provided a sample app that demonstrates two RenderScript scripts with Vulkan equivalents.

Because Vulkan is not available on older devices, you may need to manage two code paths: RenderScript on older devices and Vulkan on newer ones. Our documentation has more details on how to migrate.

You can file issues with the sample here.

Thank you

We on the RenderScript team thank you for your support over the years. We understand that transitions are never easy; our focus on cross-platform APIs such as Vulkan will mean even better tools and support for your GPU-accelerated applications.

April 20th 2021, 8:16 pm

#AndroidDevJourney spotlight - March edition

Android Developers Blog

Posted by Luli Perkins, Developer Relations Program Manager

For the March edition of #AndroidDevJourney, we’re highlighting Android developers from all over the world with many different experiences. Early this year, we launched the #AndroidDevJourney series to highlight our community on our social media accounts. Each Saturday, from January through June, we’ll feature a new developer on our Twitter account.

For a chance to be featured in our April spotlight series, tweet us your story using #AndroidDevJourney.

Wajahat Karim

Tell me about your journey to becoming an Android Developer and how you got started.

Since the age of 14, I was very interested in animations and graphic design. I used to watch advertisement animations or cricket match animations of player profiles on TV and wonder how I could create these. Later that year, when my sister purchased our home's first PC, I started learning Microsoft Paint and later Adobe Flash. I worked on Flash for about 11 years throughout high school, University, and my first three jobs in game development.

Game development was and has been my first love in computer science. But, Android became something special for me. It was NOT love-at-first sight because I hated Android when I first learned about it. I still don't know why. Coming from a poor family background, I got a fully-funded scholarship through Prime Minister ICT R&D Scholarship Program and enrolled in National University of Engineering & Technology (NUST), SEECS Islamabad campus.

In my 3rd semester, Android was at 2.2 Froyo. A company organized a workshop at our campus which was attended by high-level tech folks like CTOs, software architects, and lead engineers. University management decided to send three students to attend that workshop and I was lucky enough to be one of them. In simple words, the whole 3-days workshop was over my head. I was a newbie in C++ programming and didn't know anything about Java. And here I was trying to learn high-level Android.

After the workshop, I decided that Android was not for me. However, the university announced an open programming competition for any technology. But they gave extra points for Android submissions. This was my calling. In greed of those extra points, I took up the challenge. I borrowed the only Android book "Hello Android" from my teacher, Sir Shamyl bin Mansoor, and tried to learn as much as I could. Somehow, I managed to submit my first Android app which I showcased on a borrowed laptop with a very slow emulator of Android 2.2. To my surprise, I won it and got Rs. 100,000 prize money. First thing I bought was an Android phone and my journey started.

I started writing about it in a WordPress blog, organized workshops in different universities, made my final year project a 3D game in Adobe Flash, and AIR deployed on a Samsung Galaxy 10 tablet which had a new Android 4 Holo theme and the great Fragments.

After graduation, I got an opportunity from PacktPub (a book publishing company) to write a full book on Android. This was the best achievement I ever received. I managed to co-author two worldwide published 300+ page books (Learning Android Intents & Mastering Android Game Development) on Android in the following two years.

Having about seven years industry hands-on experience in Android development, I spend a lot of time on writing and sharing my knowledge with the community. I mostly write on my website and on Medium. Besides writing, I have been active in open source and have created some Android libraries like EasyFlipView, Room Explorer, etc.

In 2017, I started doing public speaking again. At first, it was a little tough to manage time while working a full-time job and freelance contracts, but it was worth it. I got more and more active in speaking and gave talks at events like Google IO Extended Karachi & Hyderabad in 2018 and 2019, DevFest 2019 Karachi, Pakistan's first DSC Summit, Kotlin Everywhere 2019, and other local events.

From these events, Sami Kizilbash noticed me and nominated me for becoming a Google Developers Expert. It was a tough time because of a serious medical situation with my father at that time, but a year later in February 2020 I became Pakistan's first Google Developers Expert in Android. I never thought that I would be a GDE in a field like Android. It is a big honor and achievement for me, along with a feeling of responsibility to help the community in a better way now. Android development has been my life fuel, career, brought bread for me and my family and happiness in developing and delivering more than 100 apps. With more than 2.5 billion Android devices today, this is an excellent career choice with high growth and potential for upcoming students and developers.

My GDE journey has been a fantastic one. I have enjoyed every moment of it, all the love I got from Google and fellow GDEs - including Joe Birch who actually inspired me to become GDE, Hasan Abid, Saurabh Arora, and Juhani Lehtimaki, and Saad Hamid who also helped me through the process. In all the chaos of 2020, it was a very talkative year for me, as I did 25+ online talks on Jetpack Compose animations concepts.

What’s one shortcut, tip, or hack you can’t live without?

I simply love how Mnemonic Bookmarks make code navigation so much faster and easier. When you are working on a large codebase, it becomes harder to remember which method was where and what was happening in another Fragment. Simply, press Ctrl + F11 and choose any number or character, let's say 1. Now, when you press Ctrl + 1, Android Studio will bring you back on that exact line.

What's the one piece of advice you wish someone would have given you when you started on your journey?

The Computer Science and Information Technology industry is changing and updating minute by minute. No matter what stage of your career you are at, you have to keep learning and updating your skillset. Android is moving at lightspeed, with alpha beta releases rolling out on a regular basis. So, it has become harder to catch up and learn. So, get a Twitter account, and follow the folks of #AndroidDev and you will be amazed how friendly the Twitter developer community is. You will learn new things every single day while scrolling the Twitter feed. And most importantly, don't forget to give back to the community. It could be through retweeting, or sharing your own code snippets, or writing articles, creating videos, or giving talks. In the end, you will see the more you give to the community, the more you gain back. So, it's all worth it.

Himanshu Singh

Tell me about your journey to becoming an Android Developer and how you got started.

My journey started from my college days. I got selected as an Applied CS facilitator for Android by Google in my second year of university. Because of this, I had to take sessions and help students complete a set of tasks as part of Bootcamp. In my college days I was not very good at Android, so when the opportunity came I took it upon myself to gain some knowledge of Android and then help people with their tasks. Learning to build apps that would be used by a lot of people helped me choose Android as a career. And that is how my journey to become an Android developer started.

What’s one shortcut, tip, or hack you can’t live without?

I like to use the Macro shortcut in Android Studio.

What's the one piece of advice you wish someone would have given you when you started on your journey?

As a beginner in any domain, not just Android, please keep asking questions on how to improve and learn from people in the community. Some of them might not answer your queries but a handful of them might. And in this way, you can learn and grow from their experience and when the time is right, you might be able to help someone in the coming future. This is the key to success!

Oluwasegun Famisa

Tell me about your journey to becoming an Android Developer and how you got started.

My journey in becoming an Android Developer started in 2010, my second year of university when I had the opportunity to participate in a program called “Entrepreneurial Programming and Research on Mobiles” (EPROM). It was a collaboration between MIT and Nokia, and my university was one of the campuses that ran the program. I did not study computer science, so the program was my first exposure to software development. I learned how to build J2ME apps and got exposure to different mobile technologies at the time.

Shortly after the program, I got a work-study opportunity at iQube Labs, where my mentor - James Fowe, who was building a mobile developer community in Nigeria - sent me a bunch of resources and tasks for me to learn how to build Android apps. The Android OS around 2010 was Android Froyo and that was the operating system on which I ran my “Hello world” on Android. Within the next year, I found myself building actual apps on Android Gingerbread.

I have since worked as an Android Developer in different companies ranging from small to mid-sized startups with millions of users, to publicly traded companies, all across many countries. I’ve had the opportunity of working with very brilliant folks that have contributed to my growth and learning.

My journey is not complete without talking about the developer community. I consider myself a product of the community and that’s why I try to give back every now and then when I have the opportunity.

I started getting involved in the developer community at my university - through various student groups, including my local GDG group then co-organized by Moyinoluwa Adeyemi (an Android GDE). I attended meetups and participated in developer challenges and hackathons.

Becoming a GDE for Android is a career milestone I never saw coming. It started in 2016 when John Kimani (Google DevRel manager for SSA) toured my office and we ran into each other at the door. I wasn’t prepared enough to become a GDE the first time my profile was reviewed, but with feedback, guidance, mentorship and hard work, I became an Android GDE in 2018.

I’m grateful to have had the opportunity to travel to so many countries around the world and meet members of the global Android Developer community. I’ve also given talks at conferences and meetups; including DevFests, Droidcon (Nairobi, Dubai, Berlin, Boston), and 360AnDev, to mention a few, about topics I enjoy - Kotlin, Design Systems, Jetpack Compose, and Developer Productivity Engineering.

What’s one shortcut, tip, or hack you can’t live without?

That’s such a tough one, but I’ll say my favourite AndroidDev tip right now is: use the Android code search tool - - and Android API documentation as often as possible. (See also:

The two resources have helped me in answering the “why is this not working” question and understanding what’s happening under the hood. A lot of times, I need to really understand what the Framework function I’m calling does, and the answer is almost always in the documentation or in the source code.

What's the one piece of advice you wish someone would have given you when you started on your journey?

I’ll give two for the price of one:

  1. Structure and consistency are important when learning. One can’t possibly know everything, but one can try with enough of these two ingredients. Structured learning is becoming more and more accessible these days than it was, so one should take advantage of it, consistently - through codelabs, or courses and the likes.
  2. Get used to reading official documentations and official source codes. This is a valuable and transferable skill regardless of the technology one works with, so I would advise not to shy away from it.

Karolina Pawlikowska

Tell me about your journey to becoming an Android Developer and how you got started.

From a young age, I’ve always loved science fiction books and movies – I always had a gut feeling that whatever career path I went down, it would have something to do with computers. Programming quickly became my favourite creative outlet – it started with creating websites and apps when I was 11, mainly as a way to enhance my other passions such as drawing and making puzzles for my friends.

I got my first Android phone when I was in high school and immediately knew it would open a whole new world of opportunities for me, so I picked up a few books and found a few online tutorials which got me started with code on my phone running Android 2.1 Eclair.

My first app was a flashcards maker. I needed something like that to help me learn English and I couldn’t find anything online - so I made my own!

Thanks to a few of my passion projects, including a flashcard maker app, I managed to quickly land a job as an Android Engineer while I was still completing my Computer Science degree at university. I then tried working across a few other areas in software engineering, but ultimately, Android was always my favourite and ended up becoming my specialty!

What’s one shortcut, tip, or hack you can’t live without?

It’s not quite a hack, but I honestly don’t know how I lived before ConstraintLayout became a thing! Oh – and Android Weekly’s mailing list, definitely one of the best ways to get all of the relevant news and tutorials in the Android world delivered directly to you every Monday!

What's the one piece of advice you wish someone would have given you when you started on your journey?

Looking back, I definitely recommend putting effort and being really intentional about seeking out other Android engineers around you. Once I started proactively attending meetups and working with other engineers, my skills and knowledge grew exponentially. Collaborating and bouncing around ideas has always been my favourite way to find creative and innovative solutions to problems I’m working on.

April 20th 2021, 8:16 pm

Customize the KPIs on your Google Play Console dashboard

Android Developers Blog

Posted by Tom Grinsted, Product Manager, Google Play

Google Play Console metrics can help you understand your app’s performance across growth and acquisition, engagement and monetization, quality, and churn. But with dozens of metrics — and thousands of variations — we know not every metric is relevant to every person. One of the challenges you’ve shared with us is that it can sometimes be difficult to find exactly the metrics that you need for your personal job role, and to access them quickly and regularly once you have found them. .

That’s why today, we’re pleased to announce that you can now customize and pin the precise metrics that matter to you in a personalized KPIs section at the top of your app dashboard. These customizations are unique to you, so you can configure your KPIs however you want without affecting the rest of your team.

Getting started is easy. On the dashboard for any app, scroll down to the KPI section and select “choose KPIs.” You can either build your own or start with suggested KPIs for job specialities, such as Growth, Quality and Health, or Monetization.

There’s an extensive list of available metrics, including our new engagement data and peer comparisons. Search filters make it easy to find just what you want, and once selected you can edit the dimensions and filters to suit your exact needs. For instance, you could display Daily Active Users for your top-five languages; or if you’re a country manager, only show revenue from a specific country or territory.

You can name any of your KPIs to make them easy to remember, and even include emojis!


Once you’ve configured a list of KPIs that suit you, you can order them to control where they appear. This way, you can make sure that your most important metrics are always first to be seen.

You can include up to 20 KPIs, so your dashboard can be as robust or as streamlined as you want.

In addition to our suggested metrics, you can also pin any other dashboard card to your KPIs. For even finer control, you can even add any reports you’ve saved from the Statistics page. This allows you to create hyper-specific custom KPI cards from any of our core metrics.

There are as many ways to customize your KPIs as there are people using the console. Instead of seeing default KPIs, now everyone can have a customized dashboard showing exactly the metrics that matter to their individual workflows.

Ready to see for yourself? Just log into Google Play Console to try it out.

How useful did you find this blog post?

April 20th 2021, 8:16 pm

High Performance Game Audio with Oboe

Android Developers Blog

Posted by Dan Galpin

We've added the Oboe C++ audio library to the Android Game SDK. Oboe's support of high-performance, low-latency audio across the widest range of Android devices is the right choice for most game developers.

Single API

On Android devices running Android 8.1 (API level 27) and higher, Oboe takes advantage of the improved performance and features of AAudio while maintaining backward compatibility (using OpenSL ES) with Android 4.1 (API level 16) and higher. Oboe also adds key features on top of the platform APIs to improve the audio developer experience, such as resampling, format conversion, and dynamic latency tuning. It performs audio data transformations, such as channel count conversion, when necessary to improve performance on selected devices, and has workarounds for other device-specific behaviors that improve the robustness of your audio code. In short, Oboe is now the recommended way to write audio code in C/C++ on Android.

Integrating Oboe

There are two primary ways to incorporate Oboe library prebuilts into your project. If you're using the Android Gradle plugin version 4.1.0 or higher along with CMake, and are using or can enable shared STL, enabling Oboe is as easy as adding Oboe to your Gradle dependencies, enabling prefabs, and adding a few lines to your CMakeLists file.

You can also integrate Oboe by statically linking using the Android Game SDK. Begin by downloading the library and checking it into your source control system. You need to be using minSdkVersion of 16 or higher with NDK release 18 or higher. Then, to specify the version of the game SDK to link in that's been compiled for the given ABI, API level, NDK, and STL combination, add a compiler include path in this form:

Example: gamesdk/libs/arm64-v8a_API24_NDK18_cpp_static_Release

Then add -loboe_static to your linker command. Since you don't need to bundle the shared library, static linking gives you a smaller code footprint. If the ABI, API level, NDK, and STL combination doesn't have a precompiled version available for your settings, you can alternately link against the shared library. We have more guidance, including how to configure CMake for static libraries, in our developer documentation.

Oboe Basics

To output audio, you begin by creating a stream with the required properties, including a callback that is used when the stream requires new data.

oboe::AudioStreamBuilder builder;

You'll then populate the audio data inside of the callback. If the stream creates successfully, that means you got the requested stream type. If you didn't specify these types, you'll have to query to see what format was returned.

class MyCallback : public oboe::AudioStreamDataCallback {
    onAudioReady(oboe::AudioStream *audioStream, void *audioData, int32_t numFrames) {
        // We requested AudioFormat::Float
        auto *outputData = static_cast<float *>(audioData);
        // TODO: populate audioData here
        return oboe::DataCallbackResult::Continue;

For full details on using Oboe, check out the documentation, code samples and API reference. There's even a codelab which shows you how to build a simple rhythm-based game.

If you have any issues, please file them here. We'd love to hear from you.

March 23rd 2021, 12:37 pm

Android 12 Developer Preview 2

Android Developers Blog

Posted by Dave Burke, VP of Engineering

Last month we shared the first preview of Android 12, an early look at the next version of Android. Today we’re bringing you the next milestone build in this year’s release, with more new features and changes for you to try with your apps. Our program of early previews is driven by our core philosophy of openness and collaboration with you, our community. Your input helps us make Android a better platform for developers and users, so keep the feedback coming!

In Android 12 we’re making the OS smarter, easier to use, and better performing, with privacy and security at the core. We’re also working to give you new tools for building great experiences for users, whether they’re using phones, laptops, tablets, TVs, or cars. Some things to look for in today’s release include new rounded corners APIs, improved picture-in-picture APIs, better companion device management, easier effects like blur and color filter, app overlay controls, and more.

There’s a lot to check out in Developer Preview 2 - read on for a few highlights and visit the Android 12 developer site for details and downloads for Pixel. For those already running Developer Preview 1 or 1.1, we’re also offering an over-the-air (OTA) update to today’s release.

Let us know what you think, and thank you to everyone who has shared such great feedback so far.

Trust and safety

We’re continuing to focus on giving users more transparency and control while keeping their devices and data secure. In today’s release, we’ve added some new features to check out and test with your apps.

App overlay controls - Android’s system alert window gives apps a way to get users’ attention for important actions by showing an overlay on top of the active app. These windows can interrupt the user, though, so we already require apps to request permission before displaying them. Now in Android 12 we’re giving you control over whether these overlays can be shown over your content. After you’ve declared a new permission, your app can call Window#setHideOverlayWindows() to indicate that all TYPE_APPLICATION_OVERLAY windows should be hidden when your app’s window is visible. You might choose to do this when displaying sensitive screens, such as transaction confirmation flows. More here.

Extended security for lockscreen notification actions - Android 12 adds finer-grained privacy and security controls for notifications displayed on the device lockscreen. You can now configure notification actions so that when triggered from the lockscreen, they will always generate an authentication challenge. This extends the notification visibility controls already available through the notification APIs. For example, this enables a messaging app to require authentication before deleting a message or marking it as read. More here.

Access to app digests - For apps that need to validate the integrity of app packages installed on Android devices, we’re introducing a new API that lets you query the platform directly for the checksum of an installed app. You can choose from several digest algorithms such as SHA256, SHA512, Merkle Root, and others. To request a checksum, call PackageManager.requestChecksums() with an app’s package name, the checksum types you need, the installer certs you trust, and a listener to receive the checksums. The platform returns the matching checksums, either precomputed and provided by the installer app (such as Google Play) or computed by the platform. Results are filtered based on package visibility guidelines, so you’ll need to declare the packages of interest in your manifest. This new API provides a simpler, more efficient way to obtain checksums and gives you the stability of a standard, public API that’s optimized for speed and security. For backward compatibility, we’re working on a Jetpack library that provides the same functionality back to API 15 - watch for more details coming soon.

You can read more about these and other privacy and security changes here.

Better user experience tools

We’re working to give you more tools to help you deliver a polished experience and better performance for users. Here are some of the updates in today’s release.

Support for Rounded corners - Many modern devices use screens with rounded corners, giving them a clean modern look, but also introducing some extra considerations for app developers. To deliver a great UX on these devices, developers need to account for the rounded corners and adjust any nearby UI elements to prevent them from being truncated.

To help with this, we’re introducing new APIs to let you query for rounded corners and get their details. A RoundedCorner holds the details for a corner, including its radius, centerpoint, and other data. You can call Display.getRoundedCorner() to get the absolute details for each rounded corner. You can also call WindowInsets.getRoundedCorner() to get the corner details relative to your app’s bounds. With these, you can manage the position of UI elements and content as needed. More here.

Picture in Picture (PIP) improvements - for people using gesture nav, we’ve improved how apps transition to picture-in-picture (PIP) mode on swipe up-to-home. If an app enables auto-PIP, the system now directly transitions the app to PIP mode on up-to-home, instead of waiting for the up-to-home animation to complete. This makes the transition smoother and improves perceived performance. We’ve also improved PIP window resizing for non-video content. Apps can now enable seamless resize to let the system resize the PIP Activity when needed. Android 12 also supports stashing the PiP window by dragging it to the left or right edge of the screen. Also, to make PIP windows easier to manipulate, we’ve updated the tap behaviors. Single-tapping now displays controls, and double-tapping toggles the PIP window size. More here.

Keeping companion device apps awake - For apps that manage companion devices like smartwatches and fitness trackers, it can be a challenge to make sure the app is running and connected whenever an associated companion device is nearby. To make this easier, we’re extending the Companion Device Manager with a new CompanionDeviceService API. Apps that manage companion devices can implement this service to let the system wake the app whenever the associated companion device is nearby. The system keeps the service bound whenever the device is nearby, and notifies the service when the device goes in and out of range or is turned off, to let the app clean up state as needed.

Apps can also use a new companion device profile when connecting to a watch, which simplifies enrollment by bundling related permissions into a single grant. The platform then grants these permissions to the companion app once the device connects and revokes them when the device is no longer connected. More here.

Bandwidth estimation improvements - for developers who need to know the typical bandwidth available to each user so you can tailor their experience, we now provide improved bandwidth estimation. We’ve enhanced the existing bandwidth estimation APIs to let you retrieve an estimate of aggregate throughput per carrier or Wi-Fi SSID, network type, and signal level, for all users on the device. The new estimation is likely to be easier and more accurate than most other estimation methods, give it a try and let us know how it works for you.

Easier blurs, color filters and other effects - In Android 12, we’re making it easier to apply common graphics effects to your Views and rendering hierarchies. You can use RenderEffect to apply blurs, color filters, and more to any RenderNode. You can combine these effects as chain effects (which compose an inner and outer effect in order) or blend them. You can also apply effects directly to Views (leveraging the underlying RenderNode) by calling View.setRenderEffect(RenderEffect).

view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))

Blurring a View with RenderEffect

This allows you to blur the contents of an ImageView without having to get the bitmap data, process the image, create a new Bitmap, and set it back into the ImageView. RenderEffect leverages the existing rendering pipeline to minimize excess calculation.

Give these a try and let use know what you think! More here.

You can also create a frosted glass effect for your window background using a new Window.setBackgroundBlurRadius() API. With this you can set a radius to control the density and scope and the platform applies the blur to the background content within the bounds of your app’s window only. You can also use blurBehindRadius to blur all of the content behind the window to create a depth effect for a floating window.

A dialog window with background blur and blur behind...

App compatibility

We’re working to make updates faster and smoother by prioritizing app compatibility as we roll out new platform versions. In Android 12, we’ve made most app-facing changes opt-in to give you more time, and we’ve updated our tools and processes to help you get ready sooner.

With Developer Preview 2, we’re well into the release and continuing to improve overall stability, so now is the time to try the new features and changes and give us your feedback. We’re especially looking for input on our APIs, as well as details on how the platform changes affect your apps. Please visit the feedback page to share your thoughts with us or report issues.

It’s also a good time to start your compatibility testing and identify any work you’ll need to do. We recommend doing the work early, so you can release a compatible update by Android 12 Beta 1. There’s no need to change your app’s targetSdkVersion at this time, but we do recommend using the behavior change toggles to get a preliminary idea of how your app might be affected by opt-in changes in Android 12.

As we reach Platform Stability in August 2021, all of the app-facing system behaviors, SDK/NDK APIs, and non-SDK lists will be finalized. At that point, you can wind up your final compatibility testing and release a fully compatible version of your app, SDK, or library. More on the timeline for developers is here.

App compatibility toggles in Developer Options.

Get started with Android 12

The Developer Preview has everything you need to try the Android 12 features, test your apps, and give us feedback. You can get started today by flashing a device system image to a Pixel 3 / 3 XL, Pixel 3a / 3a XL, Pixel 4 / 4 XL, Pixel 4a / 4a 5G, or Pixel 5 device or using the Android Emulator. If you’ve already installed a preview build to your Pixel device, you’ll automatically get future updates over-the-air for all later previews and Betas. More details on how to get Android 12 are here.

You can also test your apps on Android TV using today’s release and try the all-new Google TV experience. Learn more here and get started with your ADT-3 developer kit.

For complete information, visit the Android 12 developer site.

March 17th 2021, 1:29 pm

Android Dev Challenge Finale: Weather app

Android Developers Blog

Posted by Jolanda Verhoef, Developer Relations Engineer

Let your creativity shine in the final week of the #AndroidDevChallenge! Last week we asked you to be fast, but for this final week we ask you to bring your 'A' game. Here’s the challenge:

Week #4: Weather app 🌤

Create a single-screen weather forecast app. You have until March 23rd, 23:59 PST to submit your entry.1

Your UI must be fully built in Compose. You can use fake weather data.

We will judge your submission on these four categories:

  1. Visual beauty
  2. Novelty of idea
  3. Code quality
  4. Overall execution (including accessibility)

To help implement a beautiful design, check out the Compose documentation on layouts, theming, and graphics. Think of novel uses of animations and gestures. Improve your code quality with architecture and testing. And for overall execution, make sure to read about accessibility.

Your solution must be implemented in a public GitHub repository. Make a copy of this Github repository template and follow the instructions in the README. The template contains a basic Hello World! in Compose and a continuous integration setup.

The App Submission must, at a minimum, support English language use.

This week’s prize: 5 x Google Pixel 5!

This week you have a chance of winning a Google Pixel 5, the ultimate 5G Google phone! We’ll be giving away one Google Pixel 5 for the winner of each of the four categories, and one for the best of the best submission.2

Help make Jetpack Compose better

Community is at the heart of Jetpack Compose and your feedback helps us build a better product:


  1. Please review the link for the full official rules associated with the entry. 

  2. If you don’t live in a country where the Pixel 5 is available, when you win we’ll instead send you an electronics gift card valued at US$699. 

March 17th 2021, 9:14 am

Boosting developer success on Google Play

Android Developers Blog

Posted by Sameer Samat, VP, Product Management

Helping developers build sustainable businesses is a core part of Google Play’s mission. We work with partners every day to understand the challenges they face and help them bring their innovative ideas to life. Getting a new app off the ground and into orbit is not easy! To aid their quest for growth we provide a broad range of support, from powerful marketing tools and actionable data in the Play Console, education via Play Academy, best practices and thought leadership resources, programs such as the Indie Games Festival, Indie Corner, and accelerator programs around the world. We’re always looking for new ways to give them an added boost.

Starting on July 1, 2021 we are reducing the service fee Google Play receives when a developer sells digital goods or services to 15% for the first $1M (USD) of revenue every developer earns each year. With this change, 99% of developers globally that sell digital goods and services with Play will see a 50% reduction in fees. These are funds that can help developers scale up at a critical phase of their growth by hiring more engineers, adding to their marketing staff, increasing server capacity, and more.

While these investments are most critical when developers are in the earlier stages of growth, scaling an app doesn’t stop once a partner has reached $1M in revenue — we’ve heard from our partners making $2M, $5M and even $10M a year that their services are still on a path to self-sustaining orbit. This is why we are making this reduced fee on the first $1M of total revenue earned each year available to every Play developer, regardless of size. We believe this is a fair approach that aligns with Google’s broader mission to help all developers succeed. We look forward to sharing full details in the coming months.

As a platform we do not succeed unless our partners succeed. Android and Google Play have always listened to our developer partners from around the world and we continue to take their input into account as we build and run the ecosystem. We look forward to seeing more businesses scale to new heights on Android, and to further discussions with our developer community to find new ways to support them technically and economically as they build their businesses.

March 16th 2021, 11:13 am

Creating custom Tiles on Wear OS by Google with the Jetpack Tiles library

Android Developers Blog

Posted by Jolanda Verhoef, Developer Relations Engineer

We introduced Tiles in 2019, and since then, Tiles have become one of the most helpful and useful features on Wear OS by Google smartwatches. They are fast to access, convenient, and designed to provide users with swipeable access to the things they need to know and get done right from their wrist. This also gives users control over what information and actions they want to see.

Today, we're excited to announce that the Jetpack Tiles library is in alpha. This library enables developers to create custom Tiles on Wear OS smartwatches. These custom Tiles will become available to users later this Spring when we roll out the corresponding Wear OS platform update.

Tiles can be designed for many use cases, like tracking the user’s daily activity progress, quick-starting a workout, starting a recently played song, or sending a message to a favorite contact. While apps can be immersive, Tiles are fast-loading and focus on the user's immediate needs. If the user would like more information, Tiles can be tapped to open a related app on the watch or phone for a deeper experience.

Getting started

Tiles are built using Android Studio, as part of your Wear OS application. Start by adding the Wear OS Tiles dependencies:

dependencies {
  implementation "androidx.wear:wear-tiles:1.0.0-alpha01"
  debugImplementation "androidx.wear:wear-tiles-renderer:1.0.0-alpha01"

The first dependency includes the library you need to create a Tile, while the second dependency lets you preview the Tile in an activity.

Next, provide the information to render the Tile using the TileProviderService:

class MyTileService : TileProviderService() {
  override fun onTileRequest(requestParams: RequestReaders.TileRequest) =
         // For more information about timelines, see the docs
             Text.builder().setText("Hello world!")

  override fun onResourcesRequest(requestParams: ResourcesRequest) =

There are two important parts to this code:

Create a simple activity to preview your Tile. Add this activity in src/debug instead of src/main, as this activity is only used for debugging/previewing purposes.

class MainActivity : ComponentActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    val rootLayout = findViewById<FrameLayout>(
      context = this,
      component = ComponentName(this,,
      parentView = rootLayout

Now you’re ready to publish your Tile. For more information on how to do that, and to learn more about Tiles, read our new guide and take a look at our sample Tiles to see them in action.

The Jetpack Tiles library is in alpha, and we want your feedback to help us improve the API. Happy coding!

March 12th 2021, 12:46 pm

Android Dev Challenge: Week 3 - Speed round

Android Developers Blog

Posted by Jolanda Verhoef, Developer Relations Engineer

On your marks...Get set… Wait a second! Save the date for the third week of the #AndroidDevChallenge! On March 13th, compete with other developers in your time zone; the fastest Compose skills wins! We loved all the creative submissions of week #1 and #2, but now we’re looking for speed. Here’s your challenge:

Week #3 - Speed round 🏎

Be the fastest to implement a set of designs provided by us. The designs will be posted here when the challenge starts. Submit your entry* as soon as you finish implementing the designs.

We’ll post different designs at 3 different times on the 13th:

We’ll update this blog post at the beginning of each round with the link to the designs.

Your UI must be fully built in Compose, and strictly match all the guidelines specified in the designs. To help you with the implementation, check out the Compose documentation on theming, layouts, and navigation. For some hands-on learning try out the Compose pathway, with codelabs covering several topics useful for completing this challenge.

Your solution must be implemented in a GitHub repository. Make a copy of this Github repository template and follow the instructions in the README. The template contains a basic Hello World! in Compose and a continuous integration setup.

This week’s prize: a Google Pixel 5!

For this week’s challenge, we’re giving away a Google Pixel 5, the ultimate 5G Google phone. In fact, we’ll be giving away three Google Pixel 5 phones: one to each developer who is fastest to submit a successfully implemented design for each of the three rounds of challenges.*

Help make Jetpack Compose better

Community is at the heart of Jetpack Compose and your feedback helps us build a better product:

*Please review the link for the full official rules associated with the entry. 

*If you don’t live in a country where the Pixel 5 is available, when you win we’ll instead send you an electronics gift card valued at US$699.

March 10th 2021, 2:14 pm

An update on Android's audio latency

Android Developers Blog

Posted by Don Turner - Android Developer Relations Engineer

This article takes a look at what's changed in the Android ecosystem for audio developers recently, the audio latency of popular Android devices, and discusses Android's suitability for real-time audio apps.

What's changed?

Over the past four years we have taken a number of actions that have improved audio latency.

Latency reduction

These actions, coupled with a renewed focus from device manufacturers on audio latency, have led to significant improvements in the device ecosystem. The average latency of the most popular Android phones has dropped to under 40ms, which is well within the range required for real-time applications.

device popularity source:

Greater consistency

Digging into the data we can see that in 2017 there was a significant difference between the highest and lowest values (222ms).

device popularity source:

Compare that to the data for 2021. The range has reduced by a factor of 8 to just 28ms, providing a far more consistent audio experience. This is more impressive when you consider that there are now multiple OEMs on the most-popular list, compared to only a single manufacturer in 2017. In addition, many of the devices on the list are not high-end flagship models.

device popularity source:

Tap-to-tone latency

Up to now I've been referring to round-trip audio latency. Round-trip latency involves three components in the audio chain: audio input, audio processing and audio output.

Many real-time audio apps generate audio from screen tap events rather than relying on input audio. These kinds of apps are sensitive to "tap-to-tone" latency - the time taken from tapping on the screen to hearing a sound. The latency introduced by tapping the touch screen is anywhere from 10-35ms, with 20ms being fairly typical on modern Android devices.

To estimate tap-to-tone latency given round-trip latency, you can subtract the audio input latency (typically 5ms), and add the touch latency (typically 20ms). In other words, add 15ms to the round-trip latency. Given the numbers above, this means the average tap-to-tone latency of the most popular android phones is also well under that required for most real-time audio applications.

Looking to the future

Despite the significant reductions in audio latency across the Android ecosystem our work is nowhere near complete. 20ms round-tip latency is required for Android professional audio apps, and 10ms remains the long term goal. And at this time some less popular devices still have high audio latency. However, if you have been holding back on developing an Android app because of audio latency, it might be time to reconsider.

To get started, check out the Oboe getting started guide or video tutorials.

Data sources and tools



various internal data sources

March 5th 2021, 1:36 pm

Sub-dollar pricing expansion in 20 markets

Android Developers Blog

Posted by Neethi Thomas, Dafna Gal and Ashnil Dixit, Google Play

At Google Play, we’re committed to giving Android developers access to the largest possible market for your apps and games. Google Play already supports free and paid apps in over 165 markets. We had previously lowered minimum prices developers can set for their products for 20 markets like India and Brazil. Today, we’re happy to announce that we have reduced the minimum price limit for products in 20 more markets across Latin America, EMEA, and APAC.

With these new lower limits, you can now set prices in the range of 10-30 cents US equivalent in most of these markets. These ultra-low price points, or “sub-dollar” prices, allow you to reach new potential buyers by adjusting your pricing to better reflect local purchasing power and demand. It also gives you more flexibility to set your global pricing strategy and gives more users the opportunity to enjoy monetized experiences in your apps and games.

The minimum price limit for paid apps, in-app products, and subscriptions has been lowered in these new markets: Bangladesh, Bulgaria, Bolivia, Costa Rica, Czech Republic, Denmark, Croatia, Hungary, Jordan, Kazakhstan, Lebanon, Sri Lanka, Myanmar, Pakistan, Paraguay, Romania, Serbia, Thailand, Tanzania and Vietnam.

Additional markets where sub-dollar pricing is available: Brazil, Chile, Colombia, Egypt, India, Indonesia, Malaysia, Mexico, Nigeria, Peru, Philippines, Poland, Russia, Saudi Arabia, South Africa, Turkey and Ukraine

To adjust your prices in Google Play Console, please see our Help Center article. The full list of price ranges can be found here.

Best practices for sub-dollar pricing

Since the feature was introduced in 2015, Android developers have been using sub-dollar pricing to expand their paying user base in creative ways. Here are a few ways you can use sub-dollar pricing to help grow your own business:

There are many ways to use sub-dollar and localized pricing and the suggestions listed above are just a starting point. We’re excited to see how you’ll use our features to grow your business.

March 4th 2021, 1:18 pm

Android Dev Challenge: Week 2 - Countdown timer

Android Developers Blog

Posted by Florina Muntenescu, Developer Relations Engineer

3...2...1… Time for another challenge! Welcome to the second week of the #AndroidDevChallenge! We loved seeing your creative submissions in week #1 so we can’t wait to see what you’ll build in week #2. Here’s your challenge:

Week #2 - Countdown timer ⏲️

Create a working, single screen countdown timer. You have until March 9th, 23:59 PST to submit your entry.1

Your UI must be fully built in Compose. To help you with the implementation, check out the Compose documentation on state and animation. For some hands-on learning try out the Compose pathway, with codelabs covering several topics useful for completing this challenge.

Your solution must be implemented in a GitHub repository. Make a copy of this Github repository template and follow the instructions in the README. The template contains a basic Hello World! in Compose and a continuous integration setup.

This week’s prize: a Compose poster pack!

Our second week's prize is a work of art, where the Composing is a collaboration with you! The first 500 people to successfully complete this challenge will receive a Jetpack Compose poster and a set of Android pencils, your own stress relieving coloring experience. Plus, you'll get a limited edition Jetpack Compose comic strip poster, charting how Team Jetpack saves the galaxy from bad UI.

Week #2 prize: a Jetpack Compose poster pack

Help make Jetpack Compose better

Community is at the heart of Jetpack Compose and your feedback helps us build a better product:

Google Play Console powers better strategic decisions with new engagement metrics and unique benchma

Android Developers Blog

Posted by Tom Grinsted, Product Manager, Google Play

Today in Google Play Console, we’ve launched a suite of new metrics and unique comparative benchmarks. Using these, you can evaluate your app or games’ engagement and monetization trends against up to 250 different peersets, helping you make better, more informed decisions about your product roadmaps and opportunities.

Whether you want to prioritize new features to drive engagement, experiment with pricing, or drive up retention, we hear from all developers that they need great data and insights to help make the best investments.

While some larger developers can compare data from across their portfolios, this isn’t always possible — for instance, when entering a new territory, if you don’t publish directly comparable apps, or if you only publish one or two games in the first place. In these types of cases, how do you know if your app or game’s performance is good and where you can be better?

With this launch, we’re here to help all developers better contextualize and understand their performance. Here’s what’s new:

New engagement and monetization metrics

In partnership with experts in mobile apps and games growth, we’ve introduced a new set of engagement and monetization metrics based on best practices in evaluating app and game performance. These include:

In total, we’re launching 15 new normalized metrics with benchmarks, and making the absolute numerators and denominators available to query, too. They can all be found in the new “Compare to peers” tab in the Statistics page. For convenience, we’ve included other key normalized metrics, like store listing conversions, here too.

Track your performance with peerset comparison

To power your decision-making and help you discover areas of opportunity, all of these new normalized metrics are launching with peerset comparison performance as standard. You’ll be able to track your metrics over time and compare up to 250 different types of apps and games such as “Match-3 games,” “Audiobooks,” or “Comics.”

Compare your performance to peers on the Statistics page in Google Play Console.

Country filters allow you to customise these insights to suit your business needs. For instance, you’ll be able to see if games similar to yours are driving more revenue from users in Japan, or if your team’s latest feature drop means that you’re outperforming other similar apps in terms of loyalty in India.

During our development process, we tested this suite of new insights with select partners. As well as useful in shaping our approach, their feedback has been positive:

"These new metrics and comparisons help drive our decision-making. Not just around what we should do with our games right now, but also strategic decisions about upcoming games. For us, it's already one of the most valuable features on the Play Console."

Guy Ulmer, Plarium Global Ltd.

To help you make the most of these new metrics and insights, we’ve launched a new course on Play Academy to get you up to speed. You can also check out our masterclass webinars about super-powering your growth.

Strong privacy protections for users and developers

The data powering these new metrics comes from users who have agreed to share their app activity with Google, and is modeled to better represent the whole population. The data simply records if an app is opened in the foreground. Users have control over their data and can opt out of sharing it, or delete individual events, in

Additionally, these new developer metrics are our first to use differential privacy - an advanced technique that provides increased privacy protections across datasets. You can find out more about this approach in our technical blog.

Just like previous benchmark launches, all of the peer comparison metrics come with protections for developer privacy. The data is generated from a large number of apps and games, and the peer groups, driven by Play Store’s advanced tagging system, do not share the performance of individual apps. So although you can find high-quality, reliable, useful peerset comparisons we've worked to obscure the performance of any individual competitor’s app from the peersets you see, and obscure your apps' performance in peersets too.

More to come

This is the first launch of a multi-year project to bring more helpful insights and active recommendations to Google Play Console. The largest mobile app developers often use growth consultants to help inform their long-term strategic product decisions. We’re dedicated to bringing this kind of help and expertise to all Play developers via the console. So look out for more launches over next year!

How useful did you find this blog post?

March 2nd 2021, 12:27 pm

Android Auto Apps Powered by Jetpack

Android Developers Blog

Posted by Eric Bahna, Product Manager

In January, we enabled the Google Play Store to accept open testing submissions of navigation, parking, and charging apps. It’s great to see many of you developing Android Auto apps and sending us feedback through the issue tracker. Thank you for helping us improve the platform so we deliver better in-car experiences together! Drivers have been sending positive feedback, too, as new apps launch to open testing, like Chargemap.

Chargemap in Android Auto

Today, we’ve reached the next milestone: the Android for Cars App Library is available in Jetpack as 1.0.0-beta01! The move to Jetpack makes the library open source, gives you more visibility into our feature development, and provides API consistency with other Jetpack libraries. We’ve updated the developer guide and design guidelines to cover Test your app with Android Auto 6.1, or later, then you can publish your app to open testing in the Google Play Store. includes all functionality of the closed source library (, and then some! For example, we added a new GridTemplate, which is useful when users rely primarily on images to make their selections.

Examples of the new GridTemplate in

On September 1, 2021, the closed source Android for Cars App Library ( will no longer be available and the Google Play Store will not accept submissions that use Our development focus from now, including new features, is on We encourage you to migrate now and we’ve created a migration guide that makes it easy. Migration usually takes less than a day, in our experience with early access partners.

We’re working hard to stabilize and prepare the Google Play Store for production submissions. Production submissions will require and you can get your app ready by using it in open testing today.

March 1st 2021, 1:27 pm

#AndroidDevJourney spotlight - February edition

Android Developers Blog

Luli Perkins, Developer Relations Program Manager

Our second edition of #AndroidDevJourney is here! At the beginning of this year we launched the #AndroidDevJourney to share the stories of members of our community through our social platforms. Each Saturday, from January through June, we’ll feature a new developer on our Twitter account.

For a chance to be featured in our March spotlight series, tweet us your story using #AndroidDevJourney.

Andrew Kelly

Tell me about your journey to becoming an Android Developer and how you got started.

In 2012 I was working as a contractor for the NSW government here in Australia as a Java J2EE web developer. I'd been in that role for 11 years, building web apps for students and teachers. However, in 2012 the government decided that contractors were expensive and let us all go. So while in my hand-over period I'd read about some kids who were writing Android apps and making lots of money doing so. The Android Market was new and so any app uploaded got a large audience, and since I already knew Java it seemed like switching from a web developer to a mobile developer might be a smart career move. So I purchased a new phone, the HTC Legend and spent the next 2 weeks learning everything I could about Android apps. It was the first time I could run software I'd written on a device made by someone else that I could carry around with me. It was a very exciting time where any app idea seemed possible.

When my contract finally ended, I managed to get a new job working for a mobile development agency and started working on Android apps for their clients. In order to learn more about Android app development, I started to attend the local Android meetups and Google Developer Group events, listening to speakers (mostly from Google) and trying to improve my skills as an Android developer.

In 2013 I was offered the opportunity to become the organiser of the Sydney GDG and it was that year that I also attended my first Google I/O (I've been every year since). One of the hard parts about being a GDG organiser is finding speakers, so occasionally if there were no speakers, or if a speaker dropped out at the last minute, I would step in and give a talk instead. 2013 was also the year I decided to move on from the mobile agency I was working at, and I spent the next 5 years working as a freelance contractor, working with clients such as eBay, the Sydney Opera House, and one of the large banks in Australia. Being the organiser of GDG Sydney and a regular speaker at the meetups meant finding work was quite easy.

In 2016 because of all the speaking I was doing I was approached to join the Google Developer Experts program, at this time I was doing regular talks at both the GDG Sydney and Android meetup events every couple of months. When I joined the GDE program, I handed over my GDG responsibilities to some friends, who still run it to this day. As part of the GDE program I've been lucky enough to attend many Google I/O events, and I've also had the opportunity to speak at conferences all over the world, including DroidCon Boston, Mobile Era in Oslo, DevFest Melbourne, DroidCon Singapore, Chicago Roboto and many others. Having the chance to speak to so many people all over the world has been very rewarding, and I've made many friends.

In 2019 I joined the company where I work today - mx51, I'm the lead Android developer designing and building apps that run on payment terminals, which also integrate with Point of Sales systems. I'm still a GDE but with the 2020 madness the ability to speak at in-person events was severely hindered. I hope that in-person events will start again soon and that I can continue my journey as a GDE.

What’s one shortcut, tip, or hack you can’t live without?

Android development is constantly changing and advancing, so there is always something new to learn. My tip would be to always be learning, there are lots of ways to do this, subscribe to the Android Developers YouTube channels and Medium publications. Follow Googlers and Google Developer Experts on Twitter for new tips and posts. Subscribe to the Android Weekly newsletter for an overview of new libraries and blog posts, and attend your local GDG chapter and Meetups. Not only are these great ways to learn new aspects of Android development, but with meetups they're a great place to meet other Android developers, share successes, and ask for advice on problems.

What's the one piece of advice you wish someone would have given you when you started on your journey?

When I started out as an Android developer, I could never have dreamed about being a Google Developer Expert, travelling the world and speaking at large events. It took me a long time to learn that it's ok not to know the answers to people's questions. If at an event someone asks something you don't know, it's ok to say so. You can always say that you'll find out later and get back to them. There is no need to make up a wrong answer on the spot and lead someone off course. People are often scared that a topic they're presenting might not be the best or greatest way to do something, and they fear looking stupid. If a person in the audience suggests a better way that shouldn't be a worry, 1) you learnt something, 2) everyone else learnt something and 3) there may be scenarios where your solution is better and a discussion can be had. So my advice would be, when speaking don't fear questions but embrace the opportunity to help someone immediately, or later, or perhaps discover something new yourself.

Amanda Hinchman-Dominguez

Tell me about your journey to becoming an Android Developer and how you got started.

I dabbled in Android development in college with the student mobile development group, but it wasn't until I was a few years in web development I made the real switch over. Back in my web dev days, I joined the Kotlin community, where I felt immediately welcome. Shortly after, I moved to Chicago a few years back when I heard there was a Kotlin community in the tech scene.

Getting up to speed with Android at a professional level is a whole different game, and I've been lucky to find the overlapping Kotlin/Android community both locally and globally. Android development has accelerated my career technically and professionally, yet the world is so deep and vast within the sandbox of Android development.

Already being an active enthusiast with Kotlin, it only felt natural to switch to Android, and I've never looked back. Since then, I've been working scalable and complex Android applications, and contributing with some technical writing along the way. I'm currently co-writing with my colleague, Pierre Laurence, on “Programming Android with Kotlin: Achieving Structured Concurrency with Coroutines with O'Reilly”, and I'm excited to have it come out sometime this year.

What’s one shortcut, tip, or hack you can’t live without?

For larger projects, it's sometimes hard to locate the file you're looking at in your Project view. You can use the target symbol ⊕ to get a highlight the file you're currently on in Android Studio.

What's the one piece of advice you wish someone would have given you when you started on your journey?

Only install LeakCanary when, and only when, you and your team is ready for that conversation 😁

Anthony Edwards Jr

Tell me about your journey to becoming an Android Developer and how you got started.

My journey as a developer started as a child. As a kid, I was obsessed with robots. I remember my dad bought me a Lego set called Lego Mindstorm, which was basically a robotics set with sensors and motors, plus it was also programmable. After graduating high school, I enrolled in the US Army as an Aviation Maintenance Repairer. After 6 years, I was honorably discharged then enrolled in college at Fordham University. In 2014, I received a Bachelor of Science in Computer Science. About 2 years later, I met my now wife, and together we started building EatOkra as a way for us to find black-owned restaurants in Brooklyn, NY. As we introduced the application to new people, they shared it with their network; before we knew it, many people were asking us to cover more areas in the south.

What’s one shortcut, tip, or hack you can’t live without?

Learn how to ask the right questions.

What's the one piece of advice you wish someone would have given you when you started on your journey?

One piece of advice I wish I took more seriously was to not build an application using beta technology. EatOkra's MVP was created using a beta version of a software framework. It started out good but then as they made updates, at times, I ended up having to wait months for certain issues to get fixed. I also had to completely stop and restart the app with an entirely new code base because the company decided to change how they architected the code. I learned a lot but it was painful to navigate.

Dinorah Tovar

Tell me about your journey to becoming an Android Developer and how you got started.

My journey started a couple of years ago (I was still in college) when I saw the Android Developer Udacity course. There was no nano degree back in the day. So once I saw it, I started building some apps for myself. From there, I applied for my first job as a junior developer in a big consulting firm. Then I started seeing more courses and started following a lot of people at Twitter, like Sam Edwards and Joe Birch (both GDE). The community made me grow and learn. A couple of years later I got my first team and I began delivering speeches at conferences and keeping up my Medium blog on the side. The community offers me feedback and knowledge, and especially a place to learn. My first conference was with here in Mexico. They opened a place for me without any experience. The same happened with Google Developers Groups here in Mexico City.

I became a Lead Engineer during my second job and I began doing worldwide conferences. I asked for feedback from Sam Edwards and Carlos Muñoz (also GDEs in Colombia) and they told me not to worry because I would amazingly and they encouraged me to keep doing it.

I got a really nice offer to start from scratch here as a Mobile Platform engineer in Mexico City with a huge fintech Startup ( This is my current job, which means I am in the architectural office where we choose new ideas and new processes and pretty much service all the areas in the company.

I started creating a group of series to teach people some specific topics that I noticed were not deeply addressed. I also started getting involved in Kotlin Multiplatform and then I was reached out to by two GDE that nominated me to become GDE, Walmyr Carvalho, and Sam Edwards. They offered me feedback about my latest talks, podcast, and series and I was accepted at the end of 2020. Right now, I'm trying to learn more and deliver more talks and blog posts to the community.

What’s one shortcut, tip, or hack you can’t live without?

My special hack as an Android Developer is to use Wireless Debugging in the lastest Android Studio for physical devices. It is my favorite part because I don't need to use any cables and the setup is super easy!

What's the one piece of advice you wish someone would have given you when you started on your journey?

My advice is that learning is a process, things change and all of this must be welcome because we are addressing the evolution of the platform as we code. Also, read everything you can because people in the community are amazing and they love to teach! Open an account on Twitter, because there are a lot of people giving tips in less than 180 characters.

The Android Developer community prides itself in its inclusivity and welcomes developers from all backgrounds and stages of life. If you’re feeling inspired and want to learn more about how to become a part of our community, here are a few resources to help get you started.

Dive into

Follow us on Twitter

Subscribe to our YouTube channel

The Google Developer Groups program gives developers the opportunity to meet local developers with similar interests in technology. A GDG meetup event includes talks on a wide range of technical topics where you can learn new skills through hands-on workshops.

Join a chapter near you here.

Founded in 2014, Google’s Women Techmakers is dedicated to helping all women thrive in tech through community, visibility and resources. With a member base of over 100,000 women developers, we’re working with communities across the globe to build a world where all women can thrive in tech.

Become a member here.

The Google Developers Experts program is a global network of highly experienced technology experts, influencers and thought leaders who actively support developers, companies and tech communities by speaking at events, publishing content, and building innovative apps. Experts actively contribute to and support the developer and startup ecosystems around the world, helping them build and launch highly innovative apps.

Learn more about the program here.

Java is a registered trademark of Oracle and/or its affiliates.

February 26th 2021, 6:19 pm

Low-Power Sleep Tracking on Android

Android Developers Blog

Posted by Nick Grayson, Product Manager

Android works best when it helps developers create apps that people love. That’s why we are dedicated to providing useful APIs like Activity Recognition which, with the user’s permission, can detect user’s activities (such as whether a user is biking or walking) to help apps provide contextually aware experiences.

So much of what we do relies on a good night's rest. Our phones have become great tools for making more informed decisions about our sleep. And by being informed about sleep habits, people can make better decisions throughout the day about sleep, which affects things like concentration and mental health.

In an effort to help our users stay informed about their sleep, we are making our Sleep API publicly available.

What is the Sleep API?

The Sleep API is an Android Activity Recognition API that surfaces information about the user’s sleep. It can be used to power features like the Bedtime mode in Clock.

This sleeping information is reported in two ways:

  1. A ‘sleep confidence’, which is reported at a regular interval (up to 10 minutes)
  2. A daily sleep segment which is reported after a wakeup is detected

The API uses an on-device artificial intelligence model that uses the device’s light and motion sensors as inputs.

As with all of our Activity Recognition APIs, the app must be granted the Physical Activity Recognition runtime permission from the user to detect sleep.

Why is this important for developers?

Developers spend valuable engineering time to combine sensor signals to determine when the user has started or ended activities like sleep. These detection algorithms are inconsistent between apps and when multiple apps independently and continuously check for changes in user activity, battery life suffers.

The Sleep API is a simple API that centralizes sleep detection processing in a battery-efficient manner. For this launch, we are proud to collaborate with Urbandroid, the developer of the popular alarm app, Sleep As Android

Sleep as Android is a swiss army knife for getting a better night’s rest. It tracks sleep duration, regularity, phases, snoring, and more. Sleep Duration is one of the most important parameters to watch for ensuring a good night’s rest. The new Sleep API gives us a fantastic opportunity to track it automatically in the most battery efficient way imaginable.

- Sleep as Android Team

When can I start using this API?

The Sleep API is available for developers to use now as part of the latest version of Google Play Services.

This API is one step of our efforts to help our users get a better night's rest. We look forward to working more on this API and in this area in the future.

If you are interested in exploring or using this API, check out our API Documentation.

February 25th 2021, 1:13 pm

Students Learn Android App Development with Google Developer Student Clubs

Android Developers Blog

Posted by Erica Hanson, Global Program Manager, Google Developer Student Clubs

Google Developer Student Clubs, a program of university based community groups for students interested in Google developer technologies, recently started hosting study groups called Android Study Jams. The goal? Learn Android app development through hands-on codelabs in an online curriculum provided by Google. There are two tracks: one for students who are new to programming, and one for those who already have experience. Interested in participating? Facilitator materials are available for anyone to host Android Study Jams in their community - take a look and get to building.

Google Developer Student Clubs are dedicated to helping students learn programming together, among peers, in a fun and interactive setting. While over 50 thousand students from all over the world have participated in these Android workshops, we wanted to highlight the exciting work from groups in Indonesia, Turkey, and Nigeria. From programming in Kotlin to building a series of apps, these students have put their minds to work.

Learn more about what these three clubs have been up to below.


(Image from UNPNVJ’s Android Study Jams where students are learning Kotlin)

Club members from Universitas Pembangunan Nasional Veteran Jakarta in Indonesia recently came together to host a virtual Android Study Jams session with over 60 students to learn the basics of building Android apps. Their student-run learning session covered several topics, including:

After the students felt comfortable with the basics of Kotlin and Android Studio, they combined their new skills to create their own layouts for a birthday card app.

(Image of Birthday cake app)

We can’t wait to see what the students from UPNVJ build next on Android thanks to their new programming skills.


(Image from Medipol University where Nelson Glauber is teaching students the basics of Android App Development)

Medipol University in Turkey also hosted their own Android Study Jams by organizing a livestream with over 500 participants. Nelson Glauber, who was the first Google Developer Expert for Android in Latin America, led the event and helped students learn more about topics like:

After taking students’ questions, Nelson worked with them to build an interactive dice roller app that updates the screen after the results of a roll.

(Image of Dice Roller app)


The Google Developer Student Club at Kaduna State University in Nigeria tackled different codelabs and learning pathways in their Android Study Jams. In particular, the group worked on the following topics:

With these new skills, the group is now able to start working on building more advanced apps that allow users to navigate between multiple screens.

(Gif of Cupcake app)

How to join a Google Developer Student Club and Android Study Jams

If you’re a university student looking to learn more about programming alongside a community of your peers, sign up for a Google Developer Student Club near you here. As a part of the community, you’ll have access to special learning opportunities, including Android Study Jams, on many of Google’s developer products.

If you want to lead your own Android Study Jams or explore other free resources for learning Android development, click here.

February 25th 2021, 10:13 am

Announcing Jetpack Compose Beta!

Android Developers Blog

Posted by Anna-Chiara Bellini, Product Manager, Nick Butcher, Developer Relations

Today, we’re launching the beta release of Jetpack Compose, our new UI toolkit designed to make it faster and easier to build native apps across all Android platforms. Compose offers modern, declarative Kotlin APIs, helping you build beautiful, responsive apps with way less code. Built to integrate with existing Android apps and Jetpack libraries, you can adopt Compose at your own pace by combining Android Views and Compose.

With this beta release, Compose is API complete and has all the features you need to build production-ready apps. Beta also means API stable, so we won’t change or remove APIs. Now is a great time to start learning Compose and begin planning for how you will use it in an upcoming project or feature once it reaches 1.0 later this year.

What's In Beta

Our team has been developing Compose in the open with feedback and participation from the community. Since open sourcing development in 2019, we’ve had 30 public releases, addressed over 700 external bugs, and accepted over 200 external contributions. We love seeing what you’ve been building with Compose and have used your feedback and feature requests to refine our APIs and prioritize our work. Since the alpha release, we’ve added and improved a number of new features:

For the beta release, we’ve been focused on ensuring API completeness; that all foundational APIs are in place for us to continue to build upon for 1.0 and beyond. We’ll work on stabilizing these APIs up to our 1.0 release with particular focus on app performance and accessibility.

Compose Beta is supported by the latest Canary of Android Studio Arctic Fox, which features many new tools:

Live Literals on Android Emulator

Layout Inspector for Jetpack Compose

Works with your existing app

Jetpack Compose is designed to work seamlessly with Android Views, letting you adopt at your own pace. You can embed Compose UIs within Android Views and use Views within Compose. We lay out a number of adoption strategies in our interoperability documentation.

In addition to View interop, we integrate with common libraries to help you to add Compose to your existing applications—no need to rewrite or re-architect your app. We offer integrations with:

The MDC-Android Compose Theme Adapter and Accompanist libraries provide integrations with Material and AppCompat XML themes so you don’t need to duplicate theme definitions. Accompanist also offers wrappers for common image loading libraries.

Thinking in Compose

Jetpack Compose is a declarative UI toolkit, a paradigm shift from the current View system, where you describe what your UI should look like for a given application state, not how to produce it. Compose takes care of updating your UI when your app state changes, so you don’t have to manipulate your UI into the desired state which can be tedious and error prone.

Built entirely in Kotlin, Compose takes advantage of its great language features to offer powerful, succinct, intuitive APIs. Coroutines for example enable us to write much simpler async APIs such as describing gestures, animation or scrolling. This makes it easier to write code that combines async events, like a gesture which hands off to an animation, all with cancellation and clean-up provided by structured concurrency.

Learning Compose

To help you and your team learn all about Jetpack Compose, we’ve updated our learning pathway; a curated list of videos, hands-on codelabs and key docs to get you started. Today we’re releasing new & updated documentation guides, a number of screencasts and a new Animation Codelab to help dive deeper into how to build with Compose. From guidance on architecture, accessibility and testing, to deep dives into animation, lists or thinking in Compose, we have guides to help you get up to speed.

We also offer 8 official sample applications if you want to jump straight in and see Compose in action. We have simple to complex samples, each showcasing different APIs and use cases. Check the readme for more details.

#AndroidDevChallenge: learn Compose and win prizes

If you’re ready to get started with Compose–and also want to win some prizes along the way, check out the #AndroidDevChallenge. For the next four weeks, we’ll have weekly challenges designed to give your very own insights into Jetpack Compose, so you can fly through your projects. Compete to win new prizes for each challenge, with over one thousand prizes to win including a Google Pixel 5. You can read more about the first weekly challenge - starting today - right here.

With Jetpack Compose reaching Beta—with stable APIs and feature complete for 1.0—it's a great time to start learning Jetpack Compose and planning how you might use it in an upcoming project. We’d love to hear your feedback on adopting Compose in your app or join the discussion in the Kotlin Slack #compose channel.

February 24th 2021, 12:38 pm

Android Dev Challenge: lift off with Jetpack Compose

Android Developers Blog

Posted by The Jetpack Compose Team

Jetpack Compose is Android’s modern toolkit for building native UI. It enables you to quickly bring your app to life with less code, powerful tools, and intuitive Kotlin APIs. With the Beta of Jetpack Compose released today, this is the perfect time to learn Compose and get ready to adopt it. To help you get started with Jetpack Compose we are launching a new #AndroidDevChallenge!

For the next four weeks, the #AndroidDevChallenge will be launching a series of weekly challenges to help you build better apps faster with Jetpack Compose. Oriented around “lift off insights," each challenge focuses on a new area of Compose, from animations to Material Theming, composables to lists and more! Compete to win new prizes for each challenge, with over one thousand prizes to win including a Pixel 5. 1 The first challenge starts today!

The challenges

Every week brings a new challenge with its own rules and tasks. Every Wednesday starting today we’ll publish a blog post containing the full description of what you need to do and how long you have to complete the task. Each challenge will help you get familiar with the compose mental model and different Compose APIs - from basic Composables like Text and List, to state, animations and more.

Your solution to each challenge must be implemented in a GitHub repository. Make a copy of this Github repository template and follow the instructions in the README. The template contains a basic Hello World! in Compose and a continuous integration setup.

Week #1 - Puppy adoption app

Let’s start the #AndroidDevChallenge with a bang bark: build a puppy adoption app! The app should contain an overview screen that displays a list of puppies, and a detail screen showing each puppy's details. You have until March 2nd, 23:59 PST to submit your entry. 2

Your UI must be fully built in Compose. Your submission will only be judged based on your app’s UI layer. To help you with the implementation, check out the Compose documentation on layouts, lists, text and navigation. For some paws-on learning try out the Compose pathway, with codelabs covering several topics useful in completing this challenge.

Are you a 🐱rather than a 🐶 person? Submissions for any type of pet adoption app are welcomed.

We look forward to seeing what you build!

This week’s prize

Our first challenge kicks off with a prize that makes for the perfect sidekick as you’re flying through Compose: a limited edition trophy of our Jetpack Compose superhero, made of LEGO bricks. The first 500 people to successfully complete this challenge and submit their entry can add this trophy to their collection of Android figurines, showing off how you’re a winner for the first week’s #AndroidDevChallenge.

Week #1 prize: Jetpack Compose superhero

Help make Jetpack Compose better

Community is at the heart of Jetpack Compose and your feedback helps us build a better product:

1 There will be new prizes for each week’s challenge; for weeks when a Google Pixel 5 is a prize, we will offer a similarly valued electronics gift card for winners that reside in a country where a Google Pixel 5 is unavailable. See the official rules for more information.
2 Please review the link for the full official rules associated with the entry.

February 24th 2021, 12:38 pm

Here's how to watch #TheAndroidShow in just under 24 hours

Android Developers Blog

Posted by The Jetpack Compose Team

In less than 24 hours, we're giving you a backstage pass to Jetpack Compose, Android's modern toolkit for building native UIs, on #TheAndroidShow. Hosted by Kari Byron, you'll hear the latest on Jetpack Compose from the people who built it, plus a fireside interview with Android's Dave Burke.

The show kicks off live at 9AM PT!

Broadcasting live on February 24th at 9AM PT, you’ll be able to watch the show at, where you’ll also be able to find more information and links to all of the things we covered in the show. Or if you prefer, you can watch directly on YouTube or Twitter.

There’s still time to ask your Jetpack Compose questions, use #TheAndroidShow

Got a burning Jetpack Compose question? Want to learn about annotating a function type with @ Composable? Or how to add a static parameter to Composable functions at the compiler level? Tweet us your Jetpack Compose questions now, using #TheAndroidShow. We’ve assembled a team of experts, ready to answer your questions live on #TheAndroidShow; tune in on February 24 to see if we cover your question!

February 23rd 2021, 12:20 pm

MAD Skills Motion Layout: wrap-up

Android Developers Blog

Posted by Chet Haase, Developer Relations Engineer

We recently finished another series of MAD Skills videos - this time on Motion Layout. We covered ways in which you can use the API and the design tool to create rich, custom, and complex animations for your users.

Check out the episodes below to increase your knowledge and skills in different areas of the Motion Layout API and design tool. And watch the live Q&A episode, featuring engineers on the Motion Layout and Developer Relations teams.

Episode 1 - ConstraintSet Animations

This video explores how ConstraintSets are used to define different states of your UI that you animate between. Along the way, Sean shows how to use Motion Editor in Android Studio to create and edit these transitions.

Episode 2 - Keyframes

This episode shows how to use Keyframes in a MotionLayout animation to customize the animation by altering the values of various properties over time. For example, you can use keyframes to change the path an object takes between start and end, instead of following just the default linear path it would follow otherwise.

Episode 3 - Multiple ConstraintSets

In this third episode, Sean shows how you can add ConstraintSets, beyond the default two (start + end) to create more complex animations, or transitions that flow through multiple states between the start and end.

Episode 4 - Building a Collapsible Header

In the fourth episode, explains how to build a collapsible toolbar using Motion Layout, which is a common place where this API shines. Along the way, you'll learn how to animate custom attributes using MotionLayout.

Episode 5 - Live Q&A

The final episode of the series was a live Q&A, streamed and recorded on February 18th. It’s too late to see it or ask your questions live, but check out the recording to watch the conversation between me (asking the Qs) and Sean, John, and Nicolas (supplying the As).

More Motion Layout Resources

There are plenty of other resources to learn more about how to use Motion Layout, besides this MAD Skills series, including:

But Wait, There’s More!

The Motion Layout series may have ended, but there’s still plenty still to come in the MAD Skills series. Be sure to check the MAD Skills playlist on YouTube, the articles on Medium, or this handy landing page that points to all of it.

February 22nd 2021, 1:12 pm

First preview of Android 12

Android Developers Blog

Posted by Dave Burke, VP of Engineering

Every day, Android apps help billions of people work, play, communicate, and create on a wide range of devices from phones and laptops to tablets, TVs, and cars. As more people come to rely on the experiences you build, their expectations can rise just as fast. It’s one of the reasons we share Android releases with you early: your feedback helps us build a better platform for your apps and all of the people who use them. Today, we’re releasing the first Developer Preview of Android 12, the next version of Android, for your testing and feedback.

With each version, we’re working to make the OS smarter, easier to use, and better performing, with privacy and security at the core. In Android 12 we’re also working to give you new tools for building great experiences for users. Starting with things like compatible media transcoding, which helps your app to work with the latest video formats if you don’t already support them, and easier copy/paste of rich content into your apps, like images and videos. We’re also adding privacy protections and optimizing performance to keep your apps responsive.

Today’s first preview is just the start for Android 12, and we’ll have lots more to share as we move through the release. Read on for a taste of what’s new in Android 12, and visit the Android 12 developer site for details on downloads for Pixel and release timeline. As always, it’s crucial to get your feedback early, to help us incorporate it into the final product, so let us know what you think!

Alongside the work we’re doing in Android 12, later this month we’ll have more to share on another important tool that helps you create great user experiences more easily: Jetpack Compose, our modern toolkit for building native UI. Join us on #TheAndroidShow for a behind-the-scenes look at Jetpack Compose, livestreamed on February 24 at 9AM PT, and tweet your Jetpack Compose questions using #TheAndroidShow to have them answered live on the show.

Trust and safety

Privacy is at the heart of everything we do, and in Android 12 we’re continuing to focus on giving users more transparency and control while keeping their devices and data secure. In today’s release we’ve added new controls over identifiers that can be used for tracking, safer defaults for app components, and more. These changes may affect your apps, so we recommend testing as soon as possible. Watch for more privacy and security features coming in later preview releases.

Modern SameSite cookie behaviors in WebView - In line with changes to Chrome and other browsers, WebView includes new SameSite cookie behaviors to provide additional security and privacy and give users more transparency and control over how cookies can be used across sites. More here.

Restricted Netlink MAC - We’re continuing to help developers migrate to privacy-protecting resettable identifiers. In a multi-release effort to ease migration of device-scoped Netlink MAC, in Android 11 we restricted access to it based on API level 30, and in Android 12 we’re applying the restriction for all apps - regardless of targetSDK level. More here.

Safer exporting of components - To prevent apps from inadvertently exporting activities, services, and receivers, we’re changing the default handling of the android:exported attribute to be more explicit. With this change, components that declare one or more intent filters must now explicitly declare an android:exported attribute. You should inspect your components in the manifest in order to avoid installation errors related to this change. More here.

Safer handling of Intents - To make handling PendingIntents more secure, Android 12 requires apps to explicitly declare a mutability flag, either FLAG_MUTABLE or the new FLAG_IMMUTABLE, for each PendingIntent. More here.

You can read more about these and other privacy and security changes here.

Better user experience tools

In Android 12 we’re investing in key areas to help deliver a polished experience and better performance for users. Here are some of the updates so far.

Compatible media transcoding - With the prevalence of HEVC hardware encoders on mobile devices, camera apps are increasingly capturing in HEVC format, which offers significant improvements in quality and compression over older codecs. Most apps should support HEVC, but for apps that can’t, we’re introducing compatible media transcoding.

With this feature, an app that doesn’t support HEVC can have the platform automatically transcode the file into AVC, a format that is widely compatible. The transcoding process takes time, depending on the video and hardware properties of the device. As an example, a one minute 1080p video at 30fps takes around 9 seconds to transcode on a Pixel 4. You can opt-in to use the transcoding service by just declaring the media formats that your apps don't support. For developers, we strongly recommend that your apps support HEVC, and if that’s not possible, enable compatible media transcoding. The feature will be active on all devices using HEVC format for video capture. We'd love to hear your feedback on this feature. More here.

AVIF image support - To give you higher image quality with more efficient compression, Android 12 introduces platform support for AV1 Image File Format (AVIF). AVIF is a container format for images and sequences of images encoded using AV1. Like other modern image formats, AVIF takes advantage of the intra-frame encoded content from video compression. This dramatically improves image quality for the same file size when compared to older image formats, such as JPEG.

AVIF (18.2kB)

JPEG (20.7kB)

Credit: Image comparison from AVIF has landed by Jake Archibald

Foreground service optimizations - Foreground services are an important way for apps to manage certain types of user-facing tasks, but when overused they can affect performance and even lead to app kills. To ensure a better experience for users, we will be blocking foreground service starts from the background for apps that are targeting the new platform. To make it easier to transition away from this pattern, we’re introducing a new expedited job in JobScheduler that gets elevated process priority, network access, and runs immediately regardless of power constraints like Battery Saver or Doze. For back-compatibility, we’ve also built expedited jobs into the latest release of Jetpack WorkManager library. Also, to reduce distraction for users, we’re now delaying the display of some foreground service notifications by up to 10 seconds. This gives short-lived tasks a chance to complete before their notifications are shown. More here.

Rich content insertion - Users love images, videos and other expressive content, but inserting and moving this content in apps is not always easy. To make it simple for your apps to receive rich content, we’re introducing a new unified API that lets you accept content from any source: clipboard, keyboard, or drag and drop. You can attach a new interface, OnReceiveContentListener, to UI components and get a callback when content is inserted through any mechanism. This callback becomes the single place for your code to handle insertion of all content, from plain and styled text to markup, images, videos, audio files, and more. For back-compatibility, we’ve added the unified API to AndroidX. More here.

Haptic-coupled audio effect - In Android 12 apps can provide audio-coupled haptic feedback through the phone's vibrator. The vibration strength and frequency are derived from an audio session, allowing you to create more immersive game and audio experiences. For example, a video calling app could use custom ringtones to identify the caller through haptic feedback, or you could simulate rough terrain in a racing game. More here.

Multi-channel audio - Android 12 includes several enhancements for audio with spatial information. It adds support for MPEG-H playback in passthrough and offload mode, and the audio mixers, resamplers and effects have been optimized for up to 24 channels (the previous maximum was 8).

Immersive mode API improvements for gesture nav - We’ve simplified immersive mode so that gesture navigation is easier and more consistent, for example when watching a video, reading a book, or playing a game. We’re still protecting apps from accidental gestures when in full-screen experiences related to gaming, but in all other full-screen or immersive experiences (e.g. video viewers, reading, photo gallery), for apps targeting the new platform, we’re changing the default to allow users to navigate their phone with one swipe. More here.

Notification UI updates - We’re refreshing notification designs to make them more modern, easier to use, and more functional. In this first preview you’ll notice changes from the drawer and controls to the templates themselves. We’re also optimizing transitions and animations across the system to make them more smooth. As part of the updates, for apps targeting Android 12 we’re decorating notifications with custom content with icon and expand affordances to match all other notifications. More here.

Faster, more responsive notifications - When users tap a notification, they expect to jump immediately into the app - the faster the better. To meet that expectation, developers should make sure that notification taps trigger Activity starts directly, rather than using “trampolines” - an intermediary broadcast receiver or service - to start the Activity. Notification trampolines can cause significant delays and affect the user experience. To keep notifications responsive, Android 12 will block notification trampolines by preventing them from launching their target Activities, and we’re asking developers to migrate away from this pattern. The change applies only to apps targeting the new platform, but for all apps we’ll display a toast to make trampolines visible to you and to users. More here.

Improved Binder IPC calls - As part of our work on performance, we’ve put a focus on reducing system variability. We’ve taken a look at latency and workload distribution, and made optimizations that reduce the median experience from the tail end, or 99% percentile use case. In doing so, we’ve targeted improvements to system binder calls adding lightweight caching strategies and focusing on removing lock contention to improve latency distribution. This has yielded roughly a 2x performance increase on Binder calls overall, with significant improvements in specific calls, for example a 47x improvement in refContentProvider(), 15x in releaseWakeLock(), and 7.9x in JobScheduler.schedule().

App compatibility

We’re working to make updates faster and smoother by prioritizing app compatibility as we roll out new platform versions. In Android 12 we’ve made most app-facing changes opt-in to give you more time, and we’ve updated our tools and processes to help you get ready sooner. We’ve also added new functionality to Google Play system updates to give your apps a better environment on Android 12 devices.

More of Android updated through Google Play - We’re continuing to expand our investment in Google Play system updates (Project Mainline) to give apps a more consistent, secure environment across devices. In Android 12 we’ve added the Android Runtime (ART) module that lets us push updates to the core runtime and libraries on devices running Android 12. We can improve runtime performance and correctness, manage memory more efficiently, and make Kotlin operations faster - all without requiring a full system update. We’ve also expanded the functionality of existing modules - for example, we’re delivering our compatible media transcoding feature inside an updatable module.

Optimizing for tablets, foldables, and TVs - With more people than ever using apps on large-screen devices like foldables, tablets, and TVs, now is a great time to make sure your app or game is ready. Get started by optimizing for tablets and building apps for foldables. And, for the biggest screen in the home, the first Android 12 preview for Android TV is also available. In addition to bringing the latest Android features to the TV with this preview, you will also be able to test your apps on the all-new Google TV experience. Learn more on the Android TV Developers site and get started with your ADT-3 developer kit.

Updated lists of non-SDK interfaces - We’ve restricted additional non-SDK interfaces, and as always your feedback and requests for public API equivalents are welcome.

Easier testing and debugging of changes - To make it easier for you to test the opt-in changes that can affect your app, we’ve made many of them toggleable. WIth the toggles you can force-enable or disable the changes individually from Developer options or adb. Check out the details here.

App compatibility toggles in Developer Options.

Platform stability milestone - Like last year, we’re letting you know our Platform Stability milestone well in advance, to give you more time to plan for app compatibility work. At this milestone we’ll deliver not only final SDK/NDK APIs, but also final internal APIs and app-facing system behaviors. We’re expecting to reach Platform Stability by August 2021, and you’ll have several weeks before the official release to do your final testing. The release timeline details are here.

Get started with Android 12

The Developer Preview has everything you need to try the Android 12 features, test your apps, and give us feedback. You can get started today by flashing a device system image to a Pixel 3 / 3 XL, Pixel 3a / 3a XL, Pixel 4 / 4 XL, Pixel 4a / 4a 5G, or Pixel 5 device. If you don’t have a Pixel device, you can use the 64-bit system images with the Android Emulator in Android Studio.

When you’re set up, here are some of the things you should do:

We’ll update the preview system images and SDK regularly throughout the Android 12 release cycle. This initial preview release is for developers only and not intended for daily or consumer use, so we're making it available by manual download only. You can flash a factory image to your Pixel device, or you can sideload an OTA image to a Pixel device running Android 11, in which case you won’t need to unlock your bootloader or wipe data. Either way, once you’ve manually installed a preview build, you’ll automatically get future updates over-the-air for all later previews and Betas. More here.

As we get closer to a final product, we'll be inviting consumers to try it out as well, and we'll open up enrollments through Android Beta at that time. Stay tuned for details, but for now please note that Android Beta is not currently available for Android 12.

For complete information, visit the Android 12 developer site.

February 18th 2021, 2:24 pm

Quality to match with your user’s expectations

Android Developers Blog

Posted by Hoi Lam, Android App Quality

Since the launch of Android more than 10 years ago, the platform and the user’s expectations have grown. There are improvements from user experience through material design to the importance and advancement in privacy. We know you want your apps to offer a great user experience. At the same time, we also know that it’s not always straightforward to know which area to tackle first. That’s why we are launching a new App Quality section in our developer site to help you keep up-to-date with key aspects of app quality and provide related resources.

In the first release, we have updated the Core App Quality checklist to take into account recent Android releases as well as the current trends of the app ecosystem. Here are some highlights in this update:

Going forward, we aim to update this list on a quarterly basis to make sure this is up-to-date. In addition, we will be updating the quality checklists for other form factors.

We are working on additional tools and best practices to make it easier for you to build quality applications on Android. We can’t wait to introduce these new improvements to you. Stay tuned!

February 11th 2021, 12:38 pm

Announcing Kotlin Symbol Processing (KSP) Alpha

Android Developers Blog

Posted by Ting-Yuan Huang‎, Software Engineer and David Winer, Product Manager

Today we are excited to announce the alpha of Kotlin Symbol Processing (KSP), an all-new tool for building lightweight compiler plugins in Kotlin. KSP offers similar functionality to KAPT, however it’s up to 2x faster, offers direct access to Kotlin compiler features, and is being developed with multiplatform compatibility in mind.

KSP is compatible with the Kotlin 1.4.30 release and onwards. You can check out the open source code and documentation in the KSP GitHub repository.

Why KSP?

The #1 request we hear from Kotlin developers is to make build speeds faster. Many developers iterate on and deploy apps dozens of times a day, so having to sit around waiting for a slow build can be very time consuming. One of the biggest challenges with compiling Kotlin code is that Kotlin doesn’t have a native annotation processing system. Annotation processors like Room are ubiquitous on Android and rely on Java annotation processing compatibility through the Kotlin Annotation Processing Tool (KAPT). KAPT can be slow to run, though, since it requires generating intermediate Java stubs that can then be ingested by the Java annotation processing system.

When designing KSP, we thought about what annotation processing would look like for Kotlin if we built it from the ground up. KSP offers a powerful and yet simple API for parsing Kotlin code directly, dramatically reducing the build speed tax imposed by KAPT’s stub generation. Indeed, initial benchmarks with the Room library show that KSP is approximately 2x faster than KAPT.

Getting started

To see what KSP looks like in action, download the KSP playground project from GitHub. In it you’ll find:

All of the logic for implementing the builder is in test-processor — for the consumer (workload), the only difference between using KAPT and KSP is a two-line build file change:

This is the goal of KSP: most Android app developers don’t need to worry about its internals; other than this one line change, a library that supports KSP looks just like a normal annotation processor, only it’s up to 2x faster. That said, using KAPT and KSP in the same module will likely slow down your build initially, so during this alpha period, it is best to use KSP and KAPT in separate modules.

As more annotation processors adopt KSP, we expect most of your modules to be able to use KSP as a near drop-in replacement for KAPT. For now, you can check out which annotation processors offer KSP support in this table. If a library that supports or is implementing support for KSP is missing from the table, please submit a pull request with your suggestion!

If you are an author of a library that currently uses annotation processing, you can find more information on how to make your library compatible with KSP in the quickstart and README guides.

For library authors, now that KSP is in alpha, it’s a great time to start looking closely at it and giving us feedback on the API in the KSP issue tracker. In addition, we regularly post release updates in the #ksp channel on Kotlin Slack. Since the developer preview last June, we’ve closed over 100 bugs and issues, dozens of which have been reported by the amazing community of Kotlin library developers.

Java is a registered trademark of Oracle and/or its affiliates.

February 10th 2021, 12:13 pm

New curriculum for educators to teach Android app development

Android Developers Blog

Posted by Kat Kuan, Developer Advocate, Android

We strive to make Android development content accessible to all, so that anyone can become an Android developer. Over the years, millions of students at all different levels have consumed our learning content and worked through courses and codelabs to advance their skills. We continue to update and release new content as the ever-changing industry continues to evolve.

As demand for skilled Android developers increases in the job marketplace, there is an even greater need for educators to train the next generation of Android developers. That is why we created these resources to help support and empower educators.

New Android Development with Kotlin instructor-led curriculum

Today we’re announcing the launch of our new instructor-led curriculum for Android Development with Kotlin. This is for classroom learning (virtual or in-person) with an instructor delivering lectures on important Android concepts, and students receiving hands-on practice through codelabs. The official course materials are now available and can be freely modified by instructors to adapt to their students’ needs.

This is a major update to the curriculum we released in 2018. The updates account for the most recent changes in the Android platform, from the release of the Android Jetpack libraries to Android development becoming Kotlin-first. The Kotlin programming language helps developers become more productive with more concise syntax and improved code safety. Over 60% of professional Android developers already use Kotlin, and it’s Google’s recommended programming language for new developers building Android apps. While instructors do not need Android or Kotlin experience to teach the curriculum, prior programming experience is recommended.

We’ve partnered with universities and skilling partners in India such as Shivaji University, I. K. Gujral Punjab Technical University, Chandigarh University, Ganpat University, Telangana Academy for Skill and Knowledge (TASK), and Information and Communication Technology Academy of Kerala, who will be some of the first to offer this curriculum to their students in the Spring, with more universities to follow in the Fall and coming semesters. With the curriculum now available publicly, educators are welcome to start teaching Android development.

“As it’s mostly a hands-on course, students learn implementations which helps them in their placements in Mobile app companies.” -Dr. Kavita S. Oza, Shivaji University

Android Study Jams content now available for all developers

Outside a formal classroom, learning in a peer group has also been shown as an effective way to learn Android. That is why we’re also making the Android Study Jams program available to all developers today. Android Study Jams enables a group of people to come together and learn Android development through hands-on codelabs in an online curriculum. An instructor is not needed to deliver lectures, but it is recommended to have a facilitator to organize the group meetings. No programming experience is needed to get started. Over 38,000 students in Google Developer Student Clubs around the globe have already participated in this program.

“Introducing people to Kotlin and being by their side at this first step which could touch their lives created great happiness and excitement for us.” - Ceren Tunay and Serkan Alc, Developer Student Club Turkey

With many paths to learning, it is always interesting to see the different journeys of students who become Android developers, and exciting to see the resulting personal success, innovative apps, and entrepreneurial pursuits they have. The following video highlights two developers and how learning Android development has shaped their careers.

For more details on these new offerings, check out the Android Development Resources for Educators.

For independent learners, we also offer self-paced learning content, Udacity courses and Nanodegrees, YouTube videos, and more resources on Keep us posted on how your learning journey goes!

February 9th 2021, 12:18 pm

#AndroidDevJourney spotlight - January edition

Android Developers Blog

Posted by Luli Perkins, Developer Relations Program Manager

We kicked off the #AndroidDevJourney to give members of our community the opportunity to share their stories through our social platforms. Each Saturday from January through June we’ll feature a new developer on our Twitter account. We have received an overwhelming number of inspirational stories and hope you enjoy reading through the ones we’ve selected below.

For a chance to be featured in our February spotlight series, tweet us your story using #AndroidDevJourney.

Niharika Arora

Tell me about your journey in becoming an Android Developer and how you got started.

My journey started in the field of Android when I was in my 4th year of undergrad studies. I got an internship in a startup named GreenAppleSolutions. There I got a chance to work on an Android project from scratch and luckily my first project went live on the Play Store. During this whole internship, I found Android so interesting because everything you code, you can see the results live in front of you on your device. I started loving Android and decided to take Android as my career path.

What’s one shortcut, tip, or hack you can’t live without?

I am a big fan of Android Lint, which has saved me many times from manually finding deprecated calls/APIs. It has also helped me in following the best practices and making my code more optimized, secure, and highly performant.

What's the one piece of advice you wish someone would have given you when you started on your journey?

Actually, there are two,

Walmyr Carvalho

Tell me about your journey in becoming an Android Developer and how you got started.

Funny thing! I started working with mobile on iOS, in 2010, but then in 2011 my college final project was an app for civil construction and nobody on the team had a Mac, so we did it for Android (We got a 10, btw!)! At that time I was teaching technology to some government people and wasn’t into coding that much, but then after project in 2011 I got my first job as Junior Android Developer and it got me so hooked on the platform that I couldn’t leave!

I was able to work with Java on Eclipse + ADT, Holo, ActionBarSherlock, the beginnings of Material Design and was attending Google I/O ’13 when Google announced Android Studio, which was a very humbling but insightful experience to me, not only because of the learning but also the people I met that helped me a lot as well!

Since then, I’ve been working with mobile and, mostly, with Android for more than 10 years now, helping a lot of Brazilian tech companies and unicorns with their Android projects and since 2016 I’m one of the Google Developer Experts for Android around here.

Also, I love development and design communities, so I try to be involved with that as much as I can. I’m a former organizer of GDG São Paulo and the creator and organizer of Kotlin Meetup São Paulo and Android Dev BR - the biggest brazilian/lusophone Android community in the world, with more than 7.500 members!

Lastly, I’m also involved with the national startup community, as a mentor for ACE Startups and Google For Startups Accelerator programs in Brazil.

What’s one Android development shortcut, tip, or hack you can’t live without?

There’s a simple but powerful shortcut on Android Studio that I use a lot, which is the multi-cursor occurrence selection, which can be achieved using Ctrl + G (macOS) / Alt + J (Windows + Linux) for incremental occurrences selection and/or Ctrl + Cmd + G / Shift + Ctrl + Alt + J to select all occurrences once. Seems silly, but this shortcut helps me so much to get going on my code, especially when it comes to refactoring. I use it everyday!

What's the one piece of advice you wish someone would have given you when you started on your journey?

I think I would resume my advice in two words: learn and share.

Learn as much as you can, not only with the amazing content available on official documentation, and from the community, but also learn from your own mistakes through consistent practice. There’s a lot of content available for free on the internet, and also both Google and GDEs (Google Developer Experts) like me can get you going, so keep practicing and get your knowledge online!

And once you learn, share with other people! If I’m where I am today is because I was able to share what I couldn’t find when I was learning, so please, share your knowledge! The Android community is amazing and super helpful, you can reach literally the creators of the APIs and libraries you use on Twitter, Reddit and many other places. Write an article, record a podcast or a video, there are many formats that you could use.

The internet is such a powerful tool for learning and sharing and I really recommend you to do that there, and I’m definitely here to help if needed! :)

Nate Washington

Tell me about your journey in becoming an Android Developer and how you got started.

I became an Android developer in 2015, while working on my first business idea. I couldn’t afford to go back to school, so I decided to try my hand at starting a business instead. I launched a web application, but my customers insisted on having a native app for their needs as well. I originally looked for someone with more experience, but ultimately decided to just teach myself how to build an Android app. Fast forward to 2017, and my cofounder Christian and I launched the Android app for our company, Qoins, on the Google Play Store. Since then, we’ve served tens of thousands of Android customers and raised a few rounds of funding.

What’s one Android development shortcut, tip, or hack you can’t live without?

Being able to test my Android builds on virtual devices is a lifesaver. There are a lot of different scenarios to account for when building Android apps for thousands of different devices. Tools such as Firebase Test Labs, as well as other virtual device services allow me to create specific scenarios for hands-on testing that I can’t achieve with the physical Android devices that I own.

What's the one piece of advice you wish someone would have given you when you started on your journey?

Making mistakes is OK; it's all part of the process.

Yuki Anzai

Tell me about your journey in becoming an Android Developer and how you got started.

My journey began when I got my very first Android device, the HTC Magic, at Google Developer Day 2009. At that time, I was a college student and writing my personal application with JavaFX, so I had experience and familiarity with Java. Then I soon started to port my app to Android. After graduation I worked at a software company and wanted to develop Android apps as my job. But there seemed no opportunity at that company. So I created my own small company that is the agency to develop Android apps.

What’s one Android development shortcut, tip, or hack you can’t live without?

There are many. If I had to pick one, it would be Android Studio. I always appreciate the awesomeness of Android Studio because I started Android app development with Eclipse. (Also I can't live without Kotlin, RecyclerView, ConstraintLayout ...)

The shortcut of Android Studio that I can't live without is Command + B (Declaration or Usages. This allows us to jump between the declaration and usages. It's very useful to read source codes including Android platform and libraries codes.

What's the one piece of advice you wish someone would have given you when you started on your journey?

Read official documents. Read source codes of platform, libraries that you use. One of the ways to accelerate learning is to create an app through first to end (until release to the market).

Don't rely on libraries too much especially that affect the whole structure of your app. Your app might live longer than libraries.

Madona Syombua

Tell me about your journey in becoming an Android Developer and how you got started.

My Android Journey started back in early 2014; before that, I worked as a junior Java developer for a small firm building inventory systems. However, that did not interest me, and I kept looking for something great to do with my Java knowledge. I bought my first phone, a Nokia, and saw apps in the phone and wondered how they made those apps. I researched and learned that apps were actually written in Java, and that's how my journey began.

I recall building my first application, Simple Math, with only activities since fragments were not there; what an improvement we've had over the years. Simple Math had 500 downloads with a 4.5 rating, and this really motivated me to build more applications. I later won the Grow With Google Scholarship (2018), which boosted my career. During this one-year scholarship, I launched my second application, Budgeting Buddy, on the Google Play Store and has a 4.5 rating with over five thousand downloads. I currently work for Streem as an Android Engineer, and I indeed love how far Android has come and how the technology and maintenance have improved over the years. Especially the Emulator.

What's one Android development shortcut, tip, or hack you can't live without.

A shortcut I can't live without is [options + Command + L ] and [Options + Command + O]; this really helps me during my pull request process. An amazing hack that I have learned to appreciate is the git local history option, WOW lifesaver. Sometimes you might forget what you had changed, but this hack always saves my life.

What's the one piece of advice you wish someone would have given you when you started on your journey?

Actually, when I transitioned into mobile completely, I felt the learning curve was something I would have to accommodate In my life, which has really helped me a lot. Always staying in front of the game by always learning what is new, what is being recommended, and why it is needed. For instance, having Room was an amazing advancement, now dagger Hilt, and many more. So if I can turn this around and advise new developers, be ready to learn and you will enjoy Android Development.

The Android Developer community prides itself in its inclusivity and welcomes developers from all backgrounds and stages of life. If you’re feeling inspired and want to learn more about how to become a part of our community, here are a few resources to help get you started.

Dive into

Follow us on Twitter

Subscribe to our YouTube channel

The Google Developer Groups program gives developers the opportunity to meet local developers with similar interests in technology. A GDG meetup event includes talks on a wide range of technical topics where you can learn new skills through hands-on workshops.

Join a chapter near you here.

Founded in 2014, Google’s Women Techmakers is dedicated to helping all women thrive in tech through community, visibility and resources. With a member base of over 100,000 women developers, we’re working with communities across the globe to build a world where all women can thrive in tech.

Become a member here.

The Google Developers Experts program is a global network of highly experienced technology experts, influencers and thought leaders who actively support developers, companies and tech communities by speaking at events, publishing content, and building innovative apps. Experts actively contribute to and support the developer and startup ecosystems around the world, helping them build and launch highly innovative apps.

Learn more about the program here.

Java is a registered trademark of Oracle and/or its affiliates.

January 30th 2021, 1:27 pm

Expanding the reach of your Android Auto apps

Android Developers Blog

Posted by Eric Bahna, Product Manager

In December, we opened the Google Play Store for publishing new Android Auto apps to closed testing. Today, you can reach more drivers by publishing navigation, parking, and charging apps to open testing tracks in the Google Play Store. With open testing, there’s no limit to the number of users who can download your app and you don’t need to manage lists of email addresses. This is an important milestone that gets us closer to making these apps available to all users in production. Get started with the Android for Cars App Library and choose an open testing track in the Play Console.

TomTom AmiGO, one of our early access partners

To give you a peek at what’s ahead, we’re working on adding the library to Android Jetpack! This will give you more consistency with other Jetpack APIs and visibility into new features. When the Jetpack library is ready, migrating your app from the existing library will be straightforward - change the namespace and tweak some API calls. After we stabilize the library in Jetpack, we’ll prepare the Google Play Store to publish these new apps to production tracks.

You can get started today - you don’t need to wait for the Jetpack library.

  1. Design your app’s experience using our developer guide and app quality guidelines.
  2. Develop using today’s beta library so you can get user feedback from now.
  3. Test using the desktop head unit.
  4. Publish to the Google Play Store, now up to open testing tracks.

We’re excited to see what you’ve built and take it for a spin!

January 28th 2021, 12:16 pm

MAD Skills Kotlin and Jetpack: wrap-up

Android Developers Blog

Posted by Florina Muntenescu, Developer Relations Engineer

We just wrapped up another series of MAD Skills videos and articles - this time on Kotlin and Jetpack. We covered different ways in which we made Android code more expressive and concise, safer, and easy to run asynchronous code with Kotlin.

Check out the episodes below to level up your Kotlin and Jetpack knowledge! Each episode covers a specific set of APIs, talking both about how to use the APIs but also showing how APIs work under the hood. All the episodes have accompanying blog posts and most of them link to either a sample or a codelab to make it easier to follow and dig deeper into the content. We also had a live Q&A featuring Jetpack and Kotlin engineers.

Episode 1 - Using KTX libraries

In this episode we looked at how you can make your Android and Jetpack coding easy, pleasant and Kotlin-idiomatic with Jetpack KTX extensions. Currently, more than 20 libraries have a KTX version. This episode covers some of the most important ones: core-ktx that provides idiomatic Kotlin functionality for APIs coming from the Android platform, plus a few Jetpack KTX libraries that allow us to have a better user experience when working with APIs like LiveData and ViewModel.

Check out the video or the article:

Episode 2 - Simplifying APIs with coroutines and Flow

Episode 2, covers how to simplify APIs using coroutines and Flow as well as how to build your own adapter using suspendCancellableCoroutine and callbackFlow APIs. To get hands-on with this topic, check out the Building a Kotlin extensions library codelab.

Watch the video or read the article:

Episode 3 - Using and testing Room Kotlin APIs

This episode opens the door to Room, peeking in to see how to create Room tables and databases in Kotlin and how to implement one-shot suspend operations like insert, and observable queries using Flow. When using coroutines and Flow, Room moves all the database operations onto the background thread for you. Check out the video or blog post to find out how to implement and test Room queries. For more hands-on work - check out the Room with a view codelab.

Episode 4 - Using WorkManager Kotlin APIs

Episode 4 makes your job easier with WorkManager, for scheduling asynchronous tasks for immediate or deferred execution that are expected to run even if the app is closed or the device restarts. In this episode we go over the basics of WorkManager and look a bit more in depth at the Kotlin APIs, like CoroutineWorker.

Find the video here and the article here, but nothing compares to practical experience so go through the WorkManager codelab.

Episode 5 - Community tip

Episode 5 is by Magda Miu - a Google Developer Expert on Android who shared her experience of leveraging foundational Kotlin APIs with CameraX. Check it out here:

Episode 6 - Live Q&A

In the final episode we launched into a live Q&A, hosted by Chet Haase, with guests Yigit Boyar - Architecture Components tech lead, David Winer - Kotlin product manager, and developer relations engineers Manuel Vivo and myself. We answered questions from you on YouTube, Twitter and elsewhere.

January 15th 2021, 9:18 am

Treble Plus One Equals Four: Extending Android updates on Qualcomm’s Mobile Platforms

Android Developers Blog

Posted by Iliyan Malchev (Project Treble Architect), Amith Dsouza (Technical Account Manager) , and Veerendra Bhora (Strategic Partnerships Manager)

Extending Android updates on Qualcomm’s Mobile Platforms

In the past few years, the latest Android OS has been adopted earlier by OEMs and deployed in larger numbers to our users. The growth in adoption has been driven by OEMs delivering faster OS updates, taking advantage of the architecture introduced by Project Treble.

At the time Android 11 launched there were 667M active users on Android 10, 82% of whom got their Android 10 build via an over the air (OTA) update. Despite the events throughout 2020, there is a continued momentum among our partners to either launch their devices on Android 11 or offer Android 11 OTAs on their devices earlier.

Our efforts till now have been focussed on making OS updates easier and faster to deploy. The other side of this coin is supporting updates for a longer period of time, and today we’d like to provide an overview of the changes we are making to help our partners achieve this.

Project Treble was an ambitious re-architecture of Android that created a split between the OS framework and device-specific low-level software (called the vendor implementation) through a well-defined, stable vendor interface. As a part of this split, the Android OS framework guarantees backward compatibility with the vendor implementation, which is checked through a standardized compliance test suite - VTS. With each Android release, Project Treble publishes Generic System Images (GSIs) that are built from AOSP sources, and are guaranteed to be backwards-compatible with the previous 3 versions of vendor implementations, in addition of course to the current release—for a total span of four years. Devices launching with the new Android release must have vendor implementations compatible with that GSI. This is the primary vehicle for reducing fragmentation within the OS framework. While we allow and encourage our partners to modify the framework itself, the modifications post-Treble must be done in a way that reduces upgrade costs from one version to the next.

Besides the reuse of a vendor implementation across OS updates, the Treble architecture also facilitates the re-use of the same OS framework code across different vendor implementations.

Another important change introduced by Project Treble is that new vendor-impacting requirements for Android devices are never retroactive. They apply only to devices launching on that Android version and not to devices upgrading from an older version. The term vendor-impacting here refers to requirements for new HALs, or for the shipping of a newer Linux kernel, to the device's vendor implementation. A good example might be a new revision of the camera HAL to support multiple rear camera sensors. Since the Android framework guarantees compatibility with the older HALs, we enable older vendor implementations to be reused by OEMs for upgrades without the considerable cost of updating them with new requirements.

This principle, combined with the backwards-compatibility guarantee, gives device manufacturers (OEMs) the flexibility to support upgrades both faster (since they have to upgrade just the framework, which would cover all of their devices, including those with older versions of the vendor implementation), as well as at a lower cost (since they do not have to touch the older vendor implementations).

However, seen from a System-on-Chip manufacturers’ perspective, this design introduces additional complexity. For each SoC model, the SoC manufacturers now needed to create multiple combinations of vendor implementations to support OEMs who would use that chipset to launch new devices and deploy OS upgrades on previously launched devices.

The result is that three years beyond the launch of a chipset, the SoC vendor would have to support up to 6 combinations of OS framework software and vendor implementations. The engineering costs associated with this support limited the duration for which SoC vendors offered Android OS software support on a chipset. For every single chipset, the software support timeline would look like this:

Considering that SoC providers have dozens of SoC models at any point of time, the full picture looks closer to this:

The crux of the problem was that, while device requirements were never retroactive, the requirements for SoCs were. For example on Android Pie, SoCs had to support two versions of the Camera HAL API on a chipset if it was used to support new device launches and upgrades.

From this perspective, the solution was simple: we had to extend the no-retroactivity principle to the SoCs as well as to devices. With this change, the SoC provider would be able to support Android with the same vendor implementations on their SoCs for device launches as well as upgrades.

During the past year, we have been working hard to implement this solution. Building on our deep collaboration with our colleagues at Qualcomm, today we’re announcing the results of this work. Going forward, all new Qualcomm mobile platforms that take advantage of the no-retroactivity principle for SoCs will support 4 Android OS versions and 4 years of security updates. All Qualcomm customers will be able to take advantage of this stability to further lower both the costs of upgrades as well as launches and can now support their devices for longer periods of time.

Going one step further, we’re also reusing the same OS framework software across multiple Qualcomm chipsets. This dramatically lowers the number of OS framework and vendor implementation combinations that Qualcomm has to support across their mobile platforms and results in lowered engineering, development, and deployment costs. The diagram below indicates how significant the simplification is. From a software-support perspective, it's an altogether different situation:

This change is taking effect with all SoCs launching with Android 11 and later. By working closely with Qualcomm to offer an extended period of OS and security updates, we are looking forward to delivering the best of Android to our users faster, and with greater security for an extended period of time.

December 16th 2020, 1:10 pm

Opening the Google Play Store for more car apps

Android Developers Blog

Posted by Eric Bahna, Product Manager

In October, we published the Android for Cars App Library to beta so you could start bringing your navigation, parking, and charging apps to Android Auto. Thanks for sending your feedback with our issue tracker, so we know where to improve and clarify things. Now we’re ready to take the next step in delivering great in-car experiences.

Today, you can publish your apps to closed testing tracks in the Google Play Store. This is a great way to get feedback on how well your app meets the app quality guidelines, plus get your in-car experience in front of your first Android Auto users.

Three of our early access partners: T map, PlugShare,and 2GIS

We’re preparing the Play Store for open testing tracks soon. You can get your app ready today by publishing to closed testing. We’re eager to see what you’ve built!

December 16th 2020, 11:56 am

MAD Skills Material Design Components: Wrap-Up

Android Developers Blog

Posted by Nick Rout

It’s a wrap_content!

The third topic in the MAD Skills series of videos and articles on Modern Android Development is complete. This time around we covered Material Design Components (a.k.a MDC). This library provides the Material Components as Android widgets and makes it easy to implement design patterns seen on, such as Material Theming, Dark Theme, and Motion.

Check out the episodes and links below to see what we covered. We designed these videos to closely follow our recent series of MDC articles as well as existing sample apps and codelabs, so you’ve got a variety of ways to engage with the content. We also had a Q&A episode featuring engineers from the MDC team!

Episode 1: Why use MDC?

The first episode by Nick Butcher is an overview video of this entire MAD Skills series, including why we recommend MDC, then deep-dives on Material Theming, Dark Theme and Motion. It also covers MDC interop with Jetpack Compose and updates to Android Studio templates that include MDC and themes/styles best practices.

Or in article form:

Episode 2: Material Theming

Episode 2 by Nick Rout covers Material Theming and goes through a tutorial on how to implement it on Android using MDC. Key topics include setting up a `Theme.MaterialComponents.*` app theme, choosing color, type, and shape attributes — using tools on —and finally adding them to your theme to see how widgets automatically react and adapt their UI. Also covered are handy utility classes that MDC provides for certain scenarios, like resolving theme color attributes and applying shape to images.

Or in article form:

Episode 3: Dark Theme

This episode by Chris Banes gets really dark… It takes you through implementing a dark theme for an Android app using MDC. Topics covered include using “force dark” for quick conversion (and how to exclude views from this), manually crafting a dark theme with design choices, `.DayNight` MDC app themes, and `.PrimarySurface` MDC widget styles, and how to handle the system UI.

Or in article form:

Episode 4: Material Motion

Episode 4 by Nick Rout is all about Material’s motion system. It closely follows the steps in the existing “Building Beautiful Transitions with Material Motion for Android” codelab. It uses the Reply sample app to demonstrate how you can use transition patterns —container transform, shared axis, fade through, and fade —for a smoother, more understandable user experience. It goes through scenarios involving Fragments (including the Navigation component), Activities, and Views, and will feel familiar if you’ve used the AndroidX and platform transition frameworks before.

Or in article form:

Episode 5: Community tip

Episode 5 is by a member of the Android community—Google Developer Expert (GDE) for Android Zarah Dominguez—who takes us through using the MDC catalog app as a reference for widget functionality and API examples. She also explains how it’s been beneficial to build a ‘Theme Showcase’ page in the app she works on, to ensure a cohesive design language across different screens and flows.

Episode 6: Live Q&A

To wrap things up, Chet Haase hosted us for a Q&A session along with members of the MDC engineering team —Dan Nizri and Connie Shi. We answered questions asked by you on YouTube Live, Twitter, and elsewhere. We explored the origins of MDC, how it relates to AppCompat, and how it’s evolved over the years. Other topics include best practices for organizing your themes and resources, using different fonts and typography styles, and shape theming… A lot of shape theming. We also revealed all of our favorite Material components! Lastly we looked to the future with new components coming out in MDC and Jetpack Compose, Android’s next generation UI toolkit which has Material Design built in by default.

Sample apps

During the series we used two different sample applications to demonstrate MDC :

These can both found alongside another Material study sample app — Owl — in the MDC examples GitHub repository.

December 15th 2020, 2:02 pm

Improving urban GPS accuracy for your app

Android Developers Blog

Posted by Frank van Diggelen, Principal Engineer and Jennifer Wang, Product Manager

At Android, we want to make it as easy as possible for developers to create the most helpful apps for their users. That’s why we aim to provide the best location experience with our APIs like the Fused Location Provider API (FLP). However, we’ve heard from many of you that the biggest location issue is inaccuracy in dense urban areas, such as wrong-side-of-the-street and even wrong-city-block errors.

This is particularly critical for the most used location apps, such as rideshare and navigation. For instance, when users request a rideshare vehicle in a city, apps cannot easily locate them because of the GPS errors.

The last great unsolved GPS problem

This wrong-side-of-the-street position error is caused by reflected GPS signals in cities, and we embarked on an ambitious project to help solve this great problem in GPS. Our solution uses 3D mapping aided corrections, and is only feasible to be done at scale by Google because it comprises 3D building models, raw GPS measurements, and machine learning.

The December Pixel Feature Drop adds 3D mapping aided GPS corrections to Pixel 5 and Pixel 4a (5G). With a system API that provides feedback to the Qualcomm® Snapdragon™ 5G Mobile Platform that powers Pixel, the accuracy in cities (or “urban canyons”) improves spectacularly.

Picture of a pedestrian test, with Pixel 5 phone, walking along one side of the street, then the other. Yellow = Path followed, Red = without 3D mapping aided corrections, Blue = with 3D mapping aided corrections.

Why hasn’t this been solved before?

The problem is that GPS constructively locates you in the wrong place when you are in a city. This is because all GPS systems are based on line-of-sight operation from satellites. But in big cities, most or all signals reach you through non line-of-sight reflections, because the direct signals are blocked by the buildings.

The GPS chip assumes that the signal is line-of-sight and therefore introduces error when it calculates the excess path length that the signals traveled. The most common side effect is that your position appears on the wrong side of the street, although your position can also appear on the wrong city block, especially in very large cities with many skyscrapers.

There have been attempts to address this problem for more than a decade. But no solution existed at scale, until 3D mapping aided corrections were launched on Android.

How 3D mapping aided corrections work

The 3D mapping aided corrections module, in Google Play services, includes tiles of 3D building models that Google has for more than 3850 cities around the world. Google Play services 3D mapping aided corrections currently supports pedestrian use-cases only. When you use your device’s GPS while walking, Android’s Activity Recognition API will recognize that you are a pedestrian, and if you are in one of the 3850+ cities, tiles with 3D models will be downloaded and cached on the phone for that city. Cache size is approximately 20MB, which is about the same size as 6 photographs.

Inside the module, the 3D mapping aided corrections algorithms solve the chicken-and-egg problem, which is: if the GPS position is not in the right place, then how do you know which buildings are blocking or reflecting the signals? Having solved this problem, 3D mapping aided corrections provide a set of corrected positions to the FLP. A system API then provides this information to the GPS chip to help the chip improve the accuracy of the next GPS fix.

With this December Pixel feature drop, we are releasing version 2 of 3D mapping aided corrections on Pixel 5 and Pixel 4a (5G). This reduces wrong-side-of-street occurrences by approximately 75%. Other Android phones, using Android 8 or later, have version 1 implemented in the FLP, which reduces wrong-side-of-street occurrences by approximately 50%. Version 2 will be available to the entire Android ecosystem (Android 8 or later) in early 2021.

Android’s 3D mapping aided corrections work with signals from the USA’s Global Positioning System (GPS) as well as other Global Navigation Satellite Systems (GNSSs): GLONASS, Galileo, BeiDou, and QZSS.

Our GPS chip partners shared the importance of this work for their technologies:

“Consumers rely on the accuracy of the positioning and navigation capabilities of their mobile phones. Location technology is at the heart of ensuring you find your favorite restaurant and you get your rideshare service in a timely manner. Qualcomm Technologies is leading the charge to improve consumer experiences with its newest Qualcomm® Location Suite technology featuring integration with Google's 3D mapping aided corrections. This collaboration with Google is an important milestone toward sidewalk-level location accuracy,” said Francesco Grilli, vice president of product management at Qualcomm Technologies, Inc.

“Broadcom has integrated Google's 3D mapping aided corrections into the navigation engine of the BCM47765 dual-frequency GNSS chip. The combination of dual frequency L1 and L5 signals plus 3D mapping aided corrections provides unprecedented accuracy in urban canyons. L5 plus Google’s corrections are a game-changer for GNSS use in cities,” said Charles Abraham, Senior Director of Engineering, Broadcom Inc.

“Google's 3D mapping aided corrections is a major advancement in personal location accuracy for smartphone users when walking in urban environments. MediaTek’s Dimensity 5G family enables 3D mapping aided corrections in addition to its highly accurate dual-band GNSS and industry-leading dead reckoning performance to give the most accurate global positioning ever for 5G smartphone users,” said Dr. Yenchi Lee, Deputy General Manager of MediaTek’s Wireless Communications Business Unit.

How to access 3D mapping aided corrections

Android’s 3D mapping aided corrections automatically works when the GPS is being used by a pedestrian in any of the 3850+ cities, on any phone that runs Android 8 or later. The best way for developers to take advantage of the improvement is to use FLP to get location information. The further 3D mapping aided corrections in the GPS chip are available to Pixel 5 and Pixel 4a (5G) today, and will be rolled out to the rest of the Android ecosystem (Android 8 or later) in the next several weeks. We will also soon support more modes including driving.

Android’s 3D mapping aided corrections cover more than 3850 cities, including:

As our Google Earth 3D models expand, so will 3D mapping aided corrections coverage.

Google Maps is also getting updates that will provide more street level detail for pedestrians in select cities, such as sidewalks, crosswalks, and pedestrian islands. In 2021, you can get these updates for your app using the Google Maps Platform. Along with the improved location accuracy from 3D mapping aided corrections, we hope we can help developers like you better support use cases for the world’s 2B pedestrians that use Android.

Continuously making location better

In addition to 3D mapping aided corrections, we continue to work hard to make location as accurate and useful as possible. Below are the latest improvements to the Fused Location Provider API (FLP):

Qualcomm and Snapdragon are trademarks or registered trademarks of Qualcomm Incorporated.

Qualcomm Snapdragon and Qualcomm Location Suite are products of Qualcomm Technologies, Inc. and/or its subsidiaries.

December 15th 2020, 2:02 pm

What’s your MAD score?

Android Developers Blog

Posted by Christopher Katsaros; Your #MADscore tabulator

We’ve been talking to you a lot recently about modern Android development (MAD), through the MAD Skills series. Now it’s time to see: what’s your MAD score? From how many Jetpack libraries you’re using to what percent of your app is coded in Kotlin, today we’re launching a MAD scorecard that shows just how modern an Android developer you are.

Your MAD scorecard uses Android Studio to tell you interesting things like how much size savings your app is seeing through the Android App Bundle. It spotlights each of the key MAD technologies, including specific Jetpack libraries and Kotlin features you could be using. You’ll even get a special MAD character based on your MADest skill (who knows, you just might be a MAD scientist…).

Here’s how to get your scorecard

You can get a personalized look into your MAD score through a new Android Studio plugin, here’s how to get and share your scorecard:

Level up with the MAD Skills series

Once you’re done with your scorecard, check out the episodes in MAD Skills, a series of videos and articles we’re creating to teach you how to use the latest technologies of Modern Android Development to create better applications more easily. Arranged as a series of three-week topics, from Navigation to Kotlin to Android Studio, each topic will conclude with a Q&A where we’ll answer your questions. You can check out some of our earlier topics, like Material Design Components, App Bundles, and Navigation, and tune into Android Developers on YouTube for future topics.

See your MAD scorecard and share it with all of your friends, here!

December 15th 2020, 2:02 pm

AGP 7.0: Next major release for the Android Gradle plugin

Android Developers Blog

Posted by Murat Yener, Developer Advocate

Today marks the release of the first Canary version of Android Studio Arctic Fox (2020.3.1), together with Android Gradle plugin (AGP) version 7.0.0-alpha01. With this release we are adjusting the version numbering for our Gradle plugin and decoupling it from the Android Studio versioning scheme. In this blog post we'll explain the reasons for the change, as well as give a preview of some important changes we're making to our new, incubating Android Gradle plugin APIs and DSL.

New versioning scheme

With AGP 7.0.0 we are adopting the principles of semantic versioning. What this means is that only major version changes will break API compatibility. We intend to release one major version each year, right after Gradle introduces its own yearly major release.

Moreover, in the case of a breaking change, we will ensure that the removed API is marked with @Deprecated about a year in advance and that its replacement is available at the same time. This will give developers roughly a year to migrate and test their plugins with the new API before the old API is removed.

Alignment with Gradle's version is also why we're skipping versions 5 and 6, and moving directly to AGP 7.0.0. This alignment indicates that AGP 7.x is meant to work with Gradle 7.x APIs. While it may also run on Gradle 8.x, this is not guaranteed and will depend on whether 8.x removes APIs that AGP relies on.

With this change, the AGP version number will be decoupled from the Android Studio version number. However we will keep releasing Android Studio and Android Gradle plugin together for the foreseeable future.

Compatibility between Android Studio and Android Gradle plugin remains unchanged. As a general rule, projects that use stable versions of AGP can be opened with newer versions of Android Studio.

Java 11 requirement

You can still use Java programming language version 8 with AGP 7.0.0-alpha01 but we are changing the minimum required Java programming language version to Java 11, starting with AGP 7.0.0-alpha02. We are announcing this early in the Canary schedule and many months ahead of the stable release to allow developers time to get ready.

Incubating APIs and important API changes

This release of AGP also introduces some API changes. As a reminder, a number of APIs that were introduced in AGP 4.1 were marked as incubating and were subject to change. In fact, in AGP 4.2 some of these APIs have changed. The APIs that are currently incubating do not follow the deprecation cycle that we explain above.

Here is a summary of some important API changes.

Let’s take a look at some of these changes. Here is a sample onVariants block which targets the release build. The onVariants block Is changed to beforeVariants and uses a variant selector in the following example.

android {
   //onVariants.withName("release") {
   //   ...
androidComponents {
   val release = selector().withBuildType("release")
   beforeVariants(release) { variant ->


Similarly onVariantProperties block is changed to onVariants.

android {
   //onVariantProperties {
   //   ... 

androidComponents.onVariants { variant ->


Note, this customization is typically done in a plugin and should not be located in build.gradle. We are moving away from using functions with receivers which suited the DSL syntax but are not necessary in the plugin code.

We are planning to make these APIs stable with AGP 7.0.0 and all plugin authors must migrate to the new androidComponents. If you want to avoid dealing with such changes, make sure your plugins only use stable APIs and do not depend on APIs marked as incubating.

If you want to learn more about other changes coming with this release, make sure to take a look at the release notes.

Java is a registered trademark of Oracle and/or its affiliates.

December 1st 2020, 3:21 pm

Announcing Android Studio Arctic Fox (2020.3.1) & Android Gradle plugin 7.0

Android Developers Blog

Posted by Jamal Eason, Product Manager

Today marks the release of the first version of Android Studio Arctic Fox (2020.3.1) on the canary channel, together with Android Gradle plugin (AGP) version 7.0.0-alpha01. With this release, we are adjusting the version numbering of Android Studio and our Gradle plugin. This change decouples the Gradle plugin from the Android Studio versioning scheme and brings more clarity to which year and IntelliJ version Android Studio aligns with for each release.

New versioning scheme - Android Studio

With Android Studio Arctic Fox (2020.3.1) we are moving to a year-based system that is more closely aligned with IntelliJ IDEA, the IDE upon which Android Studio is built. We are changing the version numbering scheme to encode a number of important attributes: the year, the version of IntelliJ it is based on, plus feature and patch level. WIth this name change you can quickly figure out which version of the IntelliJ platform you are using in Android Studio. In addition, each major version will have a canonical codename, starting with Arctic Fox, and then proceeding alphabetically to help make it easy to see which version is newer.

We recommend that you use the latest version of Android Studio so that you have access to the latest features and quality improvements. To make it easier to stay up to date, we made the version change to clearly de-couple Android Studio from your Android Gradle Plugin version. An important detail to keep in mind is that there is no impact to the way the build system compiles and packages your app when you update the IDE. In contrast, app build process changes and APK/Bundles are dictated by your project AGP version. Therefore, it is safe to update your Android Studio version, even late in your development cycle, because your project AGP version can be updated in a different cadence than your Android Studio version. Lastly, with the new version system it is even easier than before for you or your team to run both the stable and preview versions of Android Studio at the same time on your app project as long as you keep the AGP version on a stable release.

In the previous numbering system, this release would have been Android Studio 4.3. With the new numbering system, it is now Android Studio Arctic Fox (2020.3.1) Canary 1 or just, Arctic Fox.

Going forward, here is how the Android Studio version number scheme will work:

<Year of IntelliJ Version>.<IntelliJ major version>.<Studio major version>

New versioning scheme - Android Gradle plugin

With AGP 7.0.0 we are adopting the principles of semantic versioning, and aligning with the Gradle version that AGP requires. Compatibility between Android Studio and Android Gradle plugin remains unchanged. Projects that use stable versions of AGP can be opened with newer versions of Android Studio.

We will publish another post soon with more details about our AGP versioning philosophy and what is new in AGP 7.0.

What is new in Android Studio Arctic Fox

We are in early days in the feature development phase for Arctic Fox, but we have invested much of our time in addressing over 200 quality improvements and bugs across a wide range of areas in the IDE from the code editor, app inspection tools, layout editor to the embedded emulator. Check out the release notes for the specific bug fixes.

For those trying out Jetpack Compose, we have a host of new updates, like deploy @Preview composables to device/emulator:

Deploy preview composable

Also try out the new Layout Validation Tool in Arctic Fox to see how your layout responds to various screens sizes, font sizes, and Android Color Correction/Color Blind Modes. You can access this via the Layout Validation tool window when you are using the Layout Editor.

Layout Validation

Lastly, for those running MacOS (other platforms are coming soon) with the latest Android Platform tools and an Android 11 device, you can try out the IDE integration for the Wireless ADB feature by going to the Run device selection dialogue → Pair Devices Using Wi-Fi.

Menu to access Wireless ADB feature

Wireless ADB Setup Window

What’s Next

If you want to learn more about other detailed changes coming with this release for both Android Studio and the Android Gradle plugin, make sure to take a look at the release notes.

December 1st 2020, 2:08 pm

Celebrating the Developers Behind the Best Apps and Games of 2020

Android Developers Blog

Posted by Posted by Purnima Kochikar, Director, Business Development, Games & Applications

Today, we announced Google Play’s annual Best of 2020 awards, highlighting the year’s best apps, games and digital content. None of this would be possible without the developers that created the amazing content that made a profound impact on us in 2020, or should we say a Genshin Impact … From miHoYo Limited to Loona Inc, the makers behind your favorite apps and games were unafraid to experiment, challenge the status quo, and design incredible experiences we never thought possible.

Check out the full rundown of the developers behind the best apps and games of 2020 in the U.S. on Google Play:

Best App of 2020

Best Personal Growth Apps

Best Hidden Gem Apps

Best Everyday Essential Apps

Best Apps for Good

Best Apps for Fun

Best Game of 2020

Best Indie Games

Best Casual Games

Best Innovative Games

Best Competitive Games

MAD Skills — Become an Android App Bundle expert

Android Developers Blog

Posted by Ben Weiss, Developer Relations Engineer

The Android App Bundle series of Modern Android Development has just concluded. We finished off with a live Q&A session. I was joined by Chet Haase, Wojtek Kaliciński, and Iuuri Makhno to go over bundles of questions from the #AskAndroid hashtag on Twitter as well as from the chat during the live stream.

But let’s rewind for a moment and take it from the top.

Introduction to Android App Bundles

In the inaugural episode Wojtek sets the tone for this series by talking about why app bundles matter to you and your app.

Everything to know about Play App Signing

In this episode you learn how to opt into Play App Signing by joining Wojtek on a journey through the Play Console. After watching this video you will have learned what options are available to you when opting into Play App Signing.

Alongside this video we recommend taking a look at the FAQ about Play App Signing, the app signing Android docs and the Play Console’s Play App Signing help page.

Building your first app bundle

Now it’s time to learn how to build and upload your first Android App Bundle.

In this episode, I take you through the process of building a bundle using Android Studio and the command line interface.

Instead, you can read the write up of this episode.

Accompanying this episode, take a look at the app bundles documentation.

Configuring your app for Play Feature Delivery

Here you’ll learn about delivery options. From install time, to conditional delivery to on demand delivery. I cover it all. And we’ll take an excursion through the sample on GitHub.

This episode also is available as an article for you to read. Additionally, the PlayCore guide is a valuable resource.

Testing app bundles with bundletool and the Play Console

Have you wondered about how you can test your app bundle? No more wondering. Wojtek takes you through testing your app bundle locally and with the Play Console.

You can read up on this episode’s content in the accompanying article and the guide to testing your Android App Bundle.

Additionally we have guidance on developer tools on the Play Console and the Play Console help page for internal app sharing available for you.

And, if you want to download bundletool, here is where to find it.

Big savings with Android App Bundles

Android GDE Angélica Oliveira tells us about the process and the impressive size savings her company saw when switching over to Android App Bundles.

Live Q&A session

We asked for your questions on Twitter. You replied, using the #AskAndroid hashtag.

And you continued asking questions during the live Q&A session.

Chet then got Wojtek, Iurii and myself in front of the camera for a live Q&A to answer your questions.

Reminder: App bundles will be mandatory for new apps from August 2021

Read more about the 2021 API level bump and app bundle requirement

November 23rd 2020, 5:38 pm

The future of Kotlin Android Extensions

Android Developers Blog

Posted by David Winer, Product Manager

The Android Kotlin Extensions Gradle plugin (not to be confused with Android KTX) was released in 2017 and brought two new conveniences to Android development in Kotlin:

Since then, we have released View Binding for Android, an officially supported library that has deep integration with the Android build toolchain and provides similar functionality as Kotlin synthetics. While we continue to recommend Parcelize, a number of drawbacks have appeared with using Kotlin synthetics:

JetBrains originally developed the Android Kotlin Extensions plugin, and together we have discussed the pros and cons of continuing to maintain synthetics: we strive to ensure long term support for APIs where we can but want to guide developers towards best practices that make for healthy codebases and, ultimately, happy users.

Over the course of the next year, our teams will be jointly deprecating synthetics in favor of continuing to support our recommended option, View Binding. Here’s what that means:

The deprecation period starts with Kotlin 1.4.20, released today. android-kotlin-extensions will be removed in a future Kotlin release during or after September 2021. Long term, we will continue to maintain the kotlin-parcelize plugin, and you can continue to file issues on Parcelize in the Android Studio issue tracker.

November 23rd 2020, 12:07 pm

New Android App Bundle and target API level requirements in 2021

Android Developers Blog

Posted by Hoi Lam, Developer Relations Engineer, Android Platform

In 2021, we are continuing with our annual target API level update, requiring new apps to target API level 30 (Android 11) in August and in November for all app updates. In addition, as announced earlier this year, Google Play will require new apps to use the Android App Bundle publishing format. This brings the benefits of smaller apps and simpler releases to more users and developers and supports ongoing investment in advanced distribution.

Over 750,000 apps and games already publish to production on Google Play using app bundles. Top apps switching save an average size of 15% versus a universal APK. Users benefit from smaller downloads and developers like Netflix and Riafy see higher install success rates, which is especially impactful in regions with more entry level devices and slower data speeds. Developers switching can use advanced distribution features such as Play Asset Delivery and Play Feature Delivery. We value your feedback and plan to introduce further features and options for Play App Signing and Android App Bundles before the switchover.

Requirements for new apps

From August 2021, the Google Play Console will require all new apps to:

Requirements for updates to existing apps

From November 2021, updates to existing apps will be required to target API level 30 or above and adjust for behavioral changes in Android 11. Existing apps that are not receiving updates are unaffected and can continue to be downloaded from the Play Store.

Requirements for instant experiences

The switch to Android App Bundle delivery will also impact instant experiences using the legacy Instant app ZIP format. From August 2021, new instant experiences and updates to existing instant experiences will be required to publish instant-enabled app bundles.

Moving forward together

Here is a summary of all the changes:




New apps 
on Google Play


Android App Bundle (AAB)

Target API level set to 29+

Target API level set to 30+

Expansion files (OBBs)

Play Asset Delivery or 
Play Feature Delivery




Updates to existing apps 
on Google Play

No new publishing format requirement

Target API level set to 29+

Target API level set to 30+

Wear OS apps are not subject to the new target API level requirement.

Apps can still use any minSdkVersion, so there is no change to your ability to build apps for older Android versions.

To learn more about transitioning to app bundles, watch our new video series: modern Android development (MAD) skills. We are extremely grateful for all the developers who have adopted app bundles and API level 30 already. We look forward to advancing the Android platform together with you.

November 19th 2020, 1:21 pm

Tips for getting your app approved for background location access

Android Developers Blog

Posted by Krish Vitaldevara, Director of Product Management Trust & Safety, Google Play

When it comes to privacy, we are committed to giving users control and transparency over data access. Users consistently tell us that they want more control over their location data, so earlier this year we announced a few privacy improvements, such as updates to Google Play’s Location Permissions policy and enhancements to location permission controls in Android 11.

To help prevent unnecessary access to background location, the updated policy allows access only if it’s critical to the app’s core functionality and provides clear user benefit. We found that many apps that requested background location don’t actually need it. Removing or changing it to foreground can help apps be battery-efficient and avoid poor app ratings when users don’t want to share their location.

If your app uses background location data, you must submit a form for review and receive approval by January 18, 2021 so your apps can stay on Google Play. Existing apps first published before April 16, 2020 have until March 29, 2021 to comply.

Tips to get approved

Resources to help

We want to help you through this process, so we’ve created this video and free training courses in Google Play Academy to use as a reference when you’re making any necessary app updates. You can also check out these best privacy practices and technical details to help identify possible background location usage in your code.

Thank you for continuing to partner with us to make Google Play a trustworthy platform for you and your users.

How useful did you find this blog post?

November 18th 2020, 1:12 pm

Android Neural Networks API 1.3 and PyTorch Mobile support

Android Developers Blog

Posted by Oli Gaymond, Product Manager Android Machine Learning

On-Device Machine Learning enables cutting edge features to run locally without transmitting data to a server. Processing the data on-device enables lower latency, can improve privacy and allows features to work without connectivity. Achieving the best performance and power efficiency requires taking advantage of all available hardware.

Android Neural Networks API 1.3

The Android Neural Networks API (NNAPI) is designed for running computationally intensive operations for machine learning on Android devices. It provides a single set of APIs to benefit from available hardware accelerators including GPUs, DSPs and NPUs.

In Android 11, we released Neural Networks API 1.3 adding support for Quality of Service APIs, Memory Domains and expanded quantization support. This release builds on the comprehensive support for over 100 operations, floating point and quantized data types and hardware implementations from partners across the Android ecosystem.

Hardware acceleration is particularly beneficial for always-on, real-time models such as on-device computer vision or audio enhancement. These models tend to be compute-intensive, latency-sensitive and power-hungry. One such use case is in segmenting the user from the background in video calls. Facebook is now testing NNAPI within the Messenger application to enable the immersive 360 backgrounds feature. Utilising NNAPI, Facebook saw a 2x speedup and 2x reduction in power requirements. This is in addition to offloading work from the CPU, allowing it to perform other critical tasks.

Introducing PyTorch Neural Networks API support

NNAPI can be accessed directly via an Android C API or via higher level frameworks such as TensorFlow Lite. Today, PyTorch Mobile announced a new prototype feature supporting NNAPI that enables developers to use hardware accelerated inference with the PyTorch framework.

Today’s initial release includes support for well-known linear convolutional and multilayer perceptron models on Android 10 and above. Performance testing using the MobileNetV2 model shows up to a 10x speedup compared to single-threaded CPU. As part of the development towards a full stable release, future updates will include support for additional operators and model architectures including Mask R-CNN, a popular object detection and instance segmentation model.

We would like to thank the PyTorch Mobile team at Facebook for their partnership and commitment to bringing accelerated neural networks to millions of Android users.

November 12th 2020, 1:09 pm

Privacy-preserving features in the Mobile Driving License

Android Developers Blog

Posted by David Zeuthen, Shawn Willden and René Mayrhofer, Android Security and Privacy team

In the United States and other countries a Driver's License is not only used to convey driving privileges, it is also commonly used to prove identity or personal details.

Presenting a Driving License is simple, right? You hand over the card to the individual wishing to confirm your identity (the so-called “Relying Party” or “Verifier”); they check the security features of the plastic card (hologram, micro-printing, etc.) to ensure it’s not counterfeit; they check that it’s really your license, making sure you look like the portrait image printed on the card; and they read the data they’re interested in, typically your age, legal name, address etc. Finally, the verifier needs to hand back the plastic card.

Most people are so familiar with this process that they don’t think twice about it, or consider the privacy implications. In the following we’ll discuss how the new and soon-to-be-released ISO 18013-5 standard will improve on nearly every aspect of the process, and what it has to do with Android.

Mobile Driving License ISO Standard

The ISO 18013-5 “Mobile driving licence (mDL) application” standard has been written by a diverse group of people representing driving license issuers (e.g. state governments in the US), relying parties (federal and state governments, including law enforcement), academia, industry (including Google), and many others. This ISO standard allows for construction of Mobile Driving License (mDL) applications which users can carry in their phone and can use instead of the plastic card.

Instead of handing over your plastic card, you open the mDL application on your phone and press a button to share your mDL. The Verifier (aka “Relying Party”) has their own device with an mDL reader application and they either scan a QR code shown in your mDL app or do an NFC tap. The QR code (or NFC tap) conveys an ephemeral cryptographic public key and hardware address the mDL reader can connect to.

Once the mDL reader obtains the cryptographic key it creates its own ephemeral keypair and establishes an encrypted and authenticated, secure wireless channel (BLE, Wifi Aware or NFC)). The mDL reader uses this secure channel to request data, such as the portrait image or what kinds of vehicles you're allowed to drive, and can also be used to ask more abstract questions such as “is the holder older than 18?”

Crucially, the mDL application can ask the user to approve which data to release and may require the user to authenticate with fingerprint or face — none of which a passive plastic card could ever do.

With this explanation in mind, let’s see how presenting an mDL application compares with presenting a plastic-card driving license:

These are some of the reasons why we think mDL is a big win for end users in terms of privacy.

One commonality between plastic-card driving licences and the mDL is how the relying party verifies that the person presenting the license is the authorized holder. In both cases, the verifier manually compares the appearance of the individual against a portrait photo, either printed on the plastic or transmitted electronically and research has shown that it’s hard for individuals to match strangers to portrait images.

The initial version of ISO 18013-5 won’t improve on this but the ISO committee working on the standard is already investigating ways to utilize on-device biometrics sensors to perform this match in a secure and privacy-protecting way. The hope is that improved fidelity in the process helps reduce unauthorized use of identity documents.

mDL support in Android

Through facilities such as hardware-based Keystore, Android already offers excellent support for security and privacy-sensitive applications and in fact it’s already possible to implement the ISO 18013-5 standard on Android without further platform changes. Many organizations participating in the ISO committee have already implemented 18013-5 Android apps.

That said, with purpose-built support in the operating system it is possible to provide better security and privacy properties. Android 11 includes the Identity Credential APIs at the Framework level along with a Hardware Abstraction Layer interface which can be implemented by Android OEMs to enable identity credential support in Secure Hardware. Using the Identity Credential API, the Trusted Computing Base of mDL applications does not include the application or even Android itself. This will be particularly important for future versions where the verifier must trust the device to identify and authenticate the user, for example through fingerprint or face matching on the holder's own device. It’s likely such a solution will require certified hardware and/or software and certification is not practical if the TCB includes the hundreds of millions of lines of code in Android and the Linux kernel.

One advantage of plastic cards is that they don't require power or network communication to be useful. Putting all your licenses on your phone could seem inconvenient in cases where your device is low on battery, or does not have enough battery life to start. The Android Identity Credential HAL therefore provides support for a mode called Direct Access, where the license is still available through an NFC tap even when the phone's battery is too low to boot it up. Device makers can implement this mode, but it will require hardware support that will take several years to roll out.

For devices without the Identity Credential HAL, we have an Android Jetpack which implements the same API and works on nearly every Android device in the world (API level 24 or later). If the device has hardware-backed Identity Credential support then this Jetpack simply forwards calls to the platform API. Otherwise, an Android Keystore-backed implementation will be used. While the Android Keystore-backed implementation does not provide the same level of security and privacy, it is perfectly adequate for both holders and issuers in cases where all data is issuer-signed. Because of this, the Jetpack is the preferred way to use the Identity Credential APIs. We also made available sample open-source mDL and mDL Reader applications using the Identity Credential APIs.


Android now includes APIs for managing and presenting with identity documents in a more secure and privacy-focused way than was previously possible. These can be used to implement ISO 18013-5 mDLs but the APIs are generic enough to be usable for other kinds of electronic documents, from school ID or bonus program club cards to passports.

Additionally, the Android Security and Privacy team actively participates in the ISO committees where these standards are written and also works with civil liberties groups to ensure it has a positive impact on our end users.

November 5th 2020, 1:06 pm

Further tales from the leading edge and beyond: more Apps, Games, & Insights podcast episodes

Android Developers Blog

Posted by Lily Sheringham, Global Marketing, Platforms & Ecosystems

We are launching the second series of the Apps, Games, & Insights podcast.

Over the summer, we teamed up with a new group of leading industry insiders and experts to bring you 8 new podcast episodes over the next couple of months. We are bringing you their exceptional business stories, experiences and discussion on some of the latest big questions in the apps and games industry.

We are joined again by your hosts—Tamzin Taylor, who heads up Apps & Games Business Development for Google Play in Western Europe, and Dirk Primbs, who leads the Ecosystem Developer Relations team in Europe— and you can find out who they have been cajoling and corralling in the new series, below.

In the first series, the guests covered topics ranging from responsible growth and building for the long term, through advice from mergers and acquisitions and venture capital experts, to hot topics such as privacy and accessibility.

Apps, Games, & Insights podcast series 2 brings you a similarly diverse range of insights, stories, and learnings, and without further ado, get a sneak peek as to what we have lined up...

We kickoff with Elliott Rayner, Head Of Product Marketing, and John Quintana, Head of Guided Learning Experiences, from Babbel the online language learning company. Here in episode 9 we talk about how the new normal is disrupting the delivery of all types of education. Elliott and John discuss how Babbel is transforming and adapting and has been "thinking big" about the future of education: ultimately can apps take the place of traditional classroom education?

Most of us are very aware how critical environmental change is, but how do we raise awareness to fight climate change through our businesses? In episode 10 we are joined by Jennifer Estaris, Games Director at SYBO Games and Deborah Mensah-Bonsu, Founder of Games for Good and formerly at Space Ape Games, to learn how others are changing the game. In the recent Green Game Jam, 11 game studios came together to find innovative and engaging ways to educate and empower players about climate change through games. Jennifer and Deborah discuss how they ensured that the ideas were more than just another collection of tips for better recycling, and then pulled together a jam to bring great minds together and actualise change.

We also explore how to be successful with 4x strategy games—turn-based and real-time strategy games where you build an empire—in episode 11. We’re joined by David Eckleberry, General Manager and Vice President at Scopely, and Howard Chen, Google Play Growth Consultant. We hear how Star Trek Fleet Command has successfully built it’s loyal player base and the stories that bring to life the learnings about player affinity, KPI growth, comparative analysis with other game genres, and more.

With literally thousands of languages to choose from, language learning apps are in a unique position to reflect humanity’s diversity. The team at Drops have taken this opportunity by incorporating several indigenous languages into their app portfolio. So, while supporting the usual suspects of popular languages, users of Drops can also learn Hawaiian, Maori (from New Zealand), and Innu (from Japan) among others. In episode 12, we talk with Drops CEO and Co-Founder, Daniel Farkas and Chief Customer Officer, Drew Banks about how they actively foster diversity and inclusion in their product and company.

Have you ever wondered what goes behind the scenes to help you order your favourite foods from delivery apps? Delivering a quality app is essential to the success of your business, in both acquiring and retaining users. In episode 13, we’re joined by Maria Neumayer, Staff Software Engineer, at food delivery service Deliveroo and Shobhit Chugh, Product Manager, Firebase to talk about the practical steps you can take to design quality into an app or game. Discover and rectify quality problems in testing and production and hear Maria’s insights into how Deliveroo has adapted to the new normal.

Mobile gaming offers developers of PC and console games a significant opportunity. By going mobile, game developers can expand their player base and drive retention by providing a platform for players to stay engaged while they’re on the move. Jen Donahoe, Marketing and Growth lead for TeamFight Tactics at Riot Games joins us in episode 14 to discuss the challenges and opportunities they had in taking their games mobile.

What makes retention so critical to the success of a business over other measures, and how do you optimize this strategy? We speak to Marcus Gners, Chief Strategy Officer and Co-founder at health and fitness app developer Lifesum to hear how about the models they use and how they approach habitual usage. In episode 15, alongside Marcus, we are joined by best-selling author of “Hooked” and “Indistractable,” Nir Eyal, to explore the behavior apps should foster to drive retention, and how to measure this effectively.

So as to not give the whole game away, we are keeping the details of our final episode under wraps, so keep an eye out for more details shortly.

The new episodes of the Apps, Games, & Insights podcast are sure to spark the interest of business and app or gaming enthusiasts, and developers, who want to get the inside scoop from industry experts on business strategies and their success stories, and how to create successful apps and games businesses in these rapidly changing times. We look forward to you joining us on this journey.

How to stay tuned in

To find out more about what’s coming, check out our Apps, Games, & Insights podcast homepage and find links to all the latest episodes.

Subscribe and listen to our first episode here, or on your favorite podcast platform including Google Podcasts, Spotify, Apple, Libsyn, Pocket Casts and Overcast, Deezer, and iHeartRadio.

Keep an eye out on @GooglePlayDev and @AndroidDev on Twitter where we will be announcing the launch of the new episodes each week.

How useful did you find this blog post?

November 4th 2020, 1:39 pm

MAD Skills Navigation Wrap-Up

Android Developers Blog

Posted by Chet Haase

It’s a Wrap!

We’ve just finished the first series in the MAD Skills series of videos and articles on Modern Android Development. This time, the topic was Navigation component, the API and tool that helps you create and edit navigation paths through your application.

The great thing about videos and articles is that, unlike performance art, they tend to stick around for later enjoyment. So if you haven’t had a chance to see these yet, check out the links below to see what we covered. Except for the Q&A episode at the end, each episode has essentially identical content in the video and article version, so use whichever format you prefer for content consumption.

Episode 1: Overview

The first episode provides a quick, high-level overview of Navigation Component, including how to create a new application with navigation capability (using Android Studio’s handy application templates), details on the containment hierarchy of a navigation-enabled UI, and an explanation of some of the major APIs and pieces involved in making Navigation Component work.

Or in article form:

Episode 2: Dialog Destinations

Episode 2 explores how to use the API to navigate to dialog destinations. Most navigation takes place between different fragment destinations, which are swapped out inside of the NavHostFragment object in the UI. But it is also possible to navigate to external destinations, including dialogs, which exist outside of the NavHostFragment.

Or in article form:

Episode 3: SafeArgs

This episode covers SafeArgs, the facility provided by Navigation component for easily passing data between destinations.

Or in article form:

Episode 4: Deep Links

This episode is on Deep Links, the facility provided by Navigation component for helping the user get to deeper parts of your application from UI outside the application.

Or in article form:

Episode 5: Live Q&A

Finally, to wrap up the series (as we plan to do for future series), I hosted a Q&A session with Ian Lake. Ian fielded questions from you on Twitter and YouTube, and we discussed everything from feature requests like multiple backstacks (spoiler: it’s in the works!) to Navigation support for Jetpack Compose (spoiler: the first version of this was just released!) to other questions people had about navigation, fragments, Up-vs-Back, saving state, and other topics. It was pretty fun — more like a podcast with cameras than a Q&A.

(There is no article for this one; enjoy the video above)

Sample App: DonutTracker

The application used for most of the episodes above is DonutTracker, an app that you can use for tracking important data about donuts you enjoy (or don’t). Or you can just use it for checking out the implementation details of these Navigation features; your choice.

November 4th 2020, 1:39 pm

Developer tips and guides: Common policy violations and how you can avoid them

Android Developers Blog

By Andrew Ahn, Product Manager, Google Play App Safety

At Google Play, we want to foster an ecosystem of safe, engaging, useful, and entertaining apps used and loved by billions of Android users worldwide. That’s why we regularly update and revise our Google Play Developer Policies and Developer Distribution Agreement, detailing the boundaries of app content and functionalities allowed on the platform, as well as providing latest guidance on how developers can promote and monetize apps.

In recent efforts in analyzing apps for policy compliance on Google Play we identified some common mistakes and violations that developers make, and we’re sharing these with the developer community with tips and guides on how to avoid them, mitigating the risks of apps and developer accounts being suspended for violating our policies.

Links that take users back to other apps on the Play Store

One of the most common mistakes we see are apps that have buttons and menus that link out to the Play Store -- either to apps by the same developer, or other apps that may be affiliated with the developer, but not being clear that these are ads or promotional links. Without this clarity, apps may get enforced for having deceptive / disguised ads. One of the ways to avoid such mistakes is by explicitly calling these out by labeling the buttons and links as ‘More Apps’, ‘More Games’, ‘Explore’, ‘Check out our other apps’, etc.

Example of app content that link out to app listing on Play

Spammy app descriptions

Another mistake we frequently observe is where developers ‘stuff’ keywords in the app description in hope for better discoverability and ranking against certain keywords and phrases. Text blocks or lists that contain repetitive or unrelated keywords or references violate our Store Listing and Promotion policy. Writing a clear app description intended and optimized for user’s readability and understanding is one of the best ways to avoid this violation.

Watch this video to learn how to avoid spammy store listings and efforts to artificially boost app visibility.

Abandoned and broken apps

There are apps that have been published by the developers a long time ago, and are no longer being maintained. Abandoned and unmaintained apps often create user experience issues -- broken app functionality, for example. Not only are such apps at risk of getting a low star rating and negative user reviews, they will also be flagged as violating the minimum functionality policy. To mitigate the negative impact to the developer reputation and app enforcement, consider unpublishing such apps from the Play Store. Note the updated unpublish action won’t affect existing users who already installed the app, and developers can always choose to re-publish them after addressing the broken experiences.

Example of an abandoned app that provides a broken app experience

Take the ‘Minimum and Broken Functionality Spam’ course on Play Academy

Apps vs. Webview

Lastly, we observe a large volume of app submissions that are just webviews of existing websites. Most of these apps are submitted with a primary purpose of driving traffic rather than providing engaging app experiences to Android users. Such apps are considered webview spam, and are removed from Play. Instead, consider thinking through what users can do or do better with the app than in a web experience and implement relevant features and functionalities that enrich the user experience.

Example of a webview without any app functionality

Take the ‘Webview Spam’ course on Play Academy

While the above are one of the most frequent mistakes, make sure to stay up to date with the latest policies by visiting the Play Developer Policy Center. Check out Google Play Academy’s Policy training, including our new Spam courses, and watch our Play PolicyBytes videos to learn more about recent policy updates.

October 16th 2020, 1:11 pm

Introducing the Android for Cars App Library

Android Developers Blog

Posted by Eric Bahna, Product Manager

In August, we announced plans to expand Android Auto’s app ecosystem to enable new navigation, parking, and electric vehicle charging apps. We’ve been hard at work collaborating with our early access partners to test and refine the Android for Cars App Library. Today, we’re releasing the library into an open beta, for any developer to use. This means you’ll now be able to design, develop, and test your navigation, parking or charging app on Android Auto. We’re looking forward to enabling Google Play Store publishing for your beta apps in the coming months.

Three of our early access partners: ChargePoint, SpotHero, and Sygic

The design phase is the time to familiarize yourself with our design guidelines and app quality guidelines. Driver safety is core to our mission and we want to help you optimize your app for the car.

When it comes time to build your app, our new library will hopefully make development easy. Get started with the developer guide and please give us feedback via our public issue tracker.

In the testing phase, see your app come alive on the Desktop Head Unit (DHU), our emulator that lets you simulate a car infotainment display. The DHU now supports multiple screen sizes, displaying information in the instrument cluster, and simulating vehicles with touchpad input.

The DHU simulating an instrument cluster, a widescreen head unit, and a touchpad

You can get started with the Android for Cars App Library here. We’re excited to see what you build next!

October 15th 2020, 3:02 pm

Optimize your app publishing process with new Google Play Console features

Android Developers Blog

Steve Suppe, Product Manager, Google Play

Publishing your app or game is one of the most important moments in your app’s lifecycle. You want everything to go smoothly, from making sure the production release is stable, to getting test releases out quickly, to getting your marketing message just right.

That’s why visibility is key. Knowing when your app is in review, when it’s been approved, and when it can go live on Google Play helps you set your own schedule.

Now, with two new features in the new Google Play Console, you can do just that. The Publishing overview page helps you better understand your publishing process and Managed publishing gives you better control of when your app updates go live on Google Play. When the new Play Console rolls out to everyone starting November 2, these features will be the recommended way to control your release timing, so let’s take a closer look.

Publishing overview

The new Publishing overview page displays all your recent changes to your releases, store listings, and more, including those that are currently being reviewed or processed by Google Play. For those of you with larger teams, this means you can now coordinate all your changes in one place and publish everything at the same time.

Unlike the developer activity log, the Publishing overview only shows changes that will be visible on Google Play, or what you’ve told us about how we should consider and review your app.

The “Changes in review” section lets you quickly see changes
that have not been published yet.

These changes are organized by the type of change or release track so it’s easy to understand at a glance.

Managed publishing

Many of you may be familiar with Timed publishing in the old Play Console. In the new Play Console, we’ve replaced Timed publishing with Managed publishing, to give you a clearer and more predictable publishing experience.

When you enable Managed publishing, approved changes will only go live when you decide instead of automatically after review and processing. This allows you to submit changes long before your intended release date, giving yourself time to review or make changes without sacrificing control over your publishing date.

See which changes have been reviewed and approved

When Managed publishing is on, the Publishing overview page contains two sections: one that shows which changes have been approved and are ready to publish, and another that shows changes that are still in review.

We’ve also made some improvements that many of you have been asking for:

See if Managed publishing is turned in the left-hand navigation menu

Soon, you’ll be able to see the Managed publishing icon in the left-hand nav next to Publishing overview. This way, you can tell Managed publishing is on from anywhere in the Play Console.

To learn more about publishing with the new Play Console, including scenarios when these features would be most useful, check out this course from Play Academy. And if you haven’t already, update to the new Play Console at and give Managed publishing a try.

How useful did you find this blog post?

October 14th 2020, 9:46 am

Android Studio 4.1

Android Developers Blog

Posted by Scott Swarthout, Product Manager

Today, we’re excited to release the stable version of Android Studio 4.1, with a set of features addressing common editing, debugging, and optimization use cases. A major theme for this release was helping you be more productive while using Android Jetpack libraries, Android’s suite of libraries to help developers follow best practices and write code faster. Based on your feedback we made a number of improvements to the code editing experience with IDE integrations for popular Android libraries.

Some highlights of Android Studio 4.1 include a new Database Inspector for querying your app’s database, support for navigating projects that use Dagger or Hilt for dependency injection, and better support for on-device machine learning with support for TensorFlow Lite models in Android projects. We’ve also made updates to Apply Changes to make deployment faster. Based on your feedback, we’ve made several changes to help game developers with a new native memory profiler and standalone profiling tools.

Product quality continues to be a major focus for the team, and we’ve been hard at work tracking down bugs and performance issues. We’ve heard from many developers that they liked the focus on better performance and reliability, so we’re happy to report that during this release cycle we’ve fixed 2,370 bugs and closed 275 public issues. We stay committed to maintaining high quality since we know that is key to your developer productivity.

Thank you to those who gave your early feedback in preview releases. Your feedback helped us iterate and improve features in Android Studio 4.1. If you are ready for the next stable release, and want to use a new set of productivity features, Android Studio 4.1 is ready to download for you to get started.

Below is a full list of new features in Android Studio 4.1, organized by key developer flows.


Material Design Components updates

Android Studio templates in the create New Project dialog now use Material Design Components (MDC) and conform to updated guidance for themes and styles by default. These changes will make it easier to use recommended material styling patterns and support modern UI features like dark themes.

Material Design Components updates in Project Templates

Updates include:


Database Inspector

We wanted to make it easier to inspect, query, and modify your app's databases using the new Database Inspector. To get started, deploy your app to a device running API level 26 or higher and select View > Tool Windows > Database Inspector from the menu bar. Whether your app uses the Jetpack Room library or the Android platform version of SQLite directly, you can now easily inspect databases and tables in your running app or run custom queries.

Because Android Studio maintains a live connection while you’re inspecting your app, you can also modify values using the Database Inspector and see those changes in your running app. If you use the Room persistence library, Android Studio also places run buttons next to each query in the code editor to help you quickly run queries you define in your @Query annotations. Learn more

Inspect, query, and modify your app’s databases with the Database Inspector

Run Android Emulator directly in Android Studio

You can now run the Android Emulator directly in Android Studio. Use this feature to conserve screen real estate, to navigate quickly between the emulator and the editor window using hotkeys, and to organize your IDE and emulator workflow in a single application window. You can manage snapshots and common emulator actions like rotating and taking screenshots from within Studio, but access to the full set of options still requires running the stable emulator. You can opt-in to use this feature by going to File → SettingsToolsEmulator Launch in Tool Window.

Run the Android Emulator inside of Android Studio

Dagger Navigation Support

Dagger is a popular library for dependency injection on Android. Android Studio makes it easier to navigate between your Dagger-related code by providing new gutter actions and extending support in the Find Usages window. For example, clicking on the gutter action next to a method that consumes a given type navigates you to the provider of that type. Conversely, clicking on the gutter action navigates you to where a type is used as a dependency. Android Studio also supports navigation actions for dependencies defined with the Jetpack Hilt library. Learn more.

Navigate between Dagger-related code with gutter actions

Use TensorFlow Lite models

Android developers are using machine learning to create innovative and helpful experiences. TensorFlow Lite is a popular library for writing mobile machine learning models, and we wanted to make it easier to import these models into Android apps. Similar to view binding, Android Studio generates easy-to-use classes so you can run your model with less code and better type safety. The current implementation of ML Model Binding supports image classification and style transfer models, provided they are enhanced with metadata.

To see the details for an imported model and get instructions on how to use it in your app, double-click the .tflite model file in your project to open the model viewer page. Learn more.

View TensorFlow Lite model metadata in Android Studio 4.1

Build & Test

Android Emulator - Foldable Hinge Support

Android Studio

In addition to recently adding 5G cellular testing support, we’ve added support for foldables in the Android emulator. With Android emulator 30.0.26 and above, you can configure foldable devices with a variety of fold designs and configurations. When a foldable device is configured, the emulator will publish hinge angle sensor updates and posture changes, so you can test how your app responds to these form factors. See the Developing for Android 11 with the Android Emulator blogpost to read more.

Apply Changes updates

Faster builds help developers make changes to their app more easily and quickly. To help you be more productive as you iterate on your app, we've made multiple enhancements to Apply Changes for devices running Android 11 or higher.

We've invested heavily in optimizing your iteration speed by developing a method to deploy and persist changes on a device without installing the application. After an initial deploy, subsequent deploys to Android 11 devices using either Apply Code Changes or Apply Changes and Restart Activity are now significantly faster. We’ve also added support for additional code changes in Apply Changes. Now if you add a method, you can deploy those changes to a running app by clicking either Apply Code Changes or Apply Changes and Restart Activity.

Export C/C++ dependencies from AARs

Android Gradle Plugin 4.0 added the ability to import Prefab packages in AAR dependencies. We wanted to extend the capability of this feature to support sharing native libraries as well. AGP version 4.1 enables exporting libraries from your external native build in an AAR for an Android Library project. To export your native libraries, add the following to the android block of your library project's build.gradle file:

buildFeatures {
    prefabPublishing true

prefab {
    mylibrary {
      headers "src/main/cpp/mylibrary/include"

    myotherlibrary {
        headers "src/main/cpp/myotherlibrary/include"

Symbolication for native crash reports

When a crash or ANR occurs in native code, the system produces a stack trace, which is a snapshot of the sequence of nested functions called in your program up to the moment it crashed. These snapshots can help you to identify and fix any problems in the source, but they must first be symbolicated to translate the machine addresses back into human-readable function names.

If your app or game is developed using native code, like C++, you can now upload debug symbols files to the Play Console for each version of your app. The Play Console uses these debug symbols files to symbolicate your app's stack traces, making it easier to analyze crashes and ANRs. To include debug symbols in your app bundle, add the following line to your project’s build.gradle file:

android.buildTypes.release.ndk.debugSymbolLevel = 'SYMBOL_TABLE'


System Trace UI improvements

In Android Studio 4.1 we’ve overhauled System Trace, an optimization tool that gives you a real-time look at how your app is using system resources. We made it easier to select a trace with box selection mode, added a new analysis tab, and added more frame rendering data to help you investigate rendering issues in your app’s UI. Learn more.

Box selection: In the Threads section, you can now drag your mouse to perform a box selection of a rectangular area, which you can zoom into by clicking the Zoom to Selection button on the top right (or use the M keyboard shortcut). When you drag and drop similar threads next to each other, you can select across multiple threads to inspect all of them at once.

Use box selection to more easily select traces.

Summary tab: The new Summary tab in the Analysis panel displays:

View aggregated statistics in the Summary tab

Display data: In the Display section, new timelines for SurfaceFlinger and VSYNC help you investigate rendering issues in your app's UI.

Standalone profilers

It's now possible to access the Android Studio Profilers in a separate window from the primary Android Studio window. This is useful when optimizing Android games built with other tools like Unity or Visual Studio.

To run the standalone profilers, do the following:

  1. Make sure the profilers in Android Studio are not already running on your system.
  2. Go to the installation directory and navigate to the bin directory:

Windows/Linux: <studio-installation-folder>\bin

macOS: <studio-installation-folder>/Contents/bin

  1. Depending on your OS, run profiler.exe or

The standalone profiler will allow you to connect to the Android emulator or any connected devices.

Optimize your app with the Standalone Android Studio Profilers

Native Memory Profiler

Tracking native memory usage is important for game developers and other developers using C++ to understand how to optimize their app’s memory consumption. The Android Studio Memory Profiler now includes a Native Memory Profiler for apps deployed to physical devices running Android 10 or later. The Native Memory Profiler tracks allocations/deallocations of objects in native code for a specific time period and provides information about total allocations and remaining system heap size.

To initiate a recording, click Record native allocations at the top of the Memory Profiler window:

View native memory allocations with the Native Memory Profiler

To recap, Android Studio 4.1 includes these new enhancements & features:



Build & Test


These materials are not sponsored by or affiliated with Unity Technologies or its affiliates. “Unity” is a trademark or registered trademark of Unity Technologies or its affiliates in the U.S. and elsewhere.

October 12th 2020, 1:15 pm

Announcing the launch of the Android Partner Vulnerability Initiative

Android Developers Blog

Posted by Kylie McRoberts, Program Manager and Alec Guertin, Security Engineer

Google’s Android Security & Privacy team has launched the Android Partner Vulnerability Initiative (APVI) to manage security issues specific to Android OEMs. The APVI is designed to drive remediation and provide transparency to users about issues we have discovered at Google that affect device models shipped by Android partners.

Another layer of security

Android incorporates industry-leading security features and every day we work with developers and device implementers to keep the Android platform and ecosystem safe. As part of that effort, we have a range of existing programs to enable security researchers to report security issues they have found. For example, you can report vulnerabilities in Android code via the Android Security Rewards Program (ASR), and vulnerabilities in popular third-party Android apps through the Google Play Security Rewards Program. Google releases ASR reports in Android Open Source Project (AOSP) based code through the Android Security Bulletins (ASB). These reports are issues that could impact all Android based devices. All Android partners must adopt ASB changes in order to declare the current month’s Android security patch level (SPL). But until recently, we didn’t have a clear way to process Google-discovered security issues outside of AOSP code that are unique to a much smaller set of specific Android OEMs. The APVI aims to close this gap, adding another layer of security for this targeted set of Android OEMs.

Improving Android OEM device security

The APVI covers Google-discovered issues that could potentially affect the security posture of an Android device or its user and is aligned to ISO/IEC 29147:2018 Information technology -- Security techniques -- Vulnerability disclosure recommendations. The initiative covers a wide range of issues impacting device code that is not serviced or maintained by Google (these are handled by the Android Security Bulletins).

Protecting Android users

The APVI has already processed a number of security issues, improving user protection against permissions bypasses, execution of code in the kernel, credential leaks and generation of unencrypted backups. Below are a few examples of what we’ve found, the impact and OEM remediation efforts.

Permission Bypass

In some versions of a third-party pre-installed over-the-air (OTA) update solution, a custom system service in the Android framework exposed privileged APIs directly to the OTA app. The service ran as the system user and did not require any permissions to access, instead checking for knowledge of a hardcoded password. The operations available varied across versions, but always allowed access to sensitive APIs, such as silently installing/uninstalling APKs, enabling/disabling apps and granting app permissions. This service appeared in the code base for many device builds across many OEMs, however it wasn’t always registered or exposed to apps. We’ve worked with impacted OEMs to make them aware of this security issue and provided guidance on how to remove or disable the affected code.

Credential Leak

A popular web browser pre-installed on many devices included a built-in password manager for sites visited by the user. The interface for this feature was exposed to WebView through JavaScript loaded in the context of each web page. A malicious site could have accessed the full contents of the user’s credential store. The credentials are encrypted at rest, but used a weak algorithm (DES) and a known, hardcoded key. This issue was reported to the developer and updates for the app were issued to users.

Overly-Privileged Apps

The checkUidPermission method in the PackageManagerService class was modified in the framework code for some devices to allow special permissions access to some apps. In one version, the method granted apps with the shared user ID any permission they requested and apps signed with the same key as the package any permission in their manifest. Another version of the modification allowed apps matching a list of package names and signatures to pass runtime permission checks even if the permission was not in their manifest. These issues have been fixed by the OEMs.

More information

Keep an eye out at for future disclosures of Google-discovered security issues under this program, or find more information there on issues that have already been disclosed.

Acknowledgements: Scott Roberts, Shailesh Saini and Łukasz Siewierski, Android Security and Privacy Team

October 2nd 2020, 1:17 pm

Answering your FAQs about Google Play billing

Android Developers Blog

Posted by Mrinalini Loew, Group Product Manager

We are committed to providing powerful tools and services to help developers build and grow their businesses while ensuring a safe, secure and seamless experience for users. Today we are addressing some of the most common themes we hear in feedback from developers. Below are a few frequently asked developer questions that we thought would also be helpful to address.

Q: Can I distribute my app via other Android app stores or through my website?

A: Yes, you can distribute your app however you like! As an open ecosystem, most Android devices come preinstalled with more than one store - and users can install others. Android provides developers the freedom and flexibility to distribute apps through other Android app stores, directly via websites, or device preloads, all without using Google Play’s billing system.

Q: What apps need to use Google Play's billing system?

A: All apps distributed on Google Play that are offering in-app purchases of digital goods need to use Google Play’s billing system. Our payments policy has always required this. Less than 3% of developers with apps on Play sold digital goods over the last 12 months, and of this 3%, the vast majority (nearly 97%) already use Google Play's billing. For those few developers that need to update their apps, they will have until September 30, 2021 to make those changes. New apps submitted after January 20, 2021 will need to be in compliance.

Q: Many businesses have needed to move their previously physical services online (e.g. digital live events). Will these apps need to use Google Play’s billing?

A: We recognize that the global pandemic has resulted in many businesses having to navigate the challenges of moving their physical business to digital and engaging audiences customers in a new way, for example, moving in-person experiences and classes online. For the next 12 months, these businesses will not need to comply with our payments policy, and we will continue to reassess the situation over the next year. For developers undergoing these changes, we're eager to hear from you and work with you to help you reach new users and grow your online businesses, while enabling a consistent and safe user experience online.

Q: Do Google’s apps have to follow this policy too?

A: Yes. Google Play’s developer policies - including the requirement that apps use Google Play’s billing system for in-app purchases of digital goods - apply to all apps on Play, including Google’s own apps.

Q: Can I communicate with my users about alternate ways to pay?

A: Yes. Outside of your app you are free to communicate with them about alternative purchase options. You can use email marketing and other channels outside of the app to provide subscription offers and even special pricing.

Q: Can I communicate with my users about promotions on other platforms?

A: Of course. We're an app developer too, and we know how important it is not to restrict your ability to communicate with your users. You can email them or otherwise communicate outside of the app information about your offerings, even if they are different on Google Play than in other places.

Q: Can I have different app features, prices and experience depending on the platform?

A: Yes. It is your service and business, it is up to you. We do not require parity across platforms. You can create different versions of your app to support different platforms, features and pricing models.

Q: Can I offer a consumption-only (reader) app on Play?

A: Yes. Google Play allows any app to be consumption-only, even if it is part of a paid service. For example, a user could login when the app opens and the user could access content paid for somewhere else.

Q: Does your billing policy change depending on what category my app is in?

A: No. Business or consumer apps, and verticals like music or email are all treated the same on Google Play.

Q: Can I offer my customers refunds directly?

A: Yes. We understand the importance of maintaining the relationship with your customers. You can continue to issue refunds to your customers and other customer support directly.

Q: Will Google Play allow cloud gaming apps?

A: Yes. Cloud game streaming apps that comply with Play’s policies from any developer are welcome on Google Play.

September 28th 2020, 1:10 pm

Listening to Developer Feedback to Improve Google Play

Android Developers Blog

Posted by Sameer Samat, Vice President, Product Management

Developers are our partners and by pairing their creativity and innovation with our platforms and tools, together we create delightful experiences for billions of people around the world. Listening carefully to their feedback is an important part of how we continue to make Android better with each release and improve how mobile app stores work. In an April 2019 blog post we shared some updates we made to Android APIs and Play Policies based on developer feedback. And today, we wanted to share some additional insights we’ve gained from developer feedback and how we’re taking that input to improve Google Play and Android. Some of the key themes we’ve heard include:

We’d like to share our perspective on each of these points.

Choice of stores

We believe that developers should have a choice in how they distribute their apps and that stores should compete for the consumer’s and the developer’s business. Choice has always been a core tenet of Android, and it’s why consumers have always had control over which apps they use, be it their keyboard, messaging app, phone dialer, or app store.

Android has always allowed people to get apps from multiple app stores. In fact, most Android devices ship with at least two app stores preinstalled, and consumers are able to install additional app stores. Each store is able to decide its own business model and consumer features. This openness means that even if a developer and Google do not agree on business terms the developer can still distribute on the Android platform. This is why Fortnite, for example, is available directly from Epic's store or from other app stores including Samsung's Galaxy App store.

That said, some developers have given us feedback on how we can make the user experience for installing another app store on their device even better. In response to that feedback, we will be making changes in Android 12 (next year’s Android release) to make it even easier for people to use other app stores on their devices while being careful not to compromise the safety measures Android has in place. We are designing all this now and look forward to sharing more in the future!

Clarity on billing policies

As we mentioned, each Android app store is able to decide its own business model and consumer features. For Google Play, users expect a safe, secure and seamless experience, and developers come to Play for powerful tools and services that help them build and grow their businesses. Our developer policies are designed to help us deliver on these expectations and Google Play's billing system is a cornerstone of our ongoing commitment. Consumers get the benefit of a trusted system that allows them to safely, securely, and seamlessly buy from developers worldwide. Google protects consumers’ payment info with multiple layers of security, using one of the world’s most advanced security infrastructures. For developers, Google Play’s billing system provides an easy way for billions of Android users to transact with them using their local, preferred method of payment.

We’ve always required developers who distribute their apps on Play to use Google Play’s billing system if they offer in-app purchases of digital goods, and pay a service fee from a percentage of the purchase. To be clear, this policy is only applicable to less than 3% of developers with apps on Google Play. We only collect a service fee if the developer charges users to download their app or they sell in-app digital items, and we think that is fair. Not only does this approach allow us to continuously reinvest in the platform, this business model aligns our success directly with the success of developers.

But we have heard feedback that our policy language could be more clear regarding which types of transactions require the use of Google Play’s billing system, and that the current language was causing confusion. We want to be sure our policies are clear and up to date so they can be applied consistently and fairly to all developers, and so we have clarified the language in our Payments Policy to be more explicit that all developers selling digital goods in their apps are required to use Google Play’s billing system.

Again, this isn’t new. This has always been the intention of this long standing policy and this clarification will not affect the vast majority of developers with apps on Google Play. Less than 3% of developers with apps on Play sold digital goods over the last 12 months, and of this 3%, the vast majority (nearly 97%) already use Google Play's billing. But for those who already have an app on Google Play that requires technical work to integrate our billing system, we do not want to unduly disrupt their roadmaps and are giving a year (until September 30, 2021) to complete any needed updates. And of course we will require Google’s apps that do not already use Google Play’s billing system to make the necessary updates as well.

Equal treatment

Our policies apply equally to all apps distributed on Google Play, including Google’s own apps. We use the same standards to decide which apps to promote on Google Play, whether they're third-party apps or our own apps. In fact, we regularly promote apps by Google’s competitors in our Editors Choice picks when they provide a great user experience. Similarly, our algorithms rank third-party apps and games using the same criteria as for ranking Google's own apps.

Communicating with customers

Developers have told us it is very important to be able to speak directly with their customers without significant restrictions. As app developers ourselves, we agree wholeheartedly and our policies have always allowed this.

That said, developers have asked whether they can communicate with their customers directly about pricing, offers, and alternative ways to pay beyond their app via email or other channels. To clarify, Google Play does not have any limitations here on this kind of communication outside of a developer’s app. For example, they might have an offering on another Android app store or through their website at a lower cost than on Google Play.

We understand the importance of maintaining the customer relationship. As such, we have also always allowed developers to issue refunds to their customers and provide other customer support directly.

Enabling innovation

Developers are coming up with cool things all the time. Using their feedback, we are always trying to adjust our approach to ensure that we continue to help enable new forms of innovation. For example, recent innovations in game streaming have generated new game experiences that are available on Google Play, including Microsoft’s recent launch of Xbox cloud gaming in the Xbox Game Pass Android app.

Keep the feedback coming

We really appreciate all the feedback we have received from our developer community and believe the Android ecosystem has never been a more exciting place to be.

It is exciting to see developers such as Duolingo, Truecaller, Hyperconnect,, and Viber be so successful and grow their business on Android and reach a diverse audience. These kinds of services delight consumers and we are thrilled to have built a platform that can support them.

We’ve also published some additional frequently asked developer questions here.

September 28th 2020, 1:10 pm

All developers will get the new Google Play Console on November 2, 2020

Android Developers Blog

Posted by Tom Grinsted, Product Manager, Google Play Console

We hope you’re enjoying the new Google Play Console. With over 350,000 people now using it as their default experience and thousands more providing feedback, the new Play Console is ready to come out of beta. Thank you to everyone who has helped to get it here. This means that the old Play Console will be discontinued starting November 2, 2020. After this date, you’ll be automatically directed to the new Play Console when you log into your account.

If you haven't tried it already, we recommend that you switch to the new version now. To get started, visit

The new Play Console’s responsive design means that you can use it across all of your devices. The new navigation makes it easier to find and understand important features, and we’ve added areas to help you better understand your release status, acquisition performance, and guidance on policy changes.

Thanks to your feedback, we’ve already made a lot of improvements:

To learn more about the new Play Console, you can:

Thank you for being a part of our community, and we hope you enjoy the new Play Console!

How useful did you find this blog post?

September 24th 2020, 9:14 am

Lockscreen and authentication improvements in Android 11

Android Developers Blog

As phones become faster and smarter, they play increasingly important roles in our lives, functioning as our extended memory, our connection to the world at large, and often the primary interface for communication with friends, family, and wider communities. It is only natural that as part of this evolution, we’ve come to entrust our phones with our most private information, and in many ways treat them as extensions of our digital and physical identities.

This trust is paramount to the Android Security team. The team focuses on ensuring that Android devices respect the privacy and sensitivity of user data. A fundamental aspect of this work centers around the lockscreen, which acts as the proverbial front door to our devices. After all, the lockscreen ensures that only the intended user(s) of a device can access their private data.

This blog post outlines recent improvements around how users interact with the lockscreen on Android devices and more generally with authentication. In particular, we focus on two categories of authentication that present both immense potential as well as potentially immense risk if not designed well: biometrics and environmental modalities.

The tiered authentication model

Before getting into the details of lockscreen and authentication improvements, we first want to establish some context to help relate these improvements to each other. A good way to envision these changes is to fit them into the framework of the tiered authentication model, a conceptual classification of all the different authentication modalities on Android, how they relate to each other, and how they are constrained based on this classification.

The model itself is fairly simple, classifying authentication modalities into three buckets of decreasing levels of security and commensurately increasing constraints. The primary tier is the least constrained in the sense that users only need to re-enter a primary modality under certain situations (for example, after each boot or every 72 hours) in order to use its capability. The secondary and tertiary tiers are more constrained because they cannot be set up and used without having a primary modality enrolled first and they have more constraints further restricting their capabilities.

  1. Primary Tier - Knowledge Factor: The first tier consists of modalities that rely on knowledge factors, or something the user knows, for example, a PIN, pattern, or password. Good high-entropy knowledge factors, such as complex passwords that are hard to guess, offer the highest potential guarantee of identity.

    Knowledge factors are especially useful on Android becauses devices offer hardware backed brute-force protection with exponential-backoff, meaning Android devices prevent attackers from repeatedly guessing a PIN, pattern, or password by having hardware backed timeouts after every 5 incorrect attempts. Knowledge factors also confer additional benefits to all users that use them, such as File Based Encryption (FBE) and encrypted device backup.

  2. Secondary Tier - Biometrics: The second tier consists primarily of biometrics, or something the user is. Face or fingerprint based authentications are examples of secondary authentication modalities. Biometrics offer a more convenient but potentially less secure way of confirming your identity with a device.

    We will delve into Android biometrics in the next section.

  3. The Tertiary Tier - Environmental: The last tier includes modalities that rely on something the user has. This could either be a physical token, such as with Smart Lock’s Trusted Devices where a phone can be unlocked when paired with a safelisted bluetooth device. Or it could be something inherent to the physical environment around the device, such as with Smart Lock’s Trusted Places where a phone can be unlocked when it is taken to a safelisted location.

    Improvements to tertiary authentication

    While both Trusted Places and Trusted Devices (and tertiary modalities in general) offer convenient ways to get access to the contents of your device, the fundamental issue they share is that they are ultimately a poor proxy for user identity. For example, an attacker could unlock a misplaced phone that uses Trusted Place simply by driving it past the user's home, or with moderate amount of effort, spoofing a GPS signal using off-the-shelf Software Defined Radios and some mild scripting. Similarly with Trusted Device, access to a safelisted bluetooth device also gives access to all data on the user’s phone.

    Because of this, a major improvement has been made to the environmental tier in Android 10. The Tertiary tier was switched from an active unlock mechanism into an extending unlock mechanism instead. In this new mode, a tertiary tier modality can no longer unlock a locked device. Instead, if the device is first unlocked using either a primary or secondary modality, it can continue to keep it in the unlocked state for a maximum of four hours.

A closer look at Android biometrics

Biometric implementations come with a wide variety of security characteristics, so we rely on the following two key factors to determine the security of a particular implementation:

  1. Architectural security: The resilience of a biometric pipeline against kernel or platform compromise. A pipeline is considered secure if kernel and platform compromises don’t grant the ability to either read raw biometric data, or inject synthetic data into the pipeline to influence an authentication decision.
  2. Spoofability: Is measured using the Spoof Acceptance Rate (SAR). SAR is a metric first introduced in Android P, and is intended to measure how resilient a biometric is against a dedicated attacker. Read more about SAR and its measurement in Measuring Biometric Unlock Security.

We use these two factors to classify biometrics into one of three different classes in decreasing order of security:

Each class comes with an associated set of constraints that aim to balance their ease of use with the level of security they offer.

These constraints reflect the length of time before a biometric falls back to primary authentication, and the allowed application integration. For example, a Class 3 biometric enjoys the longest timeouts and offers all integration options for apps, while a Class 1 biometric has the shortest timeouts and no options for app integration. You can see a summary of the details in the table below, or the full details in the Android Android Compatibility Definition Document (CDD).

1 App integration means exposing an API to apps (e.g., via integration with BiometricPrompt/BiometricManager, androidx.biometric, or FIDO2 APIs)

2 Keystore integration means integrating Keystore, e.g., to release app auth-bound keys

Benefits and caveats

Biometrics provide convenience to users while maintaining a high level of security. Because users need to set up a primary authentication modality in order to use biometrics, it helps boost the lockscreen adoption (we see an average of 20% higher lockscreen adoption on devices that offer biometrics versus those that do not). This allows more users to benefit from the security features that the lockscreen provides: gates unauthorized access to sensitive user data and also confers other advantages of a primary authentication modality to these users, such as encrypted backups. Finally, biometrics also help reduce shoulder surfing attacks in which an attacker tries to reproduce a PIN, pattern, or password after observing a user entering the credential.

However, it is important that users understand the trade-offs involved with the use of biometrics. Primary among these is that no biometric system is foolproof. This is true not just on Android, but across all operating systems, form-factors, and technologies. For example, a face biometric implementation might be fooled by family members who resemble the user or a 3D mask of the user. A fingerprint biometric implementation could potentially be bypassed by a spoof made from latent fingerprints of the user. Although anti-spoofing or Presentation Attack Detection (PAD) technologies have been actively developed to mitigate such spoofing attacks, they are mitigations, not preventions.

One effort that Android has made to mitigate the potential risk of using biometrics is the lockdown mode introduced in Android P. Android users can use this feature to temporarily disable biometrics, together with Smart Lock (for example, Trusted Places and Trusted Devices) as well as notifications on the lock screen, when they feel the need to do so.

To use the lockdown mode, users first need to set up a primary authentication modality and then enable it in settings. The exact setting where the lockdown mode can be enabled varies by device models, and on a Google Pixel 4 device it is under Settings > Display > Lock screen > Show lockdown option. Once enabled, users can trigger the lockdown mode by holding the power button and then clicking the Lockdown icon on the power menu. A device in lockdown mode will return to the non-lockdown state after a primary authentication modality (such as a PIN, pattern, or password) is used to unlock the device.

BiometricPrompt - New APIs

In order for developers to benefit from the security guarantee provided by Android biometrics and to easily integrate biometric authentication into their apps to better protect sensitive user data, we introduced the BiometricPrompt APIs in Android P.

There are several benefits of using the BiometricPrompt APIs. Most importantly, these APIs allow app developers to target biometrics in a modality-agnostic way across different Android devices (that is, BiometricPrompt can be used as a single integration point for various biometric modalities supported on devices), while controlling the security guarantees that the authentication needs to provide (such as requiring Class 3 or Class 2 biometrics, with device credential as a fallback). In this way, it helps protect app data with a second layer of defenses (in addition to the lockscreen) and in turn respects the sensitivity of user data. Furthermore, BiometricPrompt provides a persistent UI with customization options for certain information (for example, title and description), offering a consistent user experience across biometric modalities and across Android devices.

As shown in the following architecture diagram, apps can integrate with biometrics on Android devices through either the framework API or the support library (that is, androidx.biometric for backward compatibility). One thing to note is that FingerprintManager is deprecated because developers are encouraged to migrate to BiometricPrompt for modality-agnostic authentications.

Improvements to BiometricPrompt

Android 10 introduced the BiometricManager class that developers can use to query the availability of biometric authentication and included fingerprint and face authentication integration for BiometricPrompt.

In Android 11, we introduce new features such as the BiometricManager.Authenticators interface which allows developers to specify the authentication types accepted by their apps, as well as additional support for auth-per-use keys within the BiometricPrompt class.

More details can be found in the Android 11 preview and Android Biometrics documentation. Read more about BiometricPrompt API usage in our blog post Using BiometricPrompt with CryptoObject: How and Why and our codelab Login with Biometrics on Android.

September 22nd 2020, 3:49 pm

Introducing Android 11 on Android TV

Android Developers Blog

Posted by Wolfram Klein, Product Manager, Android TV

We’ve been turning it up to 11 all summer long, leading up to the launch of Android 11 on mobile. Now, following right behind the mobile release, we are launching Android 11 on Android TV to bring the latest platform features to the big screen.

Android 11 on Android TV introduces performance and privacy improvements, new features tailored for the TV, and updated developer tools, in addition to enabling many of the features we announced during the #11WeeksOfAndroid.

Foundational Improvements

Android TV continues to bring many of the benefits that come with the core Android update to the TV. With Android 11, performance improvements, like enhanced memory management, and privacy features, like one-time permissions, are introduced to make sure TV devices work quickly and securely.

Tailored for the TV

Android 11 emphasizes media by bringing support for Auto Low Latency Mode, and low latency media decoding, along with a new Tuner Framework with updated Media CAS support and extensions to the HAL implementation of HDMI CEC.

With extended gamepad support, silent boot mode for system updates, inactivity prompts, and OEM configurable wake keys, Android 11 allows greater control over TV functions. New framework functionality for managing System LEDs and physical microphone mute buttons also facilitate integrations for far-field microphone enabled devices.

Faster Testing

Testing on the TV is now easier than ever. The addition of test harness mode on Android TV and Play Store support in the Android TV Emulator help you seamlessly inspect your apps as you develop.

Android TV OEM partners will be launching and upgrading devices to Android 11 over the coming months. To help you test your Android TV app implementations for the next generation of devices, Android 11 will be available as a system update to ADT-3 devices today. To learn more about getting your Android TV app ready for Android 11, visit our developers page.

We're looking forward to seeing your apps on Android 11!

September 22nd 2020, 9:04 am

Improve Your Game with Texture Compression Format Targeting

Android Developers Blog

Posted by Yafit Becher, Program Manager & Dan Galpin, Developer Advocate

Play Asset Delivery downloads the best supported texture for the device

Google Play Asset Delivery allows you to publish an Android App Bundle to Google Play containing all the resources your game needs. It offers multiple delivery modes, auto-updates, compression, and delta patching, all hosted at no cost to you.

As of today, you can use Google Play Asset Delivery to include textures in multiple texture compression formats in your Android App Bundle and Google Play will automatically deliver the assets with the best supported texture compression format for each device. With Texture Compression Format Targeting, you can start using ASTC for devices that support it while falling back to ETC2/ETC1 to devices that don’t. The Adaptive Scalable Texture Compression (ASTC) format offers advantages, such as improved rendering performance, faster load times, a smaller in-memory footprint, better battery life, and improved visual quality. You can even dramatically reduce your download size and on-device footprint by optimizing the tradeoff between size and quality.

Higher bandwidth version of much of this information

Android App Bundle will be the required publishing format for all new games and apps as of August 2021, which means that Google Play Asset Delivery will be required for new games that want Google Play to host more than 150MB of assets. Texture format targeting provides value even for smaller games due to the advantages of newer texture compression formats.

Texture compression

Texture compression is a form of lossy image compression that allows the GPU to render directly from the compressed texture using specialized silicon blocks, reducing the texture memory and memory bandwidth required to render the texture. As GPUs have gotten more advanced, more sophisticated texture compression formats have been developed, but not all GPUs can take advantage of them.

ASTC was released in 2012 to give developers more flexibility in trading compression size vs image quality. It compresses using fixed 128-bit block sizes, but allows for variable block footprints from 4x4 (8 bits per texel) to 12x12 (.89 bits per texel).

Googleplex from Google Earth at 12x12 (.89 BPT), 6x5 (4.27 BPT), 4x4 (8 BPT)

This allows almost any type of texture to be used in compressed form, and allows for textures to occupy much less space in RAM — up to 36x less space compared to uncompressed 2D textures depending on quality. Smaller textures also take less time to load, making games start faster.

Memory bandwidth

Since the GPU needs to do fewer reads from texture memory in order to render the texture, the memory bandwidth required to render the scene is reduced, often substantially when texture caches are taken into account.

Texture compression formats in Android

The top compression formats in Android are ETC1, ETC2, and ASTC.

Top texture compression formats with device penetration as of September 2020

ETC1 is supported on practically all devices. It has no transparency support; games can use a second texture for the alpha component. It has quality issues with sharp transitions such as edges and text.

ETC2 is supported by all devices that support GLES3. It supports multiple transparency modes and improves quality compared to ETC1.

ASTC is a more recent format that's more flexible; it supports many different kinds of textures, allowing for just about any texture in your game to benefit from compression. In addition, it supports various block sizes with different associated compression ratios. Using this format is a good way to optimize the size, image quality, and performance of your game.

When experimenting with ASTC on Asphalt Xtreme Gameloft found that they could reduce the size of their game by up to 30%

Using texture compression format targeting

Once you've implemented Google Play Asset Delivery in your game, adding texture format targeting is an incremental step. Inside your asset packs, make sure you have a directory that holds just your textures, such as [assetpackname]/textures. This directory will be used to hold default textures (probably in ETC1 or ETC2 format).

Then, create additional texture directories with a suffix representing the additional formats you wish to support.


Finally, update your app build.gradle file to enable texture splits in asset packs:

// In the app build.gradle file:
android {
    bundle {
        texture {
            enableSplit true

Google Play strips off the texture suffixes so your game reads its assets from the default directory, regardless of what textures are delivered to the device.

If you're using Unity, our Play Asset Delivery plugin for Unity is ready to create app bundles with texture-targeted packs.

Texture compression format targeting is available now

We're committed to helping you serve your entire game through Play with customized dynamic delivery and features such as texture compression format targeting. Documentation at will walk you through the integration process depending on the game engine you use. We have more information on all of our game related developer resources at and stay up to date with Google Play Asset Delivery and other game developer tools by signing up for the games quarterly newsletter.

September 21st 2020, 12:33 pm

Android GPU Inspector Open Beta

Android Developers Blog

Posted by Jay Kong, Gaming and Graphics Product Manager

With the rollout of Android 11 on Pixel, Android GPU Inspector (AGI) has graduated from a limited developer preview to an open beta. During the preview, AGI has been helpful in finding performance bottlenecks for developers we've been working with, and we're looking forward to hearing your feedback.

What is Android GPU Inspector?

AGI is a graphics profiling tool that allows you to look into the GPU of Android devices to better understand graphics bottlenecks and optimize the performance of games and apps that leverage 3D graphics APIs. It shows a timeline of events for your running game or app, which includes system activities, high frequency GPU hardware counters, and, if you are using Vulkan, GPU activity information.

What devices can I use it on?

AGI relies on updated firmware and video drivers to get information it needs; the first devices to support it are the Pixel 4 and 4XL running Android 11. While we are working with device manufacturers and SoC vendors to enable more supported devices, the key insight we’ve learned on our journey is that being able to look into the GPU—even on a single device—creates a lot of value.

Working with Blizzard Entertainment Inc. and NetEase, Inc., AGI helped pinpoint 45% vertex bandwidth savings for the upcoming Diablo Immortal, a dark gothic action RPG game.

Diablo: Immortal

Working with King, AGI helped improve GPU frame time from 11-16ms to a stable 8ms for the upcoming Crash Bandicoot: On the Run!, allowing the game to reduce battery drain and run faster for a smoother experience.

Crash Bandicoot: On The Run

In collaboration with Jam City, AGI helped reduce GPU frametime by 45% on World War Doh: Real Time PvP.

World War Doh: Real Time PvP

Optimization tutorials

Stay tuned for more information on how to use the tool and address common issues we’ve seen when working with real games. We’ll begin by demonstrating using AGI to indicate optimizations to make in your game’s textures.

You can also read about this topic on Medium, here.

How do I get started?

You can download AGI here, and the setup instructions are here.

To learn about new device support, you can check this page. Stay up to date with AGI and all of our game developer tools by signing up for the games quarterly newsletter.

September 14th 2020, 3:08 pm

Turning it up to 11: Android 11 for developers

Android Developers Blog

Posted by Stephanie Cuthbertson, Director, Product Management

Android 11 is here! Today we’re pushing the source to the Android Open Source Project (AOSP) and officially releasing the newest version of Android. We built Android 11 with a focus on three themes: a People-centric approach to communication, Controls to let users quickly get to and control all of their smart devices, and Privacy to give users more ways to control how data on devices is shared. Read more in our Keyword post.

For developers, Android 11 has a ton of new capabilities. You’ll want to check out conversation notifications, device and media controls, one-time permissions, enhanced 5G support, IME transitions, and so much more. To help you work and develop faster, we also added new tools like compatibility toggles, ADB incremental installs, app exit reasons API, data access auditing API, Kotlin nullability annotations, and many others. We worked to make Android 11 a great release for you, and we can’t wait to see what you’ll build!

Watch for official Android 11 coming to a device near you, starting today with Pixel 2, 3, 3a, 4, and 4a devices. To get started, visit the Android 11 developer site.

People, Controls, Privacy


Android 11 is people-centric and expressive, reimagining the way we have conversations on our phones, and building an OS that can recognize and prioritize the most important people in our lives. For developers, Android 11 helps you build deeper conversational and personal interactions into your apps.

Bubbles and people-centric conversations.


Android 11 lets users quickly get to and control all of their smart devices in one space. Developers can use new APIs to help users surface smart devices and control media:

Device controls and media controls.


In Android 11, we’re giving users even more control and transparency over sensitive permissions and working to keep devices more secure through faster updates.

One-time permission - Now users can give an app access to the device microphone, camera, or location, just for one time. The app can request permissions again the next time the app is used. More here.

One-time permission dialog in Android 11.

Background location - Background location now requires additional steps from the user beyond granting a runtime permission. If your app needs background location, the system will ensure that you first ask for foreground location. You can then broaden your access to background location through a separate permission request, and the system will take the user to Settings to complete the permission grant.

Also note that in February we announced that Google Play developers will need to get approval to access background location in their app to prevent misuse. We're giving developers more time to make changes and won't be enforcing the policy for existing apps until 2021.

Permissions auto-reset - if users haven’t used an app for an extended period of time, Android 11 will “auto-reset” all of the runtime permissions associated with the app and notify the user. The app can request the permissions again the next time the app is used. More here.

Scoped storage - We’ve continued our work to better protect app and user data on external storage, and made further improvements to help developers more easily migrate. More here.

Google Play system updates - Launched last year, Google Play system updates help us expedite updates of core OS components to devices in the Android ecosystem. In Android 11, we more than doubled the number of updatable modules, including 12 new modules that will help improve privacy, security, and consistency for users and developers.

BiometricPrompt API - Developers can now use the BiometricPrompt API to specify the biometric authenticator strength required by their app to unlock or access sensitive parts of the app. For backward compatibility, we’ve just added these capabilities to the Jetpack Biometric library. We’ll share further updates as the work progresses.

Identity Credential API - This will unlock new use cases such as mobile drivers licences, National ID, and Digital ID. We’re working with various government agencies and industry partners to make sure that Android 11 is ready for digital-first identity experiences.

You can read about all of the Android 11 privacy features here.

Helpful innovation

Enhanced 5G support - Android 11 includes updated developer support to help you take advantage of the faster speeds and lower latency of 5G networks. You can learn when the user is connected to a 5G network, check whether the connection is metered, and get an estimate of the connection bandwidth. To help you build experiences now for 5G, we’ve also added 5G support in the Android Emulator. To get started with 5G on Android, visit the 5G developer page.

Moving beyond the home, 5G can for example let you enhance your “on-the-go” experience by providing seamless interactions with the world around you from friends and family to businesses.

New screen types - Device makers are continuing to innovate by bringing exciting new device screens to market, such as hole-punch and waterfall screens. Android 11 adds support for these in the platform, with APIs to let you optimize your apps. You can manage both hole-punch and waterfall screens using the existing display cutout APIs. You can set a new window layout attribute to use the entire waterfall screen, and a new waterfall insets API helps you manage interaction near the edges.

Call screening support - Android 11 helps call-screening apps do more to manage robocalls. Apps can verify an incoming call’s STIR/SHAKEN status (standards that protect against caller ID spoofing) as part of the call details, and they can report a call rejection reason. Apps can also customize a system-provided post call screen to let users perform actions such as marking a call as spam or adding to contacts.

Polish and quality

OS resiliency - In Android 11 we’ve made the OS more dynamic and resilient as a whole by fine-tuning memory reclaiming processes, such as forcing user-imperceptible restarts of processes based on RSS HWM thresholds. Also, to improve performance and memory, Android 11 adds Binder caching, which optimizes highly used IPC calls to system services by caching data for those that retrieve relatively static data. Binder caching also improves battery life by reducing CPU time.

Synchronized IME transitions - New APIs let you synchronize your app’s content with the IME (input method editor, or on-screen keyboard) and system bars as they animate on and offscreen, making it much easier to create natural, intuitive and jank-free IME transitions. For frame-perfect transitions, a new WindowInsetsAnimation.Callback API notifies apps of per-frame changes to insets while the system bars or the IME animate. Additionally, you can use a new WindowInsetsAnimationController API to control system UI types like system bars, IME, immersive mode, and others. More here.

Synchronized IME transition through insets animation listener.

App-driven IME experience through WindowInsetsAnimationController.

HEIF animated drawables - The ImageDecoder API now lets you decode and render image sequence animations stored in HEIF files, so you can make use of high-quality assets while minimizing impact on network data and APK size. HEIF image sequences can offer drastic file-size reductions for image sequences when compared to animated GIFs.

Native image decoder - New NDK APIs let apps decode and encode images (such as JPEG, PNG, WebP) from native code for graphics or post processing, while retaining a smaller APK size since you don’t need to bundle an external library. The native decoder also takes advantage of Android’s process for ongoing platform security updates. See the NDK sample code for examples of how to use the APIs.

Low-latency video decoding in MediaCodec - Low latency video is critical for real-time video streaming apps and services like Stadia. Video codecs that support low latency playback return the first frame of the stream as quickly as possible after decoding starts. Apps can use new APIs to check and configure low-latency playback for a specific codec.

Variable refresh rate - Apps and games can use a new API to set a preferred frame rate for their windows. Most Android devices refresh the display at 60Hz refresh rate, but some support multiple refresh rates, such as 90Hz as well as 60Hz, with runtime switching. On these devices, the system uses the app’s preferred frame rate to choose the best refresh rate for the app. The API is available in both the SDK and NDK. See the details here.

Dynamic resource loader - Android 11 includes a new public API to let apps load resources and assets dynamically at runtime. With the Resource Loader framework you can include a base set of resources in your app or game and then load additional resources, or modify the loaded resources, as needed at runtime.

Neural Networks API (NNAPI) 1.3 - We continue to add ops and controls to support machine learning on Android devices. To optimize common use-cases, NNAPI 1.3 adds APIs for priority and timeout, memory domains, and asynchronous command queue. New ops for advanced models include signed integer asymmetric quantization, branching and loops, and a hard-swish op that helps accelerate next-generation on-device vision models such as MobileNetV3.

Developer friendliness

App compatibility tools - We worked to minimize compatibility impacts on your apps by making most Android 11 behavior changes opt-in, so they won’t take effect until you change the apps’ targetSdkVersion to 30. If you are distributing through Google Play, you’ll have more than a year to opt-in to these changes, but we recommend getting started testing early. To help you test, Android 11 lets you enable or disable many of the opt-in changes individually. More here.

App exit reasons - When your app exits, it’s important to understand why the app exited and what the state was at the time -- across the many device types, memory configurations, and user scenarios that your app runs in. Android 11 makes this easier with an exit reasons API that you can use to request details of the app’s recent exits.

Data access auditing - data access auditing lets you instrument your app to better understand how it accesses user data and from which user flows. For example, it can help you identify any inadvertent access to private data in your own code or within any SDKs you might be using. More here.

ADB Incremental - Installing very large APKs with ADB (Android Debug Bridge) during development can be slow and impact your productivity, especially those developers working on Android Games. With ADB Incremental in Android 11, installing large APKs (2GB+) from your development computer to an Android 11 device is up to 10x faster. More here.

Kotlin nullability annotations - Android 11 adds nullability annotations to more methods in the public API. And, it upgrades a number of existing annotations from warnings to errors. These help you catch nullability issues at build time, rather than at runtime. More here.

Get your apps ready for Android 11

With Android 11 on its way to users, now is the time to finish your compatibility testing and publish your updates.

Here are some of the top behavior changes to watch for (these apply regardless of your app’s targetSdkVersion):

Android 11 also includes opt-in behavior changes - these affect your app once it’s targeting the new platform. We recommend assessing these changes as soon as you’ve published the compatible version of your app. For more information on compatibility testing and tools, check out the resources we shared for Android 11 Compatibility week and visit the Android 11 developer site for technical details.

Enhance your app with new features and APIs

Next, when you're ready, dive into Android 11 and learn about the new features and APIs that you can use. Here are some of the top features to get started with.

We recommend these for all apps:

We recommend these if relevant for your app:

Read more about all of the Android 11 features at

Coming to a device near you!

Android 11 will begin rolling out today on select Pixel, OnePlus, Xiaomi, OPPO and realme phones, with more partners launching and upgrading devices over the coming months. If you have a Pixel 2, 3, 3a, 4, or 4a phone, including those enrolled in this year’s Beta program, watch for the over-the-air update arriving soon!

Android 11 factory system images for Pixel devices are also available through the Android Flash Tool, or you can download them here. As always, you can get the latest Android Emulator system images via the SDK Manager in Android Studio. For broader testing on other Treble-compliant devices, Generic System Images (GSI) are available here.

If you're looking for the Android 11 source code, you'll find it here in the Android Open Source Project repository under the Android 11 branches.

What’s next?

We’ll soon be closing the preview issue tracker and retiring open bugs logged against Developer Preview or Beta builds, but please keep the feedback coming! If you still see an issue that you filed in the preview tracker, just file a new issue against Android 11 in the AOSP issue tracker.

Thanks again to the many developers and early adopters who participated in the preview program this year! You gave us great feedback to help shape the release, and you filed thousands of issues that have made Android 11 a better platform for everyone.

We're looking forward to seeing your apps on Android 11!

September 8th 2020, 1:21 pm

Prefer Storing Data with Jetpack DataStore

Android Developers Blog

Posted by Florina Muntenescu, Android Developer Advocate, Rohit Sathyanarayana, Software Engineer

Welcome Jetpack DataStore, now in alpha - a new and improved data storage solution aimed at replacing SharedPreferences. Built on Kotlin coroutines and Flow, DataStore provides two different implementations: Proto DataStore, that lets you store typed objects (backed by protocol buffers) and Preferences DataStore, that stores key-value pairs. Data is stored asynchronously, consistently, and transactionally, overcoming most of the drawbacks of SharedPreferences.

SharedPreferences vs DataStore

* SharedPreferences has a synchronous API that can appear safe to call on the UI thread, but which actually does disk I/O operations. Furthermore, apply() blocks the UI thread on fsync(). Pending fsync() calls are triggered every time any service starts or stops, and every time an activity starts or stops anywhere in your application. The UI thread is blocked on pending fsync() calls scheduled by apply(), often becoming a source of ANRs.

** SharedPreferences throws parsing errors as runtime exceptions.

In both implementations, DataStore saves the preferences in a file and performs all data operations on Dispatchers.IO unless specified otherwise.

While both Preferences DataStore and Proto DataStore allow saving data, they do this in different ways:

Room vs DataStore

If you have a need for partial updates, referential integrity, or support for large/complex datasets, you should consider using Room instead of DataStore. DataStore is ideal for small , simple datasets and does not support partial updates or referential integrity.

Using DataStore

Start by adding the DataStore dependency. If you’re using Proto DataStore, make sure you also add the proto dependency:

// Preferences DataStore
implementation "androidx.datastore:datastore-preferences:1.0.0-alpha01"

// Proto DataStore
implementation  "androidx.datastore:datastore-core:1.0.0-alpha01"

When working with Proto DataStore, you define your schema in a proto file in the app/src/main/proto/ directory. See the protobuf language guide for more information on defining a proto schema.

syntax = "proto3";

option java_package = "<your package name here>";
option java_multiple_files = true;

message Settings {
  int my_counter = 1;

Create the DataStore

Create the DataStore with the Context.createDataStore() extension functions.

// with Preferences DataStore
val dataStore: DataStore<Preferences> = context.createDataStore(
    name = "settings"

If you’re using Proto DataStore, you’ll also have to implement the Serializer interface to tell DataStore how to read and write your data type.

object SettingsSerializer : Serializer<Settings> {
    override fun readFrom(input: InputStream): Settings {
        try {
            return Settings.parseFrom(input)
        } catch (exception: InvalidProtocolBufferException) {
            throw CorruptionException("Cannot read proto.", exception)

    override fun writeTo(t: Settings, output: OutputStream) = t.writeTo(output)

// with Proto DataStore
val settingsDataStore: DataStore<Settings> = context.createDataStore(
    fileName = "settings.pb",
    serializer = SettingsSerializer

Read data from DataStore

DataStore exposes the stored data in a Flow, either in a Preferences object or as the object defined in your proto schema. DataStore ensures that data is retrieved on Dispatchers.IO so your UI thread isn’t blocked.

With Preferences DataStore:

val MY_COUNTER = preferencesKey<Int>("my_counter")
val myCounterFlow: Flow<Int> =
     .map { currentPreferences ->
        // Unlike Proto DataStore, there's no type safety here.
        currentPreferences[MY_COUNTER] ?: 0   

With Proto DataStore:

val myCounterFlow: Flow<Int> =
    .map { settings ->
        // The myCounter property is generated for you from your proto schema!

Write data to DataStore

To write data, DataStore offers a suspending DataStore.updateData() function that gives you the current state of the stored data as a parameter—either as a Preferences object, or an instance of the object defined in the proto schema. The updateData() function updates the data transactionally in an atomic read-write-modify operation. The coroutine completes once the data is persisted on disk.

Preferences DataStore also provides a DataStore.edit() function to make it easier to update data. Instead of receiving a Preferences object, you receive a MutablePreferences object which you edit. As with updateData(), the changes are applied to disk after the transform block completes, and the coroutine completes once data is persisted to disk.

With Preferences DataStore:

suspend fun incrementCounter() {
    dataStore.edit { settings ->
        // We can safely increment our counter without losing data due to races!
        val currentCounterValue = settings[MY_COUNTER] ?: 0
        settings[MY_COUNTER] = currentCounterValue + 1

With Proto DataStore:

suspend fun incrementCounter() {
    settingsDataStore.updateData { currentSettings ->
        // We can safely increment our counter without losing data due to races!
            .setMyCounter(currentSettings.myCounter + 1)

Migrate from SharedPreferences to DataStore

To migrate from SharedPreferences to DataStore, you need to pass in a SharedPreferencesMigration object to the DataStore builder. DataStore can automatically migrate from SharedPreferences to DataStore for you. Migrations are run before any data access can occur in DataStore. This means that your migration must have succeeded before returns any values and before DataStore.updateData() can update the data.

If you’re migrating to Preferences DataStore, you can use the default SharedPreferencesMigration implementation and just pass in the name used to construct your SharedPreferences.

With Preferences DataStore:

val dataStore: DataStore<Preferences> = context.createDataStore(
    name = "settings",
    migrations = listOf(SharedPreferencesMigration(context, "settings_preferences"))

When migrating to Proto DataStore, you’ll have to implement a mapping function that defines how to migrate from the key-value pairs used by SharedPreferences to the DataStore schema you defined.

With Proto DataStore:

val settingsDataStore: DataStore<Settings> = context.createDataStore(
    produceFile = { File(context.filesDir, "settings.preferences_pb") },
    serializer = SettingsSerializer,
    migrations = listOf(
        ) { sharedPrefs: SharedPreferencesView, currentData: UserPreferences ->
            // Map your sharedPrefs to your type here


SharedPreferences comes with several drawbacks: a synchronous API that can appear safe to call on the UI thread, no mechanism for signaling errors, lack of transactional API, and more. DataStore is a replacement for SharedPreferences that addresses most of these shortcomings. DataStore includes a fully asynchronous API using Kotlin coroutines and Flow, handles data migration, guarantees data consistency, and handles data corruption.

As DataStore is still in alpha, we need your help to make it better! To get started, find out more about DataStore in our documentation and try it out by taking our codelabs: Preferences DataStore codelab and Proto DataStore codelab. Then, let us know how we can improve the library by creating issues on the Issue Tracker.

September 2nd 2020, 1:05 pm

11 Weeks of Android: That’s a wrap

Android Developers Blog

This is the final blog post for #11WeeksOfAndroid. Thank you for joining us over the past 11 weeks as we dove into key areas of Android development. In case you missed it, here’s a recap of everything we talked about during each week:

Week 1 - People and identity

Discover how to implement the conversation shortcut and bubbles with ‘conversation notifications’. Also, learn more about conversation additions and other System UI news, and discover the people and conversations developer documentation here. Finally, you can also listen to the Android Backstage podcast where the System UI team is interviewed on people and bubbles.

To tackle user and developer complexity that makes identity a challenge for developers, we've been working on One Tap and Block Store, part of our new Google Identity Services Library.

If you’re interested in learning more about Identity, we published the video “in Identity on Android: what’s new in sign-in,” where Vishal explains the new libraries in the Google Identity System.

Two teams that worked very early with us are the Facebook Messenger team and the direct messaging team from Twitter. Read the story from Twitter here and find out how we worked with Facebook on the implementation here.

Find out more with the People and Identity learning path, playlist, and the week’s wrap-up blog post.

Week 2 - Machine learning

We kicked off the week by announcing the winners of the #AndroidDevChallenge! Check out all the winning apps and see how they used ML Kit and TensorFlow Lite, all focused on demonstrating how machine learning can come to life in a powerful way to help users get things done, like an app to help visually impaired navigate crowded spaces or another to help students learn sign language.

We recently made ML Kit a standalone SDK and it no longer requires a Firebase account. Just one line in your build.gradle file and you can start bringing ML functionality into your app.

Another much anticipated addition is the support for swapping Google models with your own for both Image Labeling as well as Object Detection and Tracking.

Find out about the importance of finding the unique intersection of user problems and ML strengths and how the People + AI Guidebook can help you make ML product decisions. Check out the interview with the Read Along team for more inspiration.

This week we also highlighted how adding a custom model to your Android app has never been easier.

Finally, try out our codelabs:

Find out more with the Machine Learning pathway, playlist, and the week’s wrap-up blog post.

Week 3 - Privacy and security

As shared in the “Privacy and Security” blog post, we’re giving users even more control and transparency over user data access.

In Android 11, we introduced various privacy improvements such as one time permissions that let users give an app access to the device microphone, camera, or location, just that one time. Learn more about building privacy-friendly apps with these new changes. You can also learn about various Android security updates in this video.

Other notable updates include:

Find out more with the ‘privacy, trust and security’ learning pathway, playlist, and documentation on privacy and security best practices.

Week 4 - Android 11 compatibility

We shipped the second Beta of Android 11 and added a new release milestone called Platform Stability to clearly signal to developers that all APIs and system behaviors are complete. Find out more about Beta 2 and platform stability, including what this milestone means for developers, and the Android 11 timeline. Note: since week #4, we shipped the third and final beta and are getting close to releasing Android 11 to AOSP and the ecosystem. Be sure to check that your apps are working!

To get your apps ready for Android 11, check out some of these helpful resources:

In our “Accelerating Android updates” blog post, we looked at how we’re continuing to get the latest OS to reach critical mass by expanding Android’s updatability architecture.

We also highlighted Excelliance Tech, who recently moved their LeBian SDK away from non-SDK interfaces, toward stable, official APIs so they can stay more compatible with the Android OS over time. Check out the Excelliance Tech story.

Find out more with the Android 11 Compatibility learning pathway, playlist, and the week’s wrap-up blog post.

Week 5 - Languages

With the Android 11 beta, we further improved the developer experience for Kotlin on Android by officially recommending coroutines for asynchronous work. If you’re new to coroutines, check out:

Also, check out our new Kotlin case studies page for the latest case studies and data, including the new Google Home case study, and our state of Kotlin on Android video. For beginners, we announced the launch of our new Android basics in Kotlin course.

If you’re a Java language developer, watch support for newer Java APIs on how we’ve made newer OpenJDK libraries available across versions of Android. With Android 11, we also updated the Android runtime to make app startup even faster with I/O prefetching.

Android 11 included updates across the native toolchain, including better tools for profile-guided optimization (PGO) and improvements to native dependency management in Android Studio 4.0.

Finally, we continue to focus on improvements to the D8 and R8 compilers in Android Studio with better support for Kotlin in the R8 shrinker. Learn more.

Find out more with the languages learning pathway, playlist, and the week’s wrap-up blog post.

Week 6 - Android Jetpack

Interested in what’s new in Jetpack? Check out the #Android11 Beta launch with a quick fly-by introducing many of the updates to our libraries, with tips on how to get started.

This year, we've made several major improvements with the release of Navigation 2.3, which allows you to navigate between different screens of your app with ease while also allowing you to follow Android UI principles.

In Android 11, we continued our work to give users even more control over sensitive permissions. Now there are type-safe contracts for common intents and more via new ActivityResult APIs. These changes simplify how you request permissions, and we’ll continue to work on making permissions easier in the future.

Also learn about our recent releases of the AppStartup library as well as what’s new in WorkManager.

Find out more with the Jetpack learning pathway, playlist, and the week’s wrap-up blog post.

Week 7 - Android developer tools

We have brought together an overview of what is new in Android Developer tools.

Check out the latest updates in design tools, and go even deeper:

Also, find out about debugging your layouts, with updates to the layout inspector. Discover the latest developments for Jetpack Compose Design tools, and also how to use the new database inspector in Android Studio.

Discover the latest development tools we have in place for Jetpack Hilt in Android Studio.

Learn about the build system in Android developer tools:

To learn about the latest updates on virtual testing, read this blog on the Android Emulator. Lastly, to see the latest changes for performance tools, watch performance profilers content about System Trace. Additionally, check out more about C++ memory profiling with Android Studio 4.1.

Find out more with the Android developer tools learning pathway, playlist, and the week’s wrap-up blog post.

Week 8 - App distribution and monetization

Check out our webinars about the new Google Play Console beta if you weren’t able to tune in live.

We shared recent improvements we’ve made to app bundles, as well as our intention to require new apps and games to publish with this format in the second half of 2021. The new in-app review API means developers can now ask for ratings and reviews from within your app!

Don’t forget about our policy around more transparent subscriptions to help increase user trust in Google Play Billing. We also expanded our feature set to help you better reach and retain buyers, and launched Play Billing Library 3, which will be required by mid-2021.

Google Play Pass launched in nine new markets last month. Developers using both Google Play Pass and direct billing on Google Play have earned an average of 2.5 times US revenue with Google Play Pass, without diminishing Google Play store earnings. Learn more and express interest in joining.

Find out more with the app distribution and monetization learning pathway, playlist, and the week’s wrap-up blog post.

Week 9 - Android beyond phones

Check out some of the highlights from this week, including;

Find out more with the learning pathways for Android TV and Large Screens, Beyond phones playlist, and the week’s wrap-up blog post.

Week 10 - Games and media

We shared several games updates and presented a special "11 Weeks" episode of The Android Game Developer Show.

You can also take advantage of Android 11's new media controls by making sure your app is using MediaStyle with a valid MediaSession token. Learn how to support media resumption by making your app discoverable with a MediaBrowserServiceCompat, using the EXTRA_RECENT hint to help with resuming content, and handling the onPlay and onGetRoot callbacks. Then check out how to leverage the MediaRouter jetpack library and check out the updated version of the UAMP sample.

Finally, we covered some of the primary ways apps can benefit from 5G. Android 11 adds new APIs and updates existing APIs to help ensure you have all the tools you need to leverage the capabilities of 5G, such as an enhanced bandwidth estimation API, 5G detection capabilities, and a new meteredness flag from cellular carriers. The Android emulator now enables you to develop and test these APIs without needing a 5G device or network connection. All of this and more is available from our dedicated 5G page.

Find out more with the ‘games and media’ learning pathway, playlist, and the wrap-up blog post, and visit to stay up to date on all of our tools and resources for game developers.

Week 11 - UI

In our final week, we released 4 new codelabs, 9 new samples, new documentation and a podcast from the Compose team. If you prefer videos; we’ve got you covered:

New in Android 11 is the ability for apps to create seamless transitions between the on screen keyboard being opened and closed. To find out how to add this to your app, slide on over to the video, blog posts and sample app

We recommend following the Material Design guidelines to ensure that apps operate consistently, enabling patterns learned in one app to be used in another. Find out more about Material Theming (color, type and shape), dark theme and Material’s motion system using the Material Design Components (MDC) library. If you haven’t already migrated to MDC, then check out our migration guide.

It even becomes possible to ease your migration with libraries like the new MDC-Android Compose Theme Adapter which converts an MDC XML theme into a Compose `MaterialTheme`.

Find out more with the Compose learning pathway, the Modern UI learning pathway, playlist, and the week’s wrap-up blog post.


You can find the entire playlist of #11WeeksOfAndroid video content here. Follow us on Twitter and YouTube, and subscribe to our email list to receive all the latest news and resources. Thanks so much for letting us be a part of this experience with you!

August 31st 2020, 3:13 pm

11 Weeks of Android: UI and Compose

Android Developers Blog

Posted by Chris Banes & Nick Butcher

This blog post is part of a weekly series for #11WeeksOfAndroid. Each week we’re diving into a key area of Android so you don’t miss anything. This week, we spotlighted people & identity; here’s a look at what you should know.

The big news: Jetpack Compose Alpha

This week we released the first alpha of Jetpack Compose 🎉, Android’s modern UI toolkit with native access to the platform APIs. Compose combines the power of Kotlin with the reactive programming model to make it easier and faster to build UI. We want your feedback to help us build the APIs that you need in your apps, so now is the time to try it out.

To get you up to speed with Compose, this week we’ve released 4 new codelabs, 7 new samples, new documentation and a podcast from the Compose team. If you prefer videos; we’ve got you covered...

To understand the reactive mindset and how to think about building apps with Compose, check out ‘Thinking in Compose’:

Learn how Jetpack Compose makes Android UI easier by walking through concrete examples from our open-source sample apps in ‘Compose by Example’:

Finally, to understand how Jetpack Compose and View based UIs can co-exist and interact, making it easy to adopt Compose at your own pace, check out ‘Compose for Existing’ apps:

Keyboard (IME) animations

New in Android 11 is the ability for apps to create seamless transitions between the on screen keyboard being opened and closed, as well as a revamped WindowInsets API to enable control of things such as the keyboard (IME). To find out how to add this to your app, slide on over to the video, blog posts and sample app

Material Design Components

We recommend following the Material Design guidelines to ensure that apps operate consistently, that patterns learned in one app can be used in another. Check out our new blog posts on Material Theming (color, type and shape), dark theme and Material’s motion system using the Material Design Components (MDC) library.

Adopting MDC now will prepare your codebase for later adopting Jetpack Compose — it uses the same concepts, design vocabulary and components. It even becomes possible to ease your migration with libraries like the new MDC-Android Compose Theme Adapter which converts an MDC XML theme into a Compose `MaterialTheme`.

If you haven’t already migrated to MDC, then check out our migration guide.

Learning path

If you’re looking for an easy way to pick up the highlights of this week, you can check out the learning pathways. This week we have two pathways for you to go through: the Compose pathway, and the ‘Modern UI’ pathway.

A pathway is an ordered tutorial that allows users to complete a pre-defined module that culminates in a quiz. It may include codelabs, videos, articles and blog posts. A virtual badge is awarded to each user who passes the quiz. Test your knowledge in each pathway to earn a limited edition badge.

Key takeaways

Whether you're building with the current UI toolkit or getting ready for the next generation we hope that the resources that we’ve shared this week help you to create beautiful, engaging UIs that your users will love. Thanks to everyone who tuned in or joined us for the AMA. Follow the Modern UI pathway to learn how to leverage Material Design, animation or the latest Android 11 features. Take the Compose pathway to learn about the future of Android UI development and help shape it with your feedback.


You can find the entire playlist of #11WeeksOfAndroid video content here, and learn more about each week here. We’ll continue to spotlight new areas each week, so keep an eye out and follow us on Twitter and YouTube. Thanks so much for letting us be a part of this experience with you!

August 28th 2020, 3:05 pm

Announcing Jetpack Compose Alpha!

Android Developers Blog

Posted by Karen Ng, Director, Product Management

Today, we’re releasing the alpha of Jetpack Compose, our modern UI toolkit designed to help you quickly and easily build beautiful apps across all Android platforms, with native access to the platform APIs. Bring your app to life with dramatically less code, interactive tools, and intuitive Kotlin APIs.

No matter where you’re working from -- whether it’s your kitchen table or an office, we know you need a programming language, an IDE and a powerful UI framework that can save you time and reduce how much code you need to write. So we built Jetpack Compose to make you (and us!) more productive with building UI.

We started with Android Jetpack — taking the hardest, most common developer problems on Android and creating a suite of libraries that ensure high quality apps that work across all versions of the platform. Today, 84% of the top 10,000 apps in the Play store are using a Jetpack library.

Then we heard how developers love Kotlin, with over 70% of the top 1000 apps and 60% of pro Android developers using Kotlin today. The Google Home app saw, in certain instances, an 80% reduction in lines of code by using Kotlin and a decrease of NullPointerExceptions by 33% compared to a similar past period. Duolingo, saw reduced line count by an average of 30%.

Finally, we heard strong feedback from the community that developers like the simplicity of declarative APIs for building UI. Jetpack Compose combines all three of these: APIs for high quality apps at scale, an intuitive language, and a reactive programming model.

Jetpack Compose: Now in Alpha

Jetpack Compose Alpha has what you need to build full-fledged Android apps, including powerful tools and interoperability with existing Android views so you don’t need to rewrite your app. Compose APIs are designed and developed hand-in-hand with a set of canonical sample apps that use Material Design that we’re excited to release today! You can import and explore the latest samples directly in Android Studio as well.

The alpha release includes:

We've also added a number of new capabilities to Android Studio 4.2 canary, in close partnership with the JetBrains Kotlin team, to help you build apps with Compose:

Thinking in Compose

Compose uses a programming model that is quite different from the existing model of building UI on Android. Historically, an Android view hierarchy has been represented as a tree of UI widgets. As the state of the app changes, the UI hierarchy needs to be updated to display the current data. The most common way of updating the UI is to walk the tree using functions like findViewById(), and change nodes by calling methods like:

These methods change the internal state of the widget. Not only can this be tedious, but updating views manually increases the likelihood of errors (e.g. forgetting to update a view).

Jetpack Compose is a fully declarative component-based approach, meaning you describe your UI as functions that transform data into a UI hierarchy. When the underlying data changes, the Compose framework automatically updates the UI hierarchy for you, making it simple to build UIs easily and quickly.

Full interop with existing Android views

Adopting any new framework is a big change for existing projects and codebases, which is why we’ve designed Compose to be as easy to adopt as Kotlin — it is fully interoperable with existing Android code, from day one.

Migrating to Compose depends on you and your team. If you're building a new app, the best option might be to implement your entire UI with Compose. We know that most of you have large existing codebases, so rather than rewriting your app, you can combine Compose with your existing UI design.

There are two main ways you can combine Compose with a view-based UI:

We’ve also published a new library, MDC Compose Theme Adapter, which allows you to reuse your existing Material Components themes within your Compose UI.

To learn more, try the Compose for existing apps codelab or check out these two samples:

Powerful Tools

Jetpack Compose is built with powerful tooling in Android Studio, designed to help you iterate quickly on the piece of UI you’re working on.

The Compose layout preview enables you to preview your Compose components without having to deploy your app to a device or emulator. As you develop your app, your previews update to help you review your changes faster. To create a layout preview, write a composable function that does not take any parameters, and add the

 @Preview annotation 
After you build your app, the preview function's UI appears in Studio's Preview pane.

Android Studio provides an interactive preview mode. While you're in interactive preview mode, you can click or type in your UI elements, and the UI responds as if it were in the installed app.

You can also deploy a single composable to your physical device or Android Emulator. Android Studio creates a new activity containing the UI generated by that function, and deploys it to your app on the device. This lets you try out the UI on an actual device without needing to reinstall the entire app or navigate to its location.

Get started with Jetpack Compose

To get started with Jetpack Compose, try the Compose Tutorial and get setup. Or dive right into the sample apps and walk through those apps in ‘Compose by Example’:

To find a comprehensive set of Compose resources, from new codelabs and expanded documentation, see the Compose pathway.

Since we open-sourced Jetpack Compose last year, so many of you have given us invaluable feedback, logged bugs, or contributed CLs and have gotten us where we are today. Thank you!

Compose isn’t recommended for full production use yet, in particular as we work towards API stability and finish performance optimizations, but we’d love you to give it a try and share feedback. Join us in the discussion on the #compose channel at Kotlin Slack. Compose 1.0 is expected in 2021.

Happy Composing!

August 26th 2020, 1:20 pm

11 Weeks of Android: Games, media, and 5G

Android Developers Blog

Posted by Dan Galpin, Developer Advocate

This blog post is part of a weekly series for #11WeeksOfAndroid. For each of the #11WeeksOfAndroid, we’re diving into key areas so you don’t miss anything. This week, we spotlighted games, media, and 5G; here’s a look at what you should know.

What's the buzz in Android 11?

Android 11 media

We covered how to take advantage of Android 11's new media controls by making sure your app is using MediaStyle with a valid MediaSession token. We showed how to support Media resumption by making your app discoverable with a MediaBrowserServiceCompat, using the EXTRA_RECENT hint to help with resuming content, and handling the onPlay and onGetRoot callbacks. Finally we showed you how to leverage the MediaRouter jetpack library to support seamless media transfer between devices. Check out the updated version of the UAMP sample which contains a reference implementation for media controls and playback resumption.

Android 11 and 5G

We covered some of the primary ways apps can benefit from 5g, including:

Android 11 adds new APIs and updates existing APIs to ensure you have all the tools you need to leverage the capabilities of 5G, such as an enhanced bandwidth estimation API, 5G detection capabilities, and a new meteredness flag from cellular carriers. The Android emulator now enables you to develop and test these APIs without needing a 5G device or network connection. All of this and more is available from our dedicated 5G page.

Catch up on what's happening with game development

We presented a special "11 Weeks" episode of The Android Game Developer Show providing an update on the tools, services, and technologies we're bringing to help you build, optimize, and distribute great games.

Check out to learn about everything we've covered this week and more, and stay up to date by signing up for the games quarterly newsletter.

Android game development tooling

In Android Studio 4.1, we enhanced the System Trace view of the CPU Profiler and added the Native Memory Profiler, and both can now be launched standalone from Android Studio. The System Trace and Native Memory blog posts have more details on how to use them with your game or app.

You can sign up for developer previews of the Android Game Development Extension, and the Android GPU Inspector. The Android Game Development Extension helps with building multi-platform C/C++ games, while the GPU Inspector is used to profile and debug graphics. Stay tuned for the open beta of the Android GPU Inspector.

Reaching more devices and users with your game

We took a deep dive into the Android Performance Tuner, explaining annotations, quality levels, and fidelity parameters along with some best practices on how to use them. Once you've implemented that, we also covered how to use the new insights and analysis you'll get within Android Vitals.

We showed how Google Play Asset Delivery brings the benefits of app bundles to games with large asset sizes, flexible delivery modes, auto-updates, compression, and delta patching. Texture compression format targeting is coming very soon letting you tap into modern texture compression such as ASTC (now supported on over 50% of devices) allowing you to considerably cut your game size and in-memory footprint.

We published new codelabs to help you integrate Android Performance Tuner and Google Play Asset Delivery into your Unity or native C/C++ game.

We explained how we can help protect your game, players, and business by fighting monetization and distribution abuse.

Boost your games' go-to-market

We launched the open beta of Play Games Services - Friends to help you bootstrap and enhance your in-game friend networks while having your games surfaced in new clusters in the Play Games app.

We demonstrated the new release management experience in the Google Play Console beta and showed how it can help your testing and publishing workflow.

Day one auto-installs is a new Google Play feature that allows users to request the automatic installation of your game during pre-registration. Early experiments show a +20% increase in day 1 installs when using this feature. The new pre-registration menu in the beta Google Play Console makes it easier than ever to access this feature.

We showed how to optimize your store listing page to take advantage of the greatly improved games visual experience within Google Play, showcasing rich game graphics and engaging videos.

The new in-app review API lets you choose when to prompt users to write reviews from within your game, without heading back to the app details page. This API supports both public and private reviews for when your app is in beta.

Learning path

If you’re looking for an easy way to pick up the highlights of this week, check out the Games, media, and 5G pathway. A pathway is an ordered tutorial that allows users to complete a pre-defined module that culminates in a quiz. It includes videos and blog posts. A virtual badge is awarded to each user who passes the quiz. Test your knowledge of key takeaways about Android game development, media, and 5G to earn a limited edition badge.

Key takeaways

Thank you for tuning in and learning about the latest in Android game, media, and 5G development.

Seamless media transfer and media resumption

MediaRouter API (UAMP Sample)


Bandwidth estimation API

5G Detection (Android Emulator)

Meteredness flag

Features found in Android Studio 4.1 (Beta Channel)

System Trace in Android Studio CPU Profiler

Android Studio Native Memory Profiler

Pre-release standalone tools

Android Game Development Extension

Android GPU Inspector.

Features in the Android Game SDK

Android Frame Pacing Library

Android Performance Tuner (C/C++ Codelab) (Unity Codelab)

Google Play features

Play Asset Delivery (C/C++ Codelab) (Unity Codelab)

In App Review API

App Licensing

SafetyNet Attestation


Google Play Games Services

Play Games Services Friends Beta

You can find the entire playlist of #11WeeksOfAndroid video content here, and learn more about each week here. We’ll continue to spotlight new areas each week, so keep an eye out and follow us on Twitter and YouTube. Thanks so much for letting us be a part of this experience with you!

August 21st 2020, 3:27 pm

Getting ready for 5G on Android

Android Developers Blog

Posted by Stella Loh, Product Manager, Android 5G

Getting ready for 5G on Android

Connectivity is the lifeblood that makes all of the experiences on our phones come alive, helping us connect, communicate, and express ourselves to the people that we care about. As app developers, this mission is as important now as it’s ever been. You’ve probably heard the buzz around 5G and wondered: what does this mean for my app? As we dive into Media & Games as part of this weeks' #11WeeksofAndroid, two areas where 5G offers a lot of potential, we wanted to spotlight ways for you to think about taking advantage of 5G for your app or game.

Transforming your app or game with 5G: unlocking new experiences

5G isn’t just about faster connectivity: it’s about unlocking transformative new experiences, and we want to see how you continue to push the bar.

We’ve been hard at work building in support for 5G on Android, and have been working with 5G carriers starting with Verizon and AT&T in the U.S., as well as others in Europe and Asia to provide necessary Android features for app developers looking to build 5G experiences.

In addition to working with the carriers, we have been updating and adding new APIs to ensure you have all the tools you need to leverage the capabilities of 5G. First, we enhanced the functionality of our bandwidth estimation API. Then we added 5G detection capabilities, so you know when to take it up a notch. Lastly, we added a new meteredness flag from cellular carriers so you know when your user isn’t being charged for bandwidth, and can really bring it!

We’ve also added features to the Android SDK emulator to enable you to develop and test these APIs without needing a 5G device or network connection.

All of this means that 5G starts here and now. Check out our new page dedicated to 5G so you can start imagining how 5G can transform your app.

August 21st 2020, 9:23 am

Playing nicely with media controls

Android Developers Blog

Posted by Don Turner - Developer Advocate - Android Media

In Android 11 we've made it easier than ever for users to control media playback. This is achieved with three related features: media controls, playback resumption and seamless transfer.

This article will explain what these features are, how they work together and how you can take advantage of them in your apps.

Media Controls

Android 11's media controls are found below the Quick Settings panel and represent a dedicated persistent space for controlling media playback.

Media controls in Android 11

Part of the motivation for media controls is that users often have multiple media apps (music player, podcasts, video player etc) and regularly switch between them. Media controls display up to five current and recent media sessions in a carousel allowing the user to swipe between them.

On Android 10 and earlier, media notifications for multiple apps can occupy most of the notification area. All those control buttons can also be confusing. Moving the controls into a dedicated space means that there's more room for other notifications, and provides a more consistent user experience for controlling media apps.

Here's the comparison:

Android 10 media notifications (left) Android 11 media controls (right)

Displaying media controls for your app

Now, the really good news. As long as you're using MediaStyle with a valid MediaSession token (both available since Lollipop API 21), media controls will be displayed for your app automatically - no extra work for you!

In case you're not using a MediaStyle and MediaSession here's a quick recap in code:

// Create a media session. NotificationCompat.MediaStyle
// PlayerService is your own Service or Activity responsible for media playback.  
val mediaSession = MediaSessionCompat(this, "PlayerService")

// Create a MediaStyle object and supply your media session token to it. 
val mediaStyle = Notification.MediaStyle().setMediaSession(mediaSession.sessionToken)

// Create a Notification which is styled by your MediaStyle object. 
// This connects your media session to the media controls. 
// Don't forget to include a small icon.
val notification = Notification.Builder(this@PlayerService, CHANNEL_ID)

// Specify any actions which your users can perform, such as pausing and skipping to the next track. 
val pauseAction: Notification.Action = Notification.Action.Builder(
            pauseIcon, "Pause", pauseIntent

The small icon and app name are shown in the upper left of the media controls. The actions are shown in the bottom center.

Media controls UI and corresponding Notification fields

The remaining UI fields, such as track title and playback position, are obtained from the media session's metadata and playback state.

Here's how the metadata fields map to the UI.

        // Title. 
        .putString(MediaMetadata.METADATA_KEY_TITLE, currentTrack.title)

        // Artist. 
        // Could also be the channel name or TV series.
        .putString(MediaMetadata.METADATA_KEY_ARTIST, currentTrack.artist)
        // Album art. 
        // Could also be a screenshot or hero image for video content
        // The URI scheme needs to be "content", "file", or "android.resource".
            MediaMetadata.METADATA_KEY_ALBUM_ART_URI, currentTrack.albumArtUri)

        // Duration. 
        // If duration isn't set, such as for live broadcasts, then the progress
        // indicator won't be shown on the seekbar.
        .putLong(MediaMetadata.METADATA_KEY_DURATION, currentTrack.duration) // 4


This screenshot shows how these metadata fields are displayed in the media controls.

Media controls UI and corresponding metadata fields

The seek bar is updated using the media session's playback state in a similar way:

            // Playback position.
            // Used to update the elapsed time and the progress bar. 
            // Playback speed. 
            // Determines the rate at which the elapsed time changes. 

        // isSeekable. 
        // Adding the SEEK_TO action indicates that seeking is supported 
        // and makes the seekbar position marker draggable. If this is not 
        // supplied seek will be disabled but progress will still be shown.

This screenshot shows how these playback state fields are displayed in the media controls.

Media controls UI and corresponding playback state fields

Your media controls should now look and function perfectly!

Media resumption

Ever wanted to continue listening to a podcast, TV episode or DJ set but couldn't remember where you left off, or even the app that was playing it? Media resumption solves this problem.

There are two stages to media resumption: discovering recent media apps and resuming playback.

Discovering recent media apps

After booting, Android will look for recent media apps and ask them what their most recently played content was. It will then create media controls for that content.

To be discoverable your app must provide a MediaBrowserService, typically using the MediaBrowserServiceCompat library from Android Jetpack.

On boot, Android will call your MediaBrowserServiceCompat's onGetRoot method, so it's imperative that you return quickly. Usually you would return the root of your media tree from this method but the system also specifies the EXTRA_RECENT hint.

You should treat EXTRA_RECENT as a special case and instead return the root of a media tree that contains the most recently played media item as the first element.

The system will call your onLoadChildren method to obtain this media tree, which is a list of MediaItem objects.

Here's a diagram showing how the system and a media app interact to retrieve the most recently played item.

How the system retrieves the most recently played item from the MediaBrowserService

For the first playable media item in this list the system will create static media controls with just a play button.

Static media controls

At this point no media session has been created. This is to save resources - the system doesn't know whether the user actually wants to resume playing that content yet.

Resuming playback

If the user taps the play button the system will make another call to onGetRoot with the EXTRA_RECENT hint. This is so you can prepare your previously played content as before, just in case anything has changed since the static controls were created.

Android will then connect to your media session and issue a play command to it. You should override the media session onPlay callback in order to start playback of your media content and create your MediaStyle notification.

Once you post the notification the static media controls will be swapped with the media controls created from your notification.

Figure 7: Diagram showing interaction between System UI and media app when resuming playback

Seamless media transfer

As well as being able to resume media sessions, Android 11 also allows you to easily transfer playback from one device to another. This is known as "seamless media transfer", and is done through the output switcher. The output switcher is shown in the upper right corner of the media notification that appears below.

Output Switcher (upper right corner)

The output switcher shows the name and icon of the current media route; and when you tap on it you'll see a list of media routes which this app supports.

Media routes available to the current app

By default, only local media routes are shown. If your app supports other media routes, such as remote playback you'll need to let the system know.

To do this add the MediaRouter jetpack library to your app.

dependencies {
    implementation 'androidx.mediarouter:mediarouter:1.2.0-alpha02'`

Seamless media transfer is supported from 1.2.0-alpha02.

Then, add the MediaTransferReceiver class to your Android manifest.

<receiver android:name="" />

Now in your app, obtain the MediaRouter singleton - this is an object that maintains the state of all currently available media routes.

router = MediaRouter.getInstance(this)

Create a MediaRouteSelector and specify the route categories which your app supports. The categories you define here determine the routes which are displayed in the output switcher.

Here we'll just specify the "remote playback" category which is used for Cast devices.

routeSelector = MediaRouteSelector.Builder() // Add control categories that this media app is interested in.

If you want to support transfer from remote to local devices, you need to explicitly enable this using setTransferToLocalEnabled:

router.routerParams = MediaRouterParams.Builder().setTransferToLocalEnabled(true).build()

We can now use our selector when adding a media router callback.

router.addCallback(routeSelector, MediaRouterCallback(),

We also supply a callback object so we can be informed of changes to media routes.

Here's the callback class:

    private class MediaRouterCallback : MediaRouter.Callback() {
        override fun onRouteSelected(
            router: MediaRouter,
            route: MediaRouter.RouteInfo,
            reason: Int
        ) {
            if (reason == MediaRouter.UNSELECT_REASON_ROUTE_CHANGED) {
                Timber.d("Unselected because route changed, continue playback")
            } else if (reason == MediaRouter.UNSELECT_REASON_STOPPED) {
                Timber.d("Unselected because route was stopped, stop playback")

The method we override is onRouteSelected which will be called whenever a new media route has been selected.

When this happens we need to take into account the reason why it was selected.

If the existing route was disconnected (for example, bluetooth headphones were switched off) we should pause or stop playback.

If the route was actively changed, for example when switching from a phone to a Cast device, then we should continue playing the media from its previous playback position - this is the "seamless" part of "seamless media transfer" :)

Get started

To get started with media controls and related features on Android 11 take a look at the official documentation. Also be sure to check out UAMP which contains a reference implementation for many of the features mentioned in this article.

Good luck and remember to play nicely!

August 20th 2020, 6:17 pm

New language features and more in Kotlin 1.4

Android Developers Blog

Posted by Wojtek Kaliciński, Developer Advocate, Android

When we adopted Kotlin as a supported language on Android, and then shifted to a Kotlin-first approach, one of the main drivers was the excitement and adoption from the developer community. As Kotlin has grown, we’ve seen continued investment in the language from JetBrains (Kotlin's creators), the open source community, and increasingly our own teams at Google.

Today we are excited to share the news about the Kotlin 1.4 release, the next milestone in the evolution of Kotlin, which contains new language features, improved compilers and tools. Below you'll find a brief rundown of some exciting new features in this release. You can read more about Kotlin 1.4 in the official announcement.

New language features

New language features introduced in Kotlin 1.4 improve the ergonomics of writing Kotlin code. Here's just one example:

SAM conversions for Kotlin interfaces

Previously, only functional interfaces (i.e. having just a Single Abstract Method - SAM) defined in the Java programming language benefited from the shorthand syntax in Kotlin:

executor.execute { println("This is shorthand for passing in a Runnable") }

In Kotlin 1.4 you can now mark your Kotlin interfaces as functional and get them to work in a similar manner by adding the fun keyword:

fun interface Transformer<T, U> {
   fun transform(x: T): U
val length = Transformer {
   x: String -> x.length

You can read more about new language features such as: mixing named and positional arguments, trailing comma, callable reference improvements, and using break and continue inside when included in loops on the Kotlin 1.4 release notes page.

Explicit API mode

One additional feature is the new Explicit API mode for authors of libraries written in Kotlin.

It enforces certain language properties of Kotlin that are normally optional, such as specifying visibility modifiers, as well as explicit typing for any public declarations, in order to prevent mistakes when designing the public API of your library. Refer to the linked documentation for instructions how to enable Explicit API mode and start using these additional checks.

Compiler improvements

The language features mentioned above are some of the most developer-facing changes in Kotlin 1.4, however the bulk of work went into improving the overall quality and performance of the Kotlin compiler.

One of the benefits all developers can take advantage of right now is the new, more powerful type inference algorithm, which is now enabled by default. It will help developers be more productive by supporting more smart-casts and cases where types can be inferred automatically.

Other than the type inference algorithm, Kotlin 1.4 also brings in optional, Alpha stability compiler backends for Kotlin/JVM and Kotlin/JS, which generate code in what's called internal representation (IR) also used in the Kotlin/Native backend.

The Kotlin/JVM IR backend is a requirement for Jetpack Compose, and Google engineers are working together with JetBrains to make it the default JVM compiler backend in the future.

That's why, even if you're not currently developing with Jetpack Compose, we encourage you to try out the new Kotlin/JVM backend, currently in alpha, and to file any issues and feature requests to the issue tracker.

To enable the new JVM IR backend, specify an additional compiler option in your Gradle build script:

kotlinOptions.useIR = true

Try Kotlin 1.4 now!

There are two steps to updating your projects and IDE to Kotlin 1.4.

First, make sure you are on the latest version of Android Studio to maximize the performance benefits and compatibility with the newest Kotlin plugin. Android Studio will prompt you when a Kotlin 1.4.0 plugin that is compatible with your IDE version is available. Alternatively, you can go to Preferences | Plugins and manually trigger the update.

Once the plugin is enabled, you can upgrade your app project to use Kotlin 1.4 by updating the Kotlin Gradle plugin version in your build.gradle scripts. Depending on how you manage your plugins, you either have to update the version in the top-level project's buildscript block:

buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.0"

Or change the version number in the plugins block in a module level build.gradle file:

plugins {
    id '' version '1.4.0'

Make sure to read the language changes carefully and update your project's code to ensure compatibility with the latest release. Enjoy Kotlin 1.4!

Java is a registered trademark of Oracle and/or its affiliates.

August 17th 2020, 1:52 pm

What’s new for Android game developers: August update

Android Developers Blog

Posted by Greg Hartrell, Head of Product Management, Games on Android & Google Play

Welcome to our latest Android games update and the start of our #11WeeksOfAndroid week focused on games, media and 5G. With all of your interest and feedback in our developer previews, tools and services, we have lots to share in our ongoing efforts to help you better understand your game’s performance, expand your reach to more devices and new audiences, and support your go-to-market with Google Play.

Get the latest updates below and follow us at @AndroidDev for additional games resources and more.

Android tools for mobile game development

Reach more devices and users

Boost your go-to-market

Check out to learn about these tools and more, and stay up to date by signing up for the games quarterly newsletter.

How useful did you find this blog post?

August 17th 2020, 12:22 pm

11 Weeks of Android: Beyond phones

Android Developers Blog

Posted by Product Leads for Android TV, Android for cars, Wear OS, and Chrome OS

This blog post is part of a weekly series for #11WeeksOfAndroid. Each week we’re diving into a key area of Android so you don’t miss anything. This week, we spotlighted Android Beyond Phones; here’s a look at what you should know.

With Android, people can experience the apps and services that they love across many devices & surfaces. Beyond phones, Android offers distinct yet familiar experiences on devices of all shapes and sizes, ranging from the smallest smartwatch screens, to larger displays on foldables and Chromebooks, to in-car entertainment systems, and all the way up to the largest television screens. For the past 4 days, we featured a daily deep dive into each of these exciting form factors that are providing developers with new and growing ways to engage people. Read on for a recap.

Android TV

We kicked off the week with Android TV, which is now partnering with 7 of the top 10 OEMs and over 160 television operators across the globe. The Android TV team highlighted 6 upcoming launches, like instant app trials right from Google Play and an updated Gboard, to help developers acquire more users, more easily monetize, and build even more engaging experiences. Then, new resources were published to help developers build their first Android TV app, or even go deep on new integrations like Cast Connect and frictionless subscriptions. If you’re excited about developing for TV, pick up an ADT-3, learn the latest from the training pathway, and bring your Android app to the biggest screen in the home!

Android for Cars

We shared new ways to reach more drivers on Android for cars. Android Auto, which allows you to connect your phone to your car display, is currently available with nearly every major car manufacturer and is on track to reach 100 million cars. Soon, new app categories including navigation, parking, and electric vehicle charging will be available and the experience for Android Auto users will become even more seamless as car manufacturers continue to add support for wireless connectivity. We also highlighted the launch of the first car powered by Android Automotive OS with Google apps and services built in — the Polestar 2. As more manufacturers ship cars with this embedded functionality, we’re making it even easier for developers to build media apps on Android Automotive OS with updated documentation and emulators. Get started today to bring your app to cars!

Large Screens

We covered large screens starting with the announcement of — a dedicated resource for technical developers, designers, product managers, and business leaders. We’ve showcased our growth in device sales in Chrome OS, seeing Chromebook unit sales grew 127% year over year between March and June this year1, as well as some of the new features coming, such as customizable Linux Terminal and Android Emulator support. We’ve also continued to see growth in apps optimized for larger screen experiences, with over 1 million apps optimized for tablets and large screens available in the Google Play store. To help you develop the best-in-class apps for Chrome OS, foldables and tablets, we are continuing to release new features and updates. We released new design recommendations for your app as well as a few updates made in Android Studio. Check out the new sessions and some of the resurfaced content to learn more about bringing the best experiences to your users on these large-screen devices.

Wear OS

To round out the week, we talked about Wear OS where we are investing in the fundamentals with a focus on performance and faster app startup times, which you’ll see in the latest platform release coming in the fall. Wear OS will be launching updates to cornerstone features like Weather in the coming months, and is investing in helpful experiences, such as our recent hand-wash timer to help people maintain hand-hygiene in the Covid-19 pandemic. The team is working hard to bring the best of Android 11 to Wear OS.

Learning paths

Are you building your apps with different screen sizes and form factors in mind? Check out all the resources for Wear OS and Android for cars, and if you’re looking for an easy way to pick up the highlights of this week for Android TV and large screens, consider completing the pathway for each. These include codelabs, videos, articles and blog posts. A virtual badge is awarded to each user who passes the quiz.

We hope that you found the Android Beyond Phones week useful, and we're excited to see all the great experiences that you'll build on these platforms!


You can find the entire playlist of #11WeeksOfAndroid video content here, and learn more about each week here. We’ll continue to spotlight new areas each week, so keep an eye out and follow us on Twitter and YouTube. Thanks so much for letting us be a part of this experience with you!

1 The NPD Group, Inc., U.S. Retail Tracking Service, Notebook Computers, based on unit sales, April–June 2020 and March–June 2020​.

August 14th 2020, 1:16 pm

What’s happening in Wear OS by Google

Android Developers Blog

Posted by Karen Ng, Director of Product and Robert Simpson, Product Manager

This blog post is part of a weekly series for #11WeeksOfAndroid. For each week, we’re diving into a key area and this week we’re focusing on Android Beyond Phones. Today, we’ll share what’s happening with Wear OS by Google.

Wearable technologies help people lead healthier lives and connect with important, timely information. Today, we're sharing our areas of investment focusing on the fundamentals, bringing even more helpful experiences to more watches, and giving users more choice in a device ecosystem.

Focusing on fundamentals

Wearables are designed to instantly connect people with what's important throughout the day. That's why we're focused on fundamentals like performance and power.

In the next OTA update coming in the fall, we’re improving performance by making it faster to access your info and start your apps. We’re simplifying the pairing process to make onboarding easier. You’ll see improvements to our SysUI for more intuitive controls for managing different watch modes and workouts. And with CPU core improvements, you’ll also see up to a 20% speed improvement in startup time for your apps.

Finally, we continue to support advancements in technology to bring new functionality, such as LTE, and expand levels of performance with the new Qualcomm® Snapdragon Wear™ 4100 and 4100+ platforms. We are excited by the kinds of wearable experiences that can be enabled in the future.

More helpful experiences

Wearables showcase important information at a glance. Some of the most used features of Wear OS by Google are hands-free timers and tracking fitness metrics. In response to COVID-19, we built a handwashing timer that helps ensure users practice good hygiene.

And later this year, you’ll see a beautiful new weather experience for Wear OS by Google. It aims to be easier to read while on the go, with an hourly breakdown of today’s weather to help you plan ahead and provide information about important weather alerts in your area.

We’re always imagining new ways wearables can help people stay healthy, present and connected. Stay tuned for more in 2021!

More choice than ever

We’re excited to welcome new watch OEMs to the Wear OS by Google family -- Oppo, Suunto, and Xiaomi. This means new watches that fit your style and needs -- such as the Suunto 7 with rich sports capabilities, or the new LTE watches from Oppo that will keep you connected on the go.

Bringing the best of Android to wearables

We’re also working to bring the best of Android 11 to wearables. Many of the things you’ve seen in modern Android development -- from Android Studio, a great language with Kotlin, and Jetpack libraries to make common tasks easier will be part of what you can expect as a developer building wearable apps. We’ve just released a release candidate for androidx.wear 1.1.0, and would love feedback on things you’d like to see as you get started building a wearable app.

We can’t wait to see what helpful experiences you’ll build!

August 13th 2020, 9:18 am — A blueprint to build world-class apps and games for Chrome OS

Android Developers Blog

Posted by Iein Valdez, Head of Chrome OS Developer Relations

This article originally appeared on

While people are spending more time at home than on the go, they’re relying increasingly on personal desktops and laptops to make everyday life easier. Whether they’re video-chatting with friends and family, discovering entertaining apps and games, multitasking at work, or pursuing a passion project, bigger screens and better performance have made all the difference.

This trend was clear from March through June 2020: Chromebook unit sales grew 127% year over year (YOY) while the rest of the U.S. notebook category increased by 40% YOY.1 Laptops have become crucial to people at home who want to use their favorite apps and games, like Star Trek™ Fleet Command and Reigns: Game of Thrones to enjoy action-packed adventure, Calm to manage stress, or Disney+ to keep the whole family entertained.

To deliver app experiences that truly improve people’s lives, developers must be equipped with the right tools, resources, and best practices. That’s why we’re excited to introduce — a dedicated resource for technical developers, designers, product managers, and business leaders., available in English and Spanish (with other languages coming soon), features the latest news, product announcements, technical documentation, and code samples from popular apps. Whether you’re a web, Android, or Linux developer who’s just getting started or a certified expert, you’ll find all the information you need on

Hear from our experts at Google and Chrome OS, as well as a variety of developers, as they share practical tips, benefits, and the challenges of creating app experiences for today’s users. Plus, you can review the updated Chrome OS Layout and UX App Quality guidelines with helpful information on UI components, navigation, fonts, layouts, and everything that goes into creating world-class apps and games for Chrome OS.

Even better, as a fully open-source online destination, is designed considering all the principles and methods for creating highly capable and reliable Progressive Web Apps (PWAs), ensuring developers always have quick, easy access to the information they need — even when they’re offline.

Check out a few of the newest updates and improvements below, and be sure to install the PWA on your device to stay on top of the latest information.

New features for Chrome OS developers

Whether it’s developing Android, Linux, or web apps, every update on is about making sure all developers can build better app experiences in a streamlined, easy-to-navigate environment.

Customizable Linux Terminal

The Linux (Beta) on Chrome OS Terminal now comes equipped with personalized features right out of the box, including:

Developers can now start using these and other customizable features in the Terminal app.

Android Emulator support

Supported Chromebooks can now run a full version of the Android Emulator, which allows developers to test apps on any Android version and device without needing the actual hardware. Android app developers can simulate map locations and other sensor data to test how an app performs with various motions, orientations, and environmental conditions. With the Android Emulator support in Chrome OS, developers can optimize for different Android versions and devices — including tablets and foldable smartphones — right from their Chromebook.

Deploy apps directly to Chrome OS

Building and testing Android apps on a single machine is simpler than ever. Now, developers who are running Chrome OS M81 and higher can deploy and test apps directly on their Chromebooks — no need to use developer mode or to connect different devices physically via USB. Combined with Android Emulator support, Chrome OS is equipped to support full Android development.

Improved Project Wizard in Android Studio

An updated Primary/Detail Activity Template in Android Studio offers complete support to build experiences for larger screens, including Chromebooks, tablets, and foldables. This updated option provides multiple layouts for both phones and larger-screen devices as well as better keyboard/mouse scaffolding. This feature will be available in Android Studio 4.2 Canary 8.

Updated support from Android lint checks

We’ve improved the default checks in Android’s lint tool to help developers identify and correct common coding issues to improve their apps on larger screens, such as non-resizable and portrait-locked activities. This feature is currently available for testing in Canary channel.

Unlock your app’s full potential with Chrome OS

From day one, our goal has been to help developers at every skill level create simple, powerful, and secure app experiences for all platforms. As our new reality creates a greater need for helpful and engaging apps on large-screen devices, we’re working hard to streamline the process by making Chrome OS more versatile, customizable, and intuitive.

Visit and install it on your Chromebook to stay on top of the latest resources, product updates, thought-provoking insights, and inspiring success stories from Chrome OS developers worldwide.

1 The NPD Group, Inc., U.S. Retail Tracking Service, Notebook Computers, based on unit sales, April–June 2020 and March–June 2020​.

August 12th 2020, 12:40 pm

New ways to reach more drivers on Android for cars

Android Developers Blog

Posted by Mickey Kataria, Director of Product Management, Android for cars

This blog post is part of a weekly series for #11WeeksOfAndroid. For each week, we’re diving into a key area and this week we’re focusing on Android Beyond Phones. Today, we’ll be talking about cars.

Since 2014, Google has been committed to bringing the familiarity of apps and services from Android phones into the car in a safe and seamless way. We’re continuing to see strong momentum and adoption of both Android Auto and Android Automotive OS, and are excited to share new improvements that provide app developers the opportunity to reach more users in the car.

Android Auto momentum

We launched Android Auto for users to stay connected on-the-go and more easily access their Android phones on their car displays— while staying focused on the road. Android Auto is currently available with nearly every major car manufacturer and is on track to be in more than 100 million cars in the coming months. Many car manufacturers, including General Motors, BMW and Kia, have also added support for wireless connections, making it easier for drivers to use Android Auto as soon as they get into their car. We’re continuing to add new features to make the experience more seamless for users and help developers reach more drivers with in-car apps.

Expanding Android Auto’s app ecosystem

One of our most common requests for Android Auto continues to be support for more apps in the car. We currently have over 3,000 apps in Google Play whose in-car experiences have been purpose-built for driving.

Today, we’re showcasing our work with early access partners to build apps in new categories for Android Auto, including navigation, parking and electric vehicle charging. Using our new Android for Cars App Library, we’re able to ensure that all tasks within an app can be achieved with minimal glances or taps.

Early access partners for new apps on Android Auto

To mitigate driver distraction, we collaborated with government, industry and academic institutions to develop our own best practice guidelines that we apply to every aspect of our product development process. With our standard templates and guidelines, developers have the tools to easily optimize their apps for cars, without needing to become an expert in driver distraction.

Our early access partners will be releasing new apps to their beta testers by the end of this year. Pending additional testing and feedback, we then plan to make these APIs publicly available for all developers to build Android Auto apps in these categories.

We're partnering with some of the leading navigation, parking and electric vehicle charging apps around the world including ChargePoint, SpotHero and Sygic.

Android Automotive OS adoption

More recently, we introduced Android Automotive OS as a full-stack, open source and highly customizable platform powering vehicle infotainment systems. With Android Automotive OS, car manufacturers are able to have apps and services like Google Assistant, Google Maps and Google Play built into vehicles so that a mobile device is not required for common activities like navigation, downloading third-party apps and listening to media. Polestar 2, the first car running Android Automotive OS with Google built in, is now on the road and available for customers globally. In addition, Volvo Cars, Renault, General Motors and more have announced plans for infotainment systems powered by Android Automotive OS with Google apps and services built-in.

Extending the reach of media apps in cars

As more manufacturers begin to ship cars with infotainment systems powered by Android Automotive OS, developers have the opportunity to deliver a seamless media experience using Google Play in the car. If you already have a media app for Android Auto, you can extend the reach by adding support for Android Automotive OS. The process for porting over your apps is simple with most of the work already done, just follow these steps.

Making it easier to develop media apps for Android Automotive OS

For the past year, we have been on a journey to allow app developers to design, develop, test and publish media apps directly on Google Play in the car. We are happy to share that this is now possible.

Polestar 2 and Google Generic Automotive system images for Android emulator

We have made updates to the Android Automotive OS design guidelines and development documentation for you to add support for your media apps. We also launched updates to the emulator to include Google Assistant, Google Maps and Google Play, so you can develop and test your apps in an environment that more closely mirrors the software in the car. The Polestar 2 system image enables you to test your app on similar software that is available on the road today. Lastly, the Play Console now accepts Android Automotive OS APKs, enabling you to simply upload your app for quality review and publishing. These changes allow developers to seamlessly complete the end-to-end development process for Android Automotive OS.

Google Play features many media apps today, including Spotify, iHeartRadio, NPR One and more.

To learn more about how to create an app for Android Automotive OS, look out for updates or post on the automotive-developers Google Group or Stack Overflow using android-automotive tags.

With new app expansion on Android Auto and improved development tools for Android Automotive OS, developers have more opportunity than ever to reach users with app experiences optimized for the car. Head over to to get started!


You can find the entire playlist of #11WeeksOfAndroid video content here, and learn more about each week here. We’ll continue to spotlight new areas each week, so keep an eye out and follow us on Twitter and YouTube. Thanks so much for letting us be a part of this experience with you!

August 11th 2020, 9:15 am

6 New ways to engage with users on Android TV

Android Developers Blog

Posted by Dan Aharon, Product Manager, Android TV

This blog post is part of a weekly series for #11WeeksOfAndroid. This week we’re focusing on Android Beyond Phones. So what’s new on Android TV?.

With users asking for more TV shows, movies, and apps than ever, the big screen has become a big deal. There are now over 80% more Android TV monthly active devices than a year ago! Working with 7 of the top 10 Smart TV OEMs and over 160 TV Operators has helped give users more options to spruce up their living room with Android TV. But connecting with this many people wouldn’t have been possible without the developer ecosystem building ~7,000 apps for Google Play on Android TV. Together, our users can now watch, play, and do more on their TVs.

Over the past year, we’ve introduced new features to Android TV to make discovering and accessing your content even easier for users. We updated Google Play with a refreshed look and new app collections while making it easier for users to subscribe to apps. We made additions to the Android TV home screen to highlight trending and important content. And most recently, we released Cast Connect, so your users can cast their favorite content directly to its native Android TV app.

We’ve heard from you on how else we can help support you, and we are excited to announce new ways to help you continue to improve engagement and commerce on the TV:

Easier acquisition and monetization

Let users try your app instantly on Google Play with Google Play Instant on TV

More engaging user experiences

Use Gboard TV to bring speech-to-text and predictive typing to your app.

This is just the latest for developers. You can find videos, codelabs, and documentation to bring more key features to life on the #11weeksofAndroid site and the Android TV Developers site. Catch the “What’s new on Android TV” video for demos and more info about the features in this post.

If you are just getting started, check out our ADT-3 developer kit and Android 11 Developer Preview to start building your TV experience.

We are excited to see what you come up with next.

August 10th 2020, 9:05 am

11 Weeks of Android: App distribution and monetization on Google Play

Android Developers Blog

Posted by Alex Musil, Director of Product Management, Google Play

This blog post is part of a weekly series for #11WeeksOfAndroid. Each week we’re diving into a key area of Android so you don’t miss anything. This week, we spotlighted app distribution and monetization on Google Play; here’s a look at what you should know.

Thanks for joining us for this week of 11 Weeks of Android, where we focused on app distribution and monetization. The developments we announced will enable you to deliver the exciting improvements to the Android platform you’ve been hearing about since week 1.

Google Play partners with developers to deliver amazing digital experiences to billions of Android users. From the start, we’ve committed to providing the tools and insights you need to reach more users and grow your business. This week, we launched even more features — and improved existing ones — to help you continue to maximize your success.

Key takeaways

  1. We released several webinars about the new Google Play Console beta. Check out the videos if you weren’t able to tune in live.
  2. We shared recent improvements we’ve made to app bundles, as well as our intention to require new apps and games to publish with this format in the second half of 2021.
  3. Developers can now ask for ratings and reviews from within your app with the new in-app review API.
  4. To increase user trust in our billing platform, we made some product updates and reminded you of our policy around more transparent subscriptions. We also expanded our feature set to help you better reach and retain buyers, and launched Play Billing Library 3, which will be required by mid-2021.
  5. Google Play Pass launched in nine new markets last month. With an innovative revenue model, participating titles together have earned 2.5x the revenue of Google Play Store-only sales, without diminishing Play Store earnings. You can learn more and express interest in joining.

Google Play Console beta

Thank you to everyone who has already shared their feedback on the new Google Play Console beta, which launched a few months ago at As we’ve continued to update the beta, we’ve launched a number of key releases including:

Earlier this week, we hosted three webinars to get you up to speed on what’s new and what’s changed from the classic Play Console. If you weren’t able to tune in live, you can watch the videos on demand below.

If you’re just getting started, join Google Play Console’s lead engineer, Dan White, for a look at new features like Inbox, policy status, app content, and enhanced team management capabilities.

To help you release with even more confidence, check out this webinar with Google Play UX designer Matt McGriskin, who will walk you through the new testing and publishing workflow.

Finally, if you want to grow your audience, join Google Play engineer Ryan Fanelli for app store optimization best practices and an overview of the new acquisition reports.

You can also take our Play Console Play Academy course. And if you haven’t already, please opt in to 2-Step Verification to sign into Google Play Console, which will be required later this year.

Android App Bundle

We’re glad so many of you are already using the Android App Bundle to release your apps and games. We’re continuing to make app bundles a better publishing format with several recent improvements:

If you haven’t switched to the app bundle yet, we’ve published some FAQs on Play App Signing—which is required for app bundles—as well as guidance on how to test your app bundle. Check out our recent blog post to find out more about the recent improvements we’ve made to developing, testing, and publishing with app bundles.

As we announced as part of the Android 11 Beta launch, we intend to require new apps to publish with the Android App Bundle on Google Play in the second half of 2021. This means that we will also be deprecating APK expansion files (OBBs) and making Play Asset Delivery the standard for publishing games larger than 150MB.

In-app review API

Because ratings and reviews are such an important touchpoint with your users, many of you asked us to give users the ability to leave a review from within your app. Now, with the new in-app review API, you can do just that. Choose when to prompt users for a review and get feedback when it’s most valuable. The in-app review API is available now in the Play Core Library.

We've also released a unified sample for Play Core APIs, which includes in-app reviews as well as on-demand feature modules and in-app updates. Check it out to learn how to use these APIs using our Play Core Kotlin extensions artifact, which makes working with Play Core easier for Kotlin users.

Google Play Commerce

We’ve made a number of updates to Play Commerce aimed at building user trust through clearer, easier payment experiences. The user trust policies we announced in April offer users greater transparency, safer trial experiences, and easier cancellations.

We also launched Play Billing Library 3, which supports cash payments, a better subscription promo code redemption experience, purchase attribution, and more. Billing Play Library 3 will be mandatory for all new apps starting August 2, 2021.

For more information, check out this session with Mrinalini Loew, Group Project Manager for Google Play Commerce.

We’ve also just kicked off a six-article series on Google Play Billing, which you can follow here on Medium.

Google Play Pass

Google Play Pass enables developers to earn additional revenue and connect with untapped audiences by offering experiences free of ads and in-app purchases. Since launching last September, Play Pass has added over 200 new titles to the catalog, from puzzles and racing games to utility and kid-friendly apps. We’re also excited to celebrate the world premieres of Super Glitch Dash and Element this week as the newest “Premiering on Play Pass” titles.

The expanded catalog has enabled rich user experiences and provided a sustainable stream of revenue for developers using an innovative revenue payout model. In aggregate, titles on Play Pass earn more than 2.5x the revenue compared to their Play Store-only earnings in the US.

Last month, we made Google Play Pass available in nine new markets and gave users the option to get started with either an annual subscription or the existing monthly plan.

Today, we are announcing that developers with in-app subscriptions can now nominate their titles to join Play Pass. If you’re building a great experience that Google Play Pass users would love, you can learn more and express interest in participating.

Learning path

If you’re looking for an easy way to pick up the highlights of this week, check out the app distribution and monetization pathway. Test your knowledge of key takeaways to earn a limited-edition virtual badge.

Thanks for joining us for 11 Weeks of Android! We hope you find these recent announcements and resources helpful in powering your success on Google Play.


You can find the entire playlist of #11WeeksOfAndroid video content here, and learn more about each week here. We’ll continue to spotlight new areas each week, so keep an eye out and follow us on Twitter and YouTube. Thanks so much for letting us be a part of this experience with you!

August 7th 2020, 9:49 am

Android 11 final Beta update, official release coming soon!

Android Developers Blog

Posted by Dave Burke, VP of Engineering

It’s already August and the official Android 11 release is coming very soon! As we put the finishing touches on the new platform, today we’re bringing you Beta 3, our last update in this year’s preview cycle. For developers, now is the time to make sure your apps are ready, before we bring the official release to consumers.

You can get Beta 3 today on Pixel 2, 3, 3a, and 4 devices (and coming soon, Pixel 4a!). Just enroll here for an over-the-air update. If you’re already enrolled, you’ll automatically get the update soon. As always, let us know your feedback, and thank you for all of the input you’ve provided so far.

Watch for more information on the official Android 11 release coming soon!

What’s in Beta 3?

Today’s update includes a release candidate build of Android 11 for Pixel devices and the Android Emulator. We reached platform stability at Beta 2, so all app-facing surfaces and behaviors are final, including SDK and NDK APIs, app-facing system behaviors, and restrictions on non-SDK interfaces. With these and the latest fixes and optimizations, Beta 3 gives you everything you need to complete your testing.

As we bring Android 11 to final form, we’re also taking this opportunity to update Android with the Exposure Notifications System in mind. Starting in Beta 3, users will be able to run Exposure Notification apps on Android 11 without needing to turn on the device location setting. This is an exception we’re making for the Exposure Notification System only, given that it has been designed in such a way that apps using it can’t infer device location through Bluetooth scanning. To protect user privacy, all other apps will still be prohibited from performing Bluetooth scanning unless the device location setting is on and the user has granted them location permission. You can read more in our Update on Exposure Notifications post.

Get your apps ready for Android 11!

With the official Android 11 release on the way, we’re asking all Android app and game developers to finish your compatibility testing and publish your updates soon. For SDK, library, tools, and game engine developers, it’s even more important to release a compatible version right away, since your downstream app and game developers may be blocked until they receive your updates.

As we covered in depth at Beta 2, here’s how to test for compatibility with Android 11.

For testing your current app, read behavior changes for all apps to identify areas where platform changes might affect your apps. Here are some of the top changes to watch for (these apply regardless of your app’s targetSdkVersion):

Remember to test the libraries and SDKs in your app for compatibility. If you find an issue, try updating to the latest version of the SDK, or reach out to the developer for help.

For more information on compatibility testing and tools, check out the resources we shared for Android 11 Compatibility week and visit the Android 11 developer site for technical details.

Explore the new features and APIs

Android 11 has a ton of new features to build new experiences for users around people, controls, and privacy. When you’re ready to dive in, check out our #Android11 Beta post for a recap of all of the developer features, and you can also visit the Beta Launch page to see talks from the Android team on what’s new in their areas. For complete details on Android 11 features and APIs, visit the Android 11 developer site.

Also make sure to try the Android 11 features in Android Studio that can improve your productivity and workflow, like ADB incremental for faster installs of large APKs, and additional nullability annotations on platform APIs. You can give these a try by downloading the latest Android Studio Beta or Canary version. Instructions for configuring Android Studio for Android 11 are here.

How do I get Beta 3?

It’s easy! Just enroll here to get the Beta 3 update over-the-air on your Pixel 2, 3, 3a, or 4 device (and coming soon, Pixel 4a). If you're already enrolled, you'll receive the update soon and no action is needed on your part. Alternatively, you can give Android Flash Tool a try for easy on-demand updates, and if you’d rather flash manually, downloadable system images are also available. If you don't have a Pixel device, you can use the Android Emulator in Android Studio or try a GSI image to run Android 11 on supported Treble-compliant devices.

What’s next?

Stay tuned for the official Android 11 launch coming in the weeks ahead! In the meantime, we recommend finishing your testing and publishing your compatible updates as soon as possible. Feel free to share your feedback using our hotlists for filing platform issues (including privacy and behavior changes), app compatibility issues, and third-party SDK issues. You've given us great feedback so far -- thank you again!

A huge thank you to our developer community for your participation in our recent Android 11 AMA and Android Studio AMA on r/anddroiddev! It’s great to hear what’s important to you and we hope we were able to help!

August 6th 2020, 1:04 pm

Leverage the In-App Review API for your Google Play reviews

Android Developers Blog

Posted by Scott Lin, Product Manager, Google Play

For many developers, ratings and reviews are an important touchpoint with users. Millions of reviews are left on Google Play every day, offering developers valuable insight on what users love and what they want improved. Users also rely on ratings and reviews to help them decide which apps and games are right for them.

Over the past two years, Google Play has launched various features to make it easier for users to leave reviews, as well as for developers to interact and respond to them. For example, users are now able to leave reviews from the Google Play homepage. We also launched the Reviews page under My Apps & Games, which gives users a centralized place to leave and manage reviews.

But one of the most requested features from developers has been to give users the ability to leave a review from within the app, without heading back to the App Details page. So today, we’re pleased to launch the new in-app review API to address that need.

Ask for a review at just the right time

The API lets developers choose when to prompt users to write reviews within the app experience. We believe the best time to prompt your users is when they have used the app enough to be able to provide thorough and useful feedback. However, be sure not to interrupt them in the middle of a task or when their attention is needed, as the review flow will take over the action on the screen.

Users can now give ratings and reviews within your app.

The in-app review API supports both public and private reviews for when your app is in beta.

The review API is part of the Play Core Library, which is distributed for Java/Kotlin, C++, and Unity. It offers a lightweight API that allows apps to request a review and launch the review flow without users leaving the app.

The integration consists of four main steps:

  1. Define the conditions and best place to ask for a review
  2. Request the review flow to the API
  3. Launch the review at an appropriate moment
  4. Continue the flow after the review is completed

Whether the user leaves a review or not, the app must continue without altering the user flow. The in-app review API is designed to be seamless for users.

You can see the in-app review API in action in our newly published sample, which showcases calling the API through the Play Core Kotlin extensions (KTX) library, alongside other Play Core APIs such as in-app updates and on-demand feature modules installation.

Gathering the best feedback

The API will make it much easier for users to share valuable insights about your app.

Here’s what some of our partners said during the early-access program:

“It was quick and easy to integrate with the new In-App Review API changes, and we saw an almost immediate increase in positive ratings and reviews after releasing those changes.”

- Chris Scoville, Engineering Manager at Calm

“The in-app review API allows our customers to rate without leaving the application. Our 5-star ratings since implementing the API has increased by 4x.”

- Nathaniel Khuana, Technical Architect, Tokopedia

"We saw our all-time highest rating just a week after we implemented in-app reviews."

- Welly Chandra, Associate Product Manager at Traveloka

Because the best feedback is honest and unbiased, we designed the API to be self-contained and not require additional prompting other than to invoke the API. We’ve also placed cap limits to ensure that users won’t be prompted excessively should they choose not to leave a review.

We encourage developers to explore integrating the in-app review API as it will unlock the type of feedback that only your dedicated users can provide. And remember, once you receive those reviews, there are a multitude of ratings and reviews tools available to you on the Google Play Console to help you analyze the reviews and respond to users' concerns directly.

How useful did you find this blog post?

August 5th 2020, 9:14 am

Recent Android App Bundle improvements and timeline for new apps on Google Play

Android Developers Blog

Posted by Posted by Dom Elliott and Yafit Becher, Product Managers at Google Play

In a little over two years, the Android App Bundle has become the gold standard for publishing on Google Play. Over 600,000 apps and games currently use the app bundle in production, representing over 35% of all releases on Google Play. App bundles are used by 50% of the top developers on Google Play — such as Adobe, which used app bundles to reduce the size of Adobe Acrobat Reader by 20%.

We recently launched Play Asset Delivery (PAD), bringing the great benefits of app bundles to games and allowing developers to improve the user experience while cutting delivery costs and reducing the size of their games. Gameloft used PAD to improve user retention, resulting in 10% more new players than with their previous asset delivery system.

For those of you making the switch, we’ve published some FAQs on Play App Signing — required for app bundles — as well as guidance on how to test your app bundle. Read on to find out more about the recent improvements we’ve made to developing, testing, and publishing with app bundles.

Play Feature Delivery

The app bundle enables modular app development using dynamic feature modules with a range of customizable delivery options. It’s now possible to shrink resources in dynamic feature modules as well as your base module when building modular apps. This long-requested feature can result in significantly greater size reduction of your apps. The feature is available from Android Studio 4.2, currently in Canary, under the experimental flag: android.experimental.enableNewResourceShrinker=true.

By default, install time modules are now automatically fused when app bundles are processed into distribution APKs (starting in bundletool 1.0.0). This means you can separate your app into modules during development while reducing the number of APKs distributed to each device, which will speed up your app’s download and installation. You can choose to set a “removable flag” for install-time modules to prevent fusing, which allows you to uninstall a module on the device after it’s been used. It’s a good idea to remove large modules once they’re no longer needed — reducing the size of your app can make it less likely to be uninstalled.

Feature-to-feature dependency is now stable in Android Studio 4.0, so you can specify that a dynamic feature module depends on another feature module. Being able to define this relationship ensures that your app has the required modules to unlock additional functionality, resulting in fewer requests and easier modularization of your app.

We know that it is critical for you to test your app delivery and get the same experience as your users would in the wild. Internal app sharing lets you upload test builds to Play and get a sharable link to download your app. When downloading your app from this link, you get an identical binary as would be served to users once your app is released to Play.

Play Asset Delivery

Play Asset Delivery extends the app bundle format, allowing you to package up to 2GB of game assets alongside the binary in a single artifact published on Google Play. PAD lets games larger than 150MB replace the legacy expansion files (OBBs) and rely on Play to keep assets up to date, just like you do with your game binary. It also takes care of compression and delta patching, minimizing the size of the download and getting your game to update faster.

You can then choose one of three delivery modes, depending on when you want those assets to be served to users: upfront, as part of the initial game installation; on-demand, so assets will be delivered only upon request; or fast-follow, which will trigger an additional download immediately after the game installation completes, independently of the user opening the app. Fast-follow lets you minimize time to first interaction while getting assets to users as quickly as possible.

In the coming months, we’ll release texture compression format targeting, which will allow you to include multiple texture compression format assets and rely on us to deliver them to the most advanced format supported by the requesting device.

Learn more in this session from our Game Developer Summit and check out the documentation to see integration options for Unity, Unreal Engine, Gradle, Native, and Java support.

Google Play’s best-in-class distribution

Google Play delivers billions of apps, games, updates, and dynamic feature modules every month to Android users on thousands of device types around the world. We invest a lot of time and energy into making sure your content is delivered to users as seamlessly and efficiently as possible while hiding the complexity from the user experience.

For example, we recently upgraded the download service Google Play uses. This change alone has sped up the installation of app bundle apps by an average of 6% and increased install success globally by 1%, resulting in millions more new installs for developers every week.

We’re also rolling out multiple improvements to dynamic feature module distribution, such as allowing them to be installed when your app is VISIBLE or higher, lowering the free storage threshold that triggers insufficient storage errors, and removing user confirmation for large dynamic features over Wi-Fi. This alone has resulted in 12% more successful deferred module downloads. Apps using dynamic features will benefit from these changes automatically.

Requirement for new apps in the second half of 2021

We’re continuing to make app bundles a better publishing format than APKs on Google Play. For example, the new app bundle explorer lets you manage all your app bundles in one place. You can download and attest the exact APKs that Play generates for delivery, as well as a signed, universal APK (a single, installable APK that includes all code and resources needed for supported devices) that you can use on other distribution channels.

We’ve been thrilled to see the app bundle embraced by the app and game ecosystem, and we’re excited to continue to improve it. As we announced in the Android 11 event, to help us invest in future improvements, we intend to require new apps and games to publish with the Android App Bundle on Google Play in the second half of 2021. In the same timeframe, we will deprecate legacy APK expansion files (OBBs), making Play Asset Delivery the standard option for publishing games over 150MB. We will also require instant experiences to be published via instant-enabled app bundles, deprecating the legacy instant app ZIP format.

Thank you to everyone who has already made the switch to the Android App Bundle, and a special thanks to those of you who’ve shared your feedback. Your comments help us shape the future of app bundles and improve the technology for everyone, so please continue to let us know what you think.

How useful did you find this blog post?

August 4th 2020, 9:08 am

Protecting your Google Play Console account with 2-Step Verification

Android Developers Blog

Posted by Tom Grinsted, Product Manager, Google Play Console

Google Play Console has something for everyone, from QAs and PMs to engineers and marketing managers. The new Google Play Console beta, available now at, offers customized, secure access to everyone on your team. For a closer look at some of its new features and workflows, tune in to this week’s series of live webinars, which will also be available on demand.

Granting your team members safe access to specific features in your developer account is one of the best ways to increase the value of our tools for your organization. We want to make sure that your developer account is as safe as possible so you feel confident when granting access. A key way to do that is to make sure that every person who has access to your account signs in using secure methods that follow best practices. That’s why, towards the end of this year, we’re going to start requiring users of Google Play Console to sign in using Google's 2-Step Verification.

2-Step Verification uses both your password and a second way to identify you for added security. This could be a text message to a registered phone, an authenticator app, alerts on supported devices, or a hardware security key. Normally, you only have to do this when you sign in for the first time on a new computer. It’s one of the easiest ways to increase the level of security for you and your team members’ accounts.

Learn more about 2-Step Verification here, and how to set it up for your own account.

If you have any comments or concerns about using 2-Step Verification to sign in to Google Play Console, or if you think it will impact you or your teams’ use of Google Play Console, use this form to let us know. All responses will be read by our product team and will help us shape our future plans.

Your team won’t be required to use 2-Step Verification immediately, although we recommend that you set it up now. We will start mandating 2-Step Verification with new users to Google Play Console towards the end of Q3, followed by existing users with high-risk permissions like app publishing or changing the prices in in-app products, later in the year. We’ll also remind every impacted user in Google Play Console at least 30 days before the change takes effect. We may also start to re-verify when you’re undertaking a sensitive action like changing your developer name or transferring ownership of an app.

Hundreds of thousands of Google Play Console users already use 2-Step Verification to keep their accounts safe, and it's been the default for G Suite customers for years. But we understand that requiring this may impact some of your existing workflows, which is why we’re giving advance notice of this change and asking for your feedback.

We can all take steps to keep our accounts and the developer community safe. Thanks for publishing your apps on Google Play.

How useful did you find this blog post?

August 3rd 2020, 11:43 am

11 Weeks of Android: Android Developer Tools

Android Developers Blog

Posted by Jamal Eason, Product Manager, Android

This blog post is part of a weekly series for #11WeeksOfAndroid. For each of the #11WeeksOfAndroid, we’re diving into a key area so you don’t miss anything. This week, we spotlighted Android Developer Tools; here’s a look at what you should know.

The big news

During the 11 weeks of Android, we launched a range of developer tool updates in Android Studio. As of today, you can find version 4.0 of Android Studio on the stable release channel, version 4.1 on the beta channel, and the very latest features of version 4.2 on the canary channel. The focus across each of these versions is a balance of app productivity and delivery of a high quality product that you can rely on for app development. For each day of this past week we highlighted improvements and tips in the key points of your development flow from app design, coding, deployment, build, app testing with the emulator, to app performance profiling. This blog highlights the content that we released during the Android Developer Tools week of 11 Weeks of Android.

What to watch and read

To see an overview of what is new in Android Developer Tools across the recent releases of Android Studio, check out this video from the #Android11 Beta launch which includes an exciting and in-depth demo.

What’s New in Android Development Tools


At the beginning of the week we had a day of content focused on app design tools for developers. To start, watch this overview video of the latest updates in design tools:

What’s new in Design Tools

We also posted two in-depth blog posts for the design tools day:

To debug your layouts, watch our video on the updates to the layout inspector:

Debugging UI issues with Layout Inspector

And lastly for design tools, we released a video about the latest developments for Jetpack Compose Design tools:

What's new in Compose Design Tools

Coding & Deployment

During the week, we posted tips and tricks to improve your coding experience and app deployment flow in Android Studio. Check out the following social media channels to review the latest postings:

We also shared a new video on how to use the new database inspector in Android Studio:

Database Inspector

Additionally, you will find an updated blog on the development tools we have in place for Jetpack Hilt:


In the middle of the week, we released four blogs posts around the build system in Android developer tools, which included:

Android Emulator

On top of sharing a series of best practices and tips on social media about using the Android Emulator during the week, you can also a full summary in the following in-depth article:

Performance Profilers

We know improving app performance is critical for a great user experience. Therefore, we ended the week with a day on performance profilers content. To start, we posted a video about System Trace and how you can use it to troubleshoot app performance issues:

Troubleshooting app performance issues with System Trace in Android Studio

Plus, we published a blog post on C++ memory profiling:

Learning path

If you’re looking for an easy way to pick up the highlights of this week, check out the Developer Tools pathway. A pathway is an ordered tutorial that allows users to complete a pre-defined module that culminates in a quiz. It includes videos and blog posts. A virtual badge is awarded to each user who passes the quiz. Test your knowledge of key takeaways about Developer Tools to earn a limited edition badge.

Key takeaways

Thank you for tuning in and learning about the latest in Android Development tools. Thanks to all of you who chatted with us during the Reddit AMA this week. Throughout this past week, we showcased features that can be found either in the latest stable release or the canary release channel of Android Studio. If you want to try out what you learned this week, download Android Studio today.

Below, you will find a quick listing of where you will find each of the major features. Note, that features in non-stable versions may not land in a particular version until they have reached our quality bar:

Features found in Android Studio 4.0 (Stable Channel)

Features found in Android Studio 4.1 (Beta Channel)

Features found in Android Studio 4.2 + (Canary Channel)


You can find the entire playlist of #11WeeksOfAndroid video content here, and learn more about each week here. We’ll continue to spotlight new areas each week, so keep an eye out and follow us on Twitter and YouTube. Thanks so much for letting us be a part of this experience with you!

July 31st 2020, 7:10 pm

Introducing the Motion Editor

Android Developers Blog

Posted by Scott Swarthout, Product Manager

We spoke with the Android developer community and learned that animations are important for making UIs more intuitive and memorable. However, we also heard that adding complex animation to Android apps has been a difficult task.To address this problem, we created a powerful set of APIs with Motion Layout and a corresponding tool – Motion Editor, that when combined make it easier to build pixel-perfect animations. This blog is a quick tour of the new Motion Editor and how to use the latest features during your animation development. Additionally today, you can now watch a new video series specifically created to teach you about the various APIs included with MotionLayout. Watch here.

Motion Editor is a visual design editor for the MotionLayout layout type, making it easier to create and preview animations. We just released the stable version Motion Editor in Android Studio 4.0 and we already see many developers using it to build animations.

Animation running in the Motion Editor

The Motion Editor is an extension of Android Studio’s layout editor, and automatically opens when you select the Design or Split view on an XML file containing a MotionLayout. From there, you can edit your layout and Motion Scene files using the familiar interactive tools of the Layout Editor as well as preview your animations right from the Android Studio preview pane.

Motion Editor

The Motion Editor is broken up into several panels which we will describe in this article. The main panels are: Overview, Selection, Attribute, and Preview.

The Motion Editor has four main panels

Overview panel

MotionLayout helps you animate layout changes, which you specify as transitions between ConstraintSets. The Motion Editor helps you visualize these states with the Overview panel. To edit constraints in a ConstraintSet, click on the corresponding box in the Overview panel.

MotionLayout Scene with two ConstraintSets, start and end, and a Transition between them

Selection panel

The Selection panel provides detailed controls based on the state of the Overview panel. It has three modes:

  1. Motion Layout selected
  2. ConstraintSet selected
  3. Transition selected

The selection panel has three modes depending on the state of the Overview panel

MotionLayout selected

The Motion Editor supports editing of the base Motion Layout. When Motion Layout is selected in the Overview panel, you can select components to see if they are properly constrained.

Check if components are properly constrained with the Selection panel

ConstraintSet selected

When a ConstraintSet is selected, the Selection panel displays the list of components and a checkmark to indicate if the component is constrained in this ConstraintSet.

Select components to be included in the ConstraintSet

Transition selected

When a transition is selected, you can control the playback of the animation with the animation toolbar. When an animation is selected, click Play ▶️ above the timeline to preview the animation.

Preview animations on the Motion Editor timeline


Sometimes you want to modify the path a view takes during an animation. To do this, MotionLayout uses keyframes. We build keyframe editing into the editor to make it easy to tweak animations. To create a new keyframe, click on the new keyframe icon in the top right of the selection panel. This action opens a dialog where you can set attributes for the keyframe. To edit a keyframe, click on the diamond ◆ icon to open the KeyFrame attribute panel.

Create keyframes with the selection panel

Attribute panel

Creating animations in MotionLayout involves editing lots of view parameters, so we brought the Attribute panel from the Layout Editor into the Motion Editor. The Attribute panel includes handy visualizations for Constraints as well as all the attributes set on each view in the Motion Scene file.

Constraint visualization in the Attribute panel

The Attribute panel is also where you can create custom attributes. You use custom attributes when you want to animate view properties that are not part of the ConstraintLayout or MotionLayout APIs, such as backgroundColor. We made it easy to create custom attributes with autocomplete and input validation for all view properties.

Preview panel

We wanted to make it easy to quickly edit and get immediate feedback when working on animations, so you can view animations right from the Preview panel. Now you don’t have to recompile and redeploy your app every time you want to make a small tweak to your animation.

We also added a number of features to the Preview panel to make it easier to understand how views are animating. You can preview animations with the Design view and Blueprint view to get a clearer idea of how your views are moving with fewer visual distractions.

We also added visualizations for the paths views take across the screen, including markers for keyframes. We hope these features make it easier to parse complex transitions and simplify the creation experience.

The Motion Editor is available in Android Studio 4.0, give it a try and let us know what you think! We are eager to see what the community builds with MotionLayout and the Motion Editor. The Android Studio team is constantly gathering feedback to improve the experience of using our tools, so if you have any ideas for new features or run into any issues using these tools, please file a bug.

The code used in this example, along with several other MotionLayout examples, are available on our GitHub sample page, found here.

For more information on MotionLayout, see the following links:

July 27th 2020, 9:16 pm
Get it on Google Play تحميل تطبيق نبأ للآندرويد مجانا