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

Android Studio Arctic Fox (2020.3.1) Stable

Android Developers Blog

Posted by Amanda Alexander, Product Manager, Android

We are excited to announce that Android Studio Arctic Fox is now available to download in the stable release channel. This latest release brings to life Jetpack Compose 1.0, Android's new toolkit for building native UI. The release also focuses on devices, including Wear OS, and helps with developer productivity, with features like a new Background Task Manager. We used your feedback to create this suite of new Android Studio features that will help empower the developer community to create high quality, modern apps across devices faster!

Note: As we announced last year, we adjusted our version numbering of Android Studio to match the year and version of the IntelliJ IDEA that Android Studio is based on, plus our own patch number. We will be using code names (in alphabetical order); the first is Arctic Fox and the next is Bumblebee (currently in canary).Android Studio Arctic Fox (2020.3.1) updates Android Studio to version 2020.3 of the IntelliJ platform which adds a slew of new features including debugger interactive hints, VCS updates, and several new code editor enhancements to speed up your workflow. Learn more.

To support rapid design of modern UI, we added additional features for Jetpack Compose. Compose Preview lets you create previews of multiple components of your Compose UI to instantly see the impact of your changes across dimensions (such as themes, screen and font sizes, and more). The Deploy Preview to device feature enables deploying snippets of your Compose code directly to a device or emulator so you can quickly test small parts of your code. If you want to dive deeper into your Layouts, we added Compose support to the Layout Inspector to help you understand how your layouts are rendered. Additionally, we added Live Editing of literals so you can instantly see your Compose code changes in previews and when running your app on an emulator or physical device without the need for compilation.

For increased device support, we built a new Wear OS pairing assistant to simplify the pairing of Wear OS emulators with physical or virtual phones. To use the newest Wear OS version, you can now access the developer preview of the Wear OS 3 system image. When you run the Wear OS emulator, you will also find added support for the Heart Rate Sensor API. For apps targeting Google TV, we added the newest Google TV Remote Control features and updated the Google TV system images to reflect the latest UI design. Additionally, we have completed the development and testing workflow for the Automotive OS by enabling the emulator to use car sensor data to simulate driving use cases. For apps targeting tablets, we have updated all templates to support landscape out of the box. Whether you are developing for small or large screen devices, we have included new features to help you keep innovating and building amazing apps.

Lastly, in an effort to boost developer productivity, we have added features to help you work more efficiently. For example, we added lint checks for Android 12 to provide guidance on building apps for the next version of Android. To help you test your code, we added an Accessibility Scanner for Layout Editor so you can more easily identify accessibility issues in your layouts and the new Test Matrix lets you view test results in real time across multiple devices in parallel. Additionally, we added preview support for Apple Silicon (arm64) hardware and extended the emulator controls for wider coverage in testing. Lastly, for debugging, the new Background Task Inspector helps you to analyze your app's background workers.

There are many enhancements to Android Studio Arctic Fox. To see the full list of changes, view the Android Studio Arctic Fox (2020.3.1) Beta release blog and release notes. You can take a look below at some highlights of the changes.

What's new in Android Studio Arctic Fox


Use the @Preview annotation to generate previews of Compose code and visualize the different configurations of multiple components (e.g. devices or themes). Compose Preview can make it simpler for you to construct a mental mapping of the composables in your code.

Compose Preview

Layout Inspector for Compose

For both apps written fully in Compose and apps with some Compose alongside Views, Layout Inspector makes it possible to get more details on your layouts and troubleshoot. For example, you will be able to see the parameters and modifiers passed to each composable. There is an option to turn on Live Updates to stream data from your device as you develop your app.

Compose Layout Inspector

Live Edit of literals

You can now ​​quickly edit literals (strings, numbers, booleans, etc.) inline and see the immediate results on the change on screen (previews, emulator, or physical device), without having to compile.

Live Edit of Literals: edit strings and see it reflected immediately in Preview


Wear OS Pairing

The new Wear OS Pairing assistant will help walk you through the pairing process to make pairing Wear OS emulators with virtual or physical phone simple. Note that this feature assists with pairing with Wear OS 2 companion; support for Wear OS 3 will be coming soon. Learn more.

Wear OS emulator pairing assistant dialog

Phone + Watch emulators paired successful state

Developer Productivity

Background Task Inspector

You can use the new Background Task Inspector to visualize, monitor, and debug your app's background workers when using WorkManager library 2.5.0 or higher on a device running API level 26 and higher. You can access it by selecting View > Tool Windows > App Inspection from the menu bar. Learn more.

To recap, Android Studio Arctic Fox (2020.3.1) Stable includes these new enhancements & features:



Developer Productivity

Check out the Android Studio release notes, Android Gradle plugin release notes, and the Android Emulator release notes for more details.

Getting Started


You can download the latest version of Android Studio Arctic Fox from the download page and download the Apple Silicon preview build here. 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.

July 28th 2021, 2:56 pm

Jetpack Compose is now 1.0: announcing Android’s modern toolkit for building native UI

Android Developers Blog

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

Today, we're launching version 1.0 of Jetpack Compose, Android's modern, native UI toolkit to help you build better apps faster. It's stable, and ready for you to adopt in production. We have been developing Compose in the open with feedback and participation from the Android community for the last two years. As we reach 1.0, there are already over 2000 apps in the Play Store using Compose - in fact, the Play Store app itself uses Compose! But that’s not all, we have been working with a number of top app developers and their feedback and support has helped us make the 1.0 release even stronger. Square, for instance, told us that by using Compose, they can “focus on things that are unique to Square and their UI infrastructure, rather than solving the broader issue of building a declarative UI framework”. Monzo said Compose allows them to “build higher quality screens more quickly”. And Twitter summed it up nicely: “We love it! ❤️

We designed Compose to make it faster and easier to build native Android apps. With a fully declarative approach, you just describe your UI, and Compose takes care of the rest. As app state changes, your UI automatically updates, making it a lot simpler to build UI quickly. Intuitive Kotlin APIs help you build beautiful apps with way less code, and native access to all existing Android code means you can adopt at your own pace. Powerful layout APIs and code-driven UI make it easy to support different form factors, like tablets and foldables, and Compose support is coming for WearOS, Homescreen Widgets, and more!

This 1.0 release is ready for use in production, offering key features that you need:

New Tools

The fully declarative approach in Jetpack Compose radically changes how you develop UI. To support new workflows and a different way of thinking, we are delivering new tools, designed specifically for Compose, and adding support for Compose to some of our existing tooling.

Compose Preview

The new Compose Preview, available in Android Studio Arctic Fox allows you to see your Composables in different states, light and dark theme, or different font scalings, all at the same time, making component development easier, without having to deploy a whole app to your device. Enhanced with live editing of literals, you can see updates without recompiling your project.

Deploy Preview

If you ever wished to be able to test parts of the UI on a device, without having to navigate through your app to the screen you’re working on, you will like the new Deploy Preview: just create a preview for your Composable, and deploy it on your device for fast iteration.

Compose support in Layout Inspector

Layout Inspector adds support for Composables, so that you can confidently mix Compose with existing Views.

Sharing our roadmap for Compose

Adopting any new framework requires evaluation, especially something as far reaching as a new UI Toolkit. To help you to make an informed decision whether it’s the right time for you we’re publishing a public roadmap to share our plans to continue to build out Jetpack Compose.

Learning Compose

To help you get composing, we’ve prepared an extensive set of resources for you and your team:

There’s a lot to learn! The Jetpack Compose Pathway provides a step-by-step journey through key codelabs, videos and docs to help guide you.

Enjoy composing!

We really believe that Jetpack Compose is a huge leap forward, making it so much faster and easier to build great UIs; we can’t wait to see what you build with it. Now that Compose is stable at 1.0, it’s time to get started; there’s nothing better than getting right to the code. Happy Composing!

July 28th 2021, 1:25 pm

Preparing for Google Play’s new safety section

Android Developers Blog

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

Today, we’re announcing additional details for the upcoming safety section in Google Play. At Google, we know that feeling safe online comes from using products that are secure by default, private by design, and give users control over their data. This new safety section will provide developers a simple way to showcase their app’s overall safety. Developers will be able to give users deeper insight into their privacy and security practices, as well as explain the data the app may collect and why — all before users install the app.

Ultimately, all Google Play store apps will be required to share information in the safety section. We want to give developers plenty of time to adapt to these changes, so we’re sharing more information about the data type definitions, user journey, and policy requirements of this new feature.

What the new safety section may look like:

Images are directional and subject to change

Users will see the new summary in an app’s store listing page. It’ll share the developer’s explanation of what data an app collects or shares and highlight safety details, such as whether:

Images are directional and subject to change

Users can tap into the summary to see details like:

Images are directional and subject to change

In designing our labels, we learned developers appreciate when they can provide context about their data practices and more detail on whether their app automatically collects data versus if that collection is optional. We also learned that users care about whether their data is shared with other companies, and why.

The final design is subject to change as we continue working with developers and designing for the best blend of developer and user experiences.

Policy changes to support the safety section

Today we announced new user data policies designed to provide more user transparency and to help people make informed choices about how their data is collected, protected and used.

This applies to all apps published on Google Play, including Google's own apps.

What you can expect

We want to provide developers with plenty of time and resources to get prepared.

Target Timeline. Dates subject to change.

Starting in October, developers can submit information in the Google Play Console for review. We encourage you to start early in case you have questions along the way. The new safety section will launch for apps in Google Play in Q1 2022.

We know that some developers will need more time to assess their apps and coordinate with multiple teams. So, you’ll have until April 2022 before your apps must have this section approved. Without an approved section, your new app submission or app update may be rejected.

Images are directional and subject to change

If your app’s information is not approved by the time we launch the safety section in Google Play to users in Q1 2022, then it will display “No information available.”

How to get prepared:

We’ll continue to share more guidance, including specific dates, over the next few months.

Thank you for your continued partnership in building this feature alongside us and in making Google Play a safe and trustworthy platform for everyone.

July 28th 2021, 12:54 pm

Announcing Policy Updates To Bolster Privacy and Security

Android Developers Blog

Posted by Krish Vitaldevara, Director, Product Management

We are always looking to make Google Play a safer and more trustworthy experience for developers and consumers. Today, we’re announcing new policy updates to bolster user control, privacy, and security.

Giving users more transparency into data privacy and security

We’re sharing our new policy for the upcoming safety section in Google Play alongside additional information, like data definitions. Learn more.

Improving advertising privacy and security

We’ve long offered users meaningful controls with advertising ID, like being able to reset their identifier at any time or opt out of allowing the identifier to be used for ads personalization. We’re continuing to add more controls this year.

As we pre-announced to developers on June 2, we’re making a technical change as part of Google Play services update in late 2021. When users opt out of interest-based advertising or ads personalization, their advertising ID will be removed and replaced with a string of zeros. As a reminder, this Google Play services change will be a phased rollout, affecting apps running on Android 12 devices starting late 2021 and expanding to all apps running on devices that support Google Play in early 2022. Also, apps updating their target API level to Android 12 will need to declare a new Google Play services permission in the manifest file in order to use advertising ID.

We will also test a new feature that notifies developers and ad/analytics service providers of user opt-out preferences to help developers implement user choice and add to existing policy restrictions on how advertising ID can be used. When a user deletes their advertising ID, developers will receive a notification so they can promptly erase advertising IDs that are no longer in use.

In addition, we’re prohibiting linking persistent device identifiers to personal and sensitive user data or resettable device identifiers. This policy adds an additional layer of privacy protection when users reset their device identifiers or uninstall apps.

And last, we’re offering a developer preview of app set ID for essential use cases such as analytics or fraud prevention. App set ID is a unique ID that, on a given device, allows you to correlate usage or actions across a set of apps owned by your organization. You cannot use app set ID for ads personalization or ads measurement. It will also automatically reset if all the developers’ apps on the device are uninstalled or none of the apps have accessed the ID in 13 months.

Enhancing protection for kids

As we introduce app set ID for analytics and fraud prevention, we are also making changes to further enhance privacy for kids. If an app is primarily directed to children, it cannot transmit identifiers like advertising ID. If an app’s audience is both kids and adults, then it needs to avoid transmitting these identifiers for kids.

Over the next several months, we’ll share more information for a smooth transition.

Strengthening security

Security is fundamental to enabling privacy across our platform. We’re announcing a few policy updates to help keep user data secure.

First, Google Play remains a safer ecosystem when developers actively maintain their apps. So, we will close dormant accounts if the account is inactive or abandoned after a year. This includes accounts where the developer has never uploaded an app or accessed Google Play Console in a year.

We will continue supporting developers with actively growing apps. We won’t close accounts with apps that have 1000+ installs or have in-app purchases in the last 90 days. Developers whose accounts are closed can create new ones in the future, but they won’t be able to reactivate old accounts, apps, or data.

Second, it’s important for users to have an accessible experience that is secure. So, we’re adding new requirements on how AccessibilityService API and IsAccessibilityTool can be used. These tools help build accessible experiences, which often require access to user data and device functionality. Now, all apps that use the AccessibilityService API will need to disclose data access and purpose in Google Play Console and get approval. Learn more.

Reminder on Payments policy

As we shared earlier in July, after careful consideration of feedback from both large and small developers, we are giving developers an option to request a 6-month extension until March 31, 2022 to comply with our Payments policy.

For more resources

Thank you for helping us make Google Play an even more trustworthy platform for everyone.

July 28th 2021, 12:54 pm

Accessing car hardware APIs in your app for cars

Android Developers Blog

Posted by Madan Ankapura, Product Manager

Building on our effort to enable developers to create app experiences across navigation, parking, and charging apps via Android for Cars App Library as part of Jetpack, today we’re announcing the availability of CarHardwareManager APIs as part of version 1.1 alpha02 to get developer feedback.

CarHardwareManager can be used to query the vehicle’s hardware data, such as model and make, fuel levels and other sensors. Currently, this feature is only available for Android Auto 6.7+ in the open-testing channel. Testing this in a desktop environment requires a new version of the Desktop Head Unit which will be released separately. Stay tuned here for details on when the new version becomes available.

For the entire list of changes in alpha02, 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.

In addition, if you are a developer of a parking app, you can now integrate with Google Assistant to enable users to talk to Google to open their favorite parking app and find parking while driving.

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

July 27th 2021, 7:10 pm

Allowing developers to apply for more time to comply with Play Payments Policy

Android Developers Blog

Posted by Purnima Kochikar, VP Play Partnerships

Every day we work with developers to help make Google Play a safe, secure and seamless experience for everyone, and to ensure that developers can build sustainable businesses. Last September, we clarified our Payments Policy to be more explicit about when developers should use Google Play’s billing system. While most developers already complied with this policy, we understood that some existing apps currently using an alternative billing system may need to make changes to their apps, and we gave one year for them to make these updates.

Many of our partners have been making steady progress toward the September 30 deadline. However, we continue to hear from developers all over the world that the past year has been particularly difficult, especially for those with engineering teams in regions that continue to be hard hit by the effects of the global pandemic, making it tougher than usual for them to make the technical updates related to this policy.

After carefully considering feedback from both large and small developers, we are giving developers an option to request a 6-month extension, which will give them until March 31, 2022 to comply with our Payments policy. Starting on July 22nd, developers can appeal for an extension through the Help Center and we will review each request and get back to requests as soon as possible.

Check out the Help Center and the Policy Center for details, timelines, and frequently asked questions. You can also check out Play Academy or watch the PolicyBytes video for additional information.

July 16th 2021, 3:45 pm

Android 12 Beta 3 for TV is now available

Android Developers Blog

Posted by Wolfram Klein, Product Manager, Android TV OS

Alongside today’s Android 12 Beta 3 release for mobile, we’re also bringing the third Beta of Android 12 to Android TVs. We’re excited to bring new media features, UI improvements, and privacy controls to the experience with Beta 3 while we continue our work of preparing the full release.


At the heart of the TV experience is beautiful and seamless media playback. In the US, users are spending well over 4 hours a day watching media on TV, and are always asking for the highest resolution playback possible. With Android 12, we are releasing three new features to better support ever-improving picture quality.

User Interface

A beautiful media experience needs an equally stunning user interface to match. Android TV brings two new additions to the UI that help developers provide users with a richer visual experience on high performance devices.

Example background blur used to separate UI layers.

Privacy and Security

With Android 12, we’re continuing to focus on giving users more transparency and control while keeping their devices and data secure. Beta 3 for TV includes many of the new privacy features from the Android framework.

Microphone and camera indicators showing during a video call. Video credit: Ekaterina Bolovtsova.

Microphone access toggle in a user’s global privacy settings.

The Android 12 Beta 3 release for TV is available as a system update to ADT-3 devices today. Also available in the coming weeks, you can use the preview version of the Android 12 emulator to test and build your apps for TV. We hope this helps you test your Android TV app implementations for the next generation of devices. To learn more about getting your Android TV app ready, visit our Android TV OS developers page.

We can’t wait to see what you will build with Android 12 on TV!

July 14th 2021, 5:16 pm

Android 12 Beta 3 and final APIs

Android Developers Blog

Posted by Dave Burke, VP of Engineering

Each month we’re bringing Android 12 closer to its final form, with innovative features, a new UI that adapts to you, performance improvements, privacy enhancements, security benefits, and much more. Many of you are already developing and testing on Android 12 through our Beta program - thank you for all of the feedback you’ve shared so far!

There’s still a lot to do to land this release, though, and today we’re pushing out the third Beta of Android 12 for you to try. Along with updates like scrolling screenshots, privacy indicator APIs, and enhanced auto-rotate, Beta 3 also includes the final Android 12 APIs and the official SDK. WIth these, you can start testing and updating your app ahead of Platform Stability, coming up next at Beta 4. Now is the time to make sure your apps are ready!

You can get Beta 3 today on your Pixel device by enrolling here for over-the-air updates, and if you previously enrolled, you’ll automatically get today’s update. You can also get Android 12 Beta 3 on select devices from several of our device-maker partners like Sharp and TCL - learn more at Visit the Android 12 developer site for details on how to get started.

What’s new in Beta 3?

Beta 3 includes a number of updates to improve functionality, user experience, and performance. Here are a few highlights.

Scrolling screenshots - To make it easier to capture and share scrolling content, we’re adding scrolling screenshots. Starting in Beta 3, when users capture a screenshot of content that’s scrollable, they’ll now see a “Capture more” button to extend the screenshot to the full content and they can then adjust the crop.

Capturing a scrolling screenshot in the Settings app

Scrolling screenshots work out-of-the-box for most apps -- if your app uses a standard View-based UI, no changes should be needed. For apps and UI toolkits that are not using View-based UI or that use highly customized UI, we’re introducing a new ScrollCapture API to support scrolling screenshots. With this API, the system notifies your app of scroll capture requests and provides a Surface for you to draw your UI into. We’re continuing to iterate on scrolling screenshots and in Beta 4 you’ll see improvements to the default support, such as for scrolling ListViews. We're also working to provide support for a wider variety of content (such as web content). Let us know what you think!

On-device search - With Beta 3 we’re highlighting platform support for AppSearch, a new high-performance on-device search engine. With AppSearch, apps can index structured data and search over it with built-in full-text search capabilities, and they can use native features like highly-efficient indexing and retrieval, multi-language support, and relevancy ranking.

AppSearch comes in two flavors: a local index for your app to use that’s backward-compatible through a new AppSearch Jetpack library, and a central index that’s maintained for the entire system in Android 12 (and later releases). When you participate in the central index, the system will be able to display your app’s data on System UI surfaces unless you choose to opt out. Additionally, you can securely share data with other apps, allowing them to search your app’s data as well as their own. More here.

Privacy indicator APIs in WindowInsets - In Beta 2 we added support for privacy indicators in the status bar that show when an app is using the device camera or microphone. Since the indicators can be displayed when an app is in immersive mode and could potentially cover controls or content, apps need to know where the indicators can be drawn and make any adjustments needed to prevent useful content from being covered. In Beta 3 we’ve added new privacy indicator APIs to WindowInsets that let you get the maximum bounds of the indicators and their relative placement on the screen, taking into account the current orientation and language settings. More here.

Camera and microphone toggles configurable for enterprises - In Beta 2 we also introduced new toggles that let users instantly turn off access to the device microphone and camera for all apps. We’ve now made these accessible to enterprise administrators who can set any restrictions needed on fully managed devices. More here.

New permission for CDM-paired apps starting foreground services - To better support companion apps carrying out core functionality while providing transparency to the system, apps paired with Companion Device Manager (CDM) can launch foreground services from the background by declaring a new normal permission. More here.

Better, faster auto-rotate - We’ve enhanced Android’s auto-rotate feature with face detection, using the front-facing camera to more accurately recognize when to rotate the screen. This is especially helpful for people who are using their devices while lying down on a couch or in bed, for example. For developers, this means that the auto-rotation behavior will provide a better user experience for users who have opted in through Settings. The enhanced auto-rotate feature lives within our recently announced Private Compute Core, so images are never stored or sent off the device. In Beta 3 this feature is available on Pixel 4 and later Pixel devices.

To make screen rotation as speedy as possible on all devices, we’ve also optimized the animation and redrawing and added an ML-driven gesture-detection algorithm. As a result, the latency for the base auto-rotate feature has been reduced by 25%, and the benefits of the face detection enhancement build on top of those improvements. Give the auto-rotate improvements a try and let us know what you think.

Android 12 for Games - With Game Mode APIs, you can react to the players' performance profile selection for your game - like better battery life for a long commute, or performance mode to get peak frame rates. These APIs will be tied to the upcoming game dashboard which provides an overlay experience with quick access to key utilities during gameplay. The game dashboard will be available on select devices later this year.

Play as you download on Android 12 with Touchgrind BMX

Meanwhile, play as you download will allow game assets to be fetched in the background during install, getting your players into gameplay faster.

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

Final APIs and SDK

Over the past several weeks we've been working to finalize the Android 12 APIs and today we're releasing them with Beta 3, along with the official API Level 31 SDK. We plan to reach full Platform Stability at Beta 4, when all app-facing system behaviors and non-SDK interface restrictions will also be final, in addition to the API surfaces.

If you’re compiling your app against the Android 12 APIs, we recommend using today’s release to update your environment and recompile your apps with the final SDK and latest tools.

App compatibility

With many early-adopter users and developers getting Android 12 Beta on Pixel and other devices, now is the time to make sure your apps are compatible and ready for them to use!

To test your app for compatibility with Beta 3, just 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 on areas where underlying changes may affect your app. There’s no need to change your app’s targetSdkVersion at this time, so once you’ve resolved any issues, we recommend publishing an update as soon as possible for your Android 12 Beta users.

As mentioned earlier, Android 12 will reach Platform Stability in the next release, Beta 4. With Platform Stability, all app-facing system behaviors, SDK/NDK APIs, and non-SDK restrictions will be finalized. At that time, you can begin your final compatibility testing and release a fully compatible version of your app, SDK, or library. More on the Android 12 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 3 on devices from some of our top device-maker partners like Sharp and TCL. 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 3 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.

July 14th 2021, 2:29 pm

Android Game Development Extension is now available to all Android game developers

Android Developers Blog

Posted by Lily Rapaport, Product Manager

After more than a year in closed beta, we are happy to announce that Android Game Development Extension (AGDE) is now available for all game developers to download. This milestone release of Game Tools from the Android Studio team meets game developers where they are; AGDE adds Android as a platform target to Microsoft Visual Studio, making it easier to target Android with existing multi-platform Visual Studio game projects.

AGDE is part of the Android Game Development Kit, which includes both libraries and tools that support making great games on Android. AGDE is best suited for game developers that develop primarily on Microsoft Windows using Visual Studio to write C/C++ code. Game developers that do not fall under these criteria, but are using C/C++, should use Android Studio to develop for Android.

Alongside the release of AGDE 2021.1, we recently published case studies on how our partners, Epic Games and Electronic Arts found success using AGDE.

We built AGDE as part of our effort to address game developers facing issues in targeting Android with their cross-platform workflows. At the top of the list of issues was developers’ preference to remain in a single IDE instead of maintaining multiple projects for different platforms. AGDE enables this for game developers using Visual Studio by removing the need to switch between IDEs when switching between platforms. In addition, we wanted to solve pain points around existing Visual Studio tools for Android that are often dated or suffer from integration issues. Our team is committed to having AGDE support the latest versions of the Android SDK, and NDK as well as providing updated tools easily accessible from Visual Studio. Finally, we wanted to bring you quick access to some of the most useful Android Studio capabilities, built into AGDE. Therefore, we invested in creating seamless integrations to our most popular tools, such as Studio profilers, logcat, and the Android SDK and device manager. Overall, these features are designed to make you more productive in your day-to-day game development workflow.

Build with AGDE

After downloading and installing AGDE in a Visual Studio project, you can treat Android development as you would any other platform.

Debug with AGDE

AGDE supports deploying to, running on, and debugging with both an Android emulator and a physical device. Debug sessions run inside Visual Studio, using its standard interface for breakpoints, tracing and variable inspection.

Profile with AGDE

AGDE integrates with a standalone version of Android Studio Profilers. This profiler can be launched from Visual Studio and attached to a running game session.


We know everyone has a unique build setup and there is no “one-size-fits-all” solution. That is why we are investing in making AGDE compatible with various tools commonly used by game developers.

Getting started

Download AGDE 2021.1 and see our documentation for additional details. To help you get to know AGDE quickly, we put together a few samples that demonstrate different ways you can use AGDE to configure your project.

Visual Studio IntelliSense features are compatible with AGDE. All current Android CPU architectures are supported: both ARM and Intel in 32-bit and 64-bit.

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. Learn more about Android game development, and follow us -- the Android Studio development team ‐ on Twitter and on Medium.

Microsoft and Visual Studio are trademarks of the Microsoft group of companies.

July 13th 2021, 1:13 pm

Plan for success on Google Play with Reach and devices

Android Developers Blog

Posted by Lauren Mytton, Product Manager, Google Play

Google Play has over 2.5B monthly active users, distributed across the world, using many different devices. How do you make the most of this opportunity?

The concept of quality reach

The foundations for your game’s (or app’s) success on Google Play are its reach and its quality:

To unlock the opportunity for any single user on Google Play, you need both: every user must be able to access your game, AND have a good technical experience when playing it.

This is the ideal state of quality reach.

Why quality reach is foundational to your game’s success

When you have quality reach, your game development, marketing budgets, and growth strategy can be lined up to reinforce each other, because you acquire users for whom your game performs well, and your engagement and retention strategies have higher ROI for users with good experiences.

If you have poor quality reach, you can inadvertently acquire users whom you will not be able to engage and retain. Any spend to acquire these users is likely to be wasted. But the bigger problem is that poor quality reach makes it harder for you to acquire users for whom your game does perform well, since Android vitals and user ratings may affect your game’s discoverability and conversion in the Play store.

Another scenario to keep an eye on is missed reach. Unlike poor quality reach, it may not hurt your ability to acquire users who can access and enjoy your game. However it still limits your game’s scale and possibly also its ROI.

How you achieve quality reach

There are three types of decisions that determine your quality reach:

You make these decisions when you develop and publish a game for the first time, and you continue to make them with every new release over the lifecycle of your game. You also need to think about these decisions outside your release cycle, since the Play ecosystem is constantly changing, which means your quality reach will also change over time, even if you do nothing.

However these decisions can be very hard. They require you to answer, or predict the answers to, two questions:

  1. Where are my users?
  2. Where are my issues?

These questions are challenging because of the scale and diversity of users on Google Play, both technically and geographically. Not only that, but these decisions may be made at different points in time, across both business and technical teams. How do you get them to line up?

How Reach and devices can help

We’re launching a new tool in Play Console called Reach and devices to help with these challenges. Reach and devices is a data and insights tool that helps you to plan for quality reach, by helping you understand or predict the distribution of your users and your issues across the Google Play ecosystem.

Reach and devices takes data about your app and its peers and presents it in new ways, to help you answer these questions. It also makes it easier to get all the relevant teams in your organisation on the same page.

Key features:

We’ve received great feedback during closed beta from developers who have found it useful in a variety of ways:

Get started

Visit for more information or go straight to Play Console to check it out.

July 13th 2021, 12:58 pm

Introducing the Android Game Development Kit

Android Developers Blog

Posted by Posted by Scott Carbon-Ogden, Product Manager Android Games

Today we’re launching the Android Game Development Kit (AGDK), a full range of tools and libraries to help you develop, optimize, and deliver high quality Android games.

AGDK features follow three key tenets:

In this initial launch, we’re focusing on covering three major areas where we heard a lot of feedback from our developer community: Integrated workflows, C/C++ game libraries, and performance optimization.

Integrated workflows

Generally, the less you need to switch tools, the more efficient you can be, so with AGDK, we’re providing new tools to facilitate Android game development in your primary IDE. We will focus on the bits of workflow where Google can add unique value and solve Android specific problems, while being compatible with whichever parts of your existing workflow you are comfortable with.

C/C++ game libraries

Start your C development with less Java Native Interface (JNI) by using our game libraries for C/C++ development. Most games and game engines are written in C++, whereas Android development often requires using the Java programming language. Bridging these two languages using a Java Native Interface requires effort and can introduce bugs or performance regressions. AGDK will help you build and customize game engines by providing C game libraries that minimize the use of the Java Programming language and JNI. This makes your games easier to build, debug, and maintain.

We’re focusing on what you’ve told us are your top frustrations. Initially, this will involve building foundational classes for activity and input. Longer term, we plan to make more C libraries to provide functionality that is commonly used across game engines. We're incorporating our existing frame pacing and high-performance audio libraries into this effort, and adding three new ones:

Learn more about these libraries in our C/C++ libraries session.

To make integration as easy as possible, you can get all our libraries as a Maven dependency, as a pre-compiled Zip file, or as source code.

Performance optimization

Our goal is to help you find any stability or performance issues before launch and monitor your game post-launch to catch any issues. We’re starting with the most important metrics like frame rate, loading time, and memory, and will be including new metrics over time.

Visit for our latest resources for Android game development and to download the AGDK. Check out the mobile session track for the full lineup of sessions from the Google for Games Developer Summit.

July 12th 2021, 1:45 pm

Updates from the Google for Games Developer Summit

Android Developers Blog

Posted by Posted by Greg Hartrell, Product Management Director, Google Play & Android

Last year we saw Android and Play reach new heights with people playing more games safely at home. By continually making Google Play a better place for consumers, we've made it a richer place for game developers to connect with a diverse global audience. So much in fact, that Android has reached 3B monthly active devices, and Play grew to reach 2.5B monthly active users driving 140B installations worldwide.

At Google we build for everyone, and that means we’re here to help all developers reach gamers in the right moments: from the largest game studios, to the indie shops conjuring up fun and innovative games across the world.

During our Game Developer Summit, we shared updates on a breadth of tools and solutions to help you across the lifecycle of your gaming business. We announced new tools to make game development easier, updates on a growing ecosystem to help get your games running on more screens, and new opportunities to drive your go-to-market success on Google Play.

Here’s more about everything we shared and how you can get started today.

Easier development

More screens

Go-to-market success

Check out the mobile session track for the full lineup of sessions from the Google for Games Developer Summit and bookmark for our latest resources for Android game development.

July 12th 2021, 12:45 pm

Announcing Android’s updateable, fully integrated ML inference stack

Android Developers Blog

Posted by Oli Gaymond, Product Manager, Android ML

On-Device Machine Learning provides lower latency, more efficient battery usage, and features that do not require network connectivity. We have found that development teams deploying on-device ML on Android today encounter these common challenges:

To help solve these problems, we’ve built Android ML Platform - an updateable, fully integrated ML inference stack. With Android ML Platform, developers get:

Built in on-device inference essentials - TensorFlow Lite for Android

TensorFlow Lite will be available on all devices with Google Play Services. Developers will no longer need to include the runtime in their apps, reducing app size. Moreover, TensorFlow Lite for Android will use metadata in the model to automatically enable hardware acceleration, allowing developers to get the best performance possible on each Android device.

Optimal performance on all devices - Automatic Acceleration

Automatic Acceleration is a new feature in TensorFlowLite for Android. It enables per-model testing to create allowlists for specific devices taking performance, accuracy and stability into account. These allowlists can be used at runtime to decide when to turn on hardware acceleration. In order to use accelerator allowlisting, developers will need to provide additional metadata to verify correctness. Automatic Acceleration will be available later this year.

A consistent API that spans Android versions

Besides keeping TensorFlow Lite for Android up to date via regular updates, we’re also going to be updating the Neural Networks API outside of OS releases while keeping the API specification the same across Android versions. In addition we are working with chipset vendors to provide the latest drivers for their hardware directly to devices, outside of OS updates. This will let developers dramatically reduce testing from thousands of devices to a handful of configurations. We’re excited to announce that we’ll be launching later this year with Qualcomm as our first partner.

Sign-up for our early access program

While several of these features will roll out later this year, we are providing early access to TensorFlow Lite for Android to developers who are interested in getting started sooner. You can sign-up for our early access program here.

July 9th 2021, 2:43 pm

Google Play services discontinuing updates for Jelly Bean (API levels 16, 17 & 18)

Android Developers Blog

Posted by Vikas Kansal, Product Manager, Google Play services

The Android Jelly Bean (JB) platform was first released 9 years ago and as of July 2021, the active device count is below 1%. Since then Android has released a lot of improvements and features which are not all backported to Jelly Bean. This results in increased developer and QA time spent on new features that require special handling. Consequently, we are deprecating support for JB in future releases of Google Play services. For devices running JB, Google will no longer update the Play Services APK beyond version 21.30.99, scheduled for the end of August 2021.

What does this mean as an Application developer:

The Google Play services SDKs contain the interfaces to the functionality provided by the Google Play services APK, which runs as background services. The functionality required by the current, released SDK versions is already present on JB devices with Google Play services and will continue to work without change.

Each SDK can be independently released and may update its own minSdkVersion. Individual libraries are not required to change based on this deprecation. Newer SDK components may continue to support API levels 16 through 18 but many will update to require the higher API levels. For applications that support API levels 19 or greater, you will not need to make any changes to your build. For applications that support API levels 16 through 18, you may continue to build and publish your app to devices running JB, but you may encounter build errors when updating to newer SDK versions. The error will look like this:

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library []
        Suggestion: use tools:overrideLibrary="" to force usage

Unfortunately, the stated suggestion will not help you provide app updates to devices running JB or older. In order to use the newer SDK, you will need to use one of the following options:

1. Use API level 19 as the minimum supported API level.

This is the recommended course of action. To discontinue support for API levels that will no longer receive Google Play services updates, simply increase the minSdkVersion value in your app's build.gradle to at least 19. If you update your app in this way and publish it to the Play Store, users of devices with less than that level of support will not be able to see or download the update. However, they will still be able to download and use the most recently published version of the app that does target their device.

A very small percentage of all Android devices are using API levels less than 19. We believe that many of these old devices may not be actively being used. If your app still has a significant number of users on older devices, you can use multiple APK support in Google Play to deliver an APK that uses Google Play services 21.30.99. This is described below.

2. Build multiple APKs to support devices with an API level less than 19.

Along with some configuration and code management, you can build multiple APKs that support different minimum API levels, with different versions of Google Play services. You can accomplish this with build variants in Gradle. First, define build flavors for legacy and newer versions of your app. For example, in your build.gradle, define two different product flavors, with two different compile dependencies for the components of Play Services you're using

productFlavors {
    legacy {
        minSdkVersion 16
        versionCode 101  // Min API level 16, v01
    current {
        minSdkVersion 19
        versionCode 1901  // Min API level 19, v01

dependencies {
    legacyCompile ''
    currentCompile ''

In the above situation, there are two product flavors being built against two different versions of play-services-FOO. This will work fine if only APIs are called that are available in the 16.0.0 library. If you need to call newer APIs made available with 17.0.0, you will have to create your own compatibility library for the newer API calls so that they are only built into the version of the application that can use them:

  1. Declare a Java interface that exposes the higher-level functionality you want to perform that is only available in current versions of Play services.
  2. Build two Android libraries that implement that interface. The "current" implementation should call the newer APIs as desired. The "legacy" implementation should no-op or otherwise act as desired with older versions of Play services. The interface should be added to both libraries.
  3. Conditionally compile each library into the app using "legacyCompile" and "currentCompile" dependencies as illustrated for play-services-FOO above.
  4. In the app's code, call through to the compatibility library whenever newer Play APIs are required.

After building a release APK for each flavor, you then publish them both to the Play Store, and the device will update with the most appropriate version for that device. Read more about multiple APK support in the Play Store.

July 8th 2021, 2:13 pm

MAD Skills Navigation Series 2 Wrap Up!

Android Developers Blog

Posted by Murat Yener

It’s a wrap!! We’ve just finished the second series of Navigation on MAD Skills. In this series, we re-visited Chet’s DonutTracker app and added an important missing feature: the ability to track coffee.

With new functionality comes new responsibilities. While we added coffee tracking, we also improved the navigation experience, implemented conditional navigation, modularized the app and finally learned what is changing with multiple back stack support.

Episode 1: NavigationUI

As new destinations were added to the app,we used NavigationUI to offer a better navigation UI experience. NavigationUI helped us automatically integrate NavigationView and BottomNavigationView with the existing menu ids for destinations. You can check out the video linked below or if you prefer read the article here.

Episode 2: Conditional Navigation

We added coffee tracking functionality in the first episode but no matter whether users disable or enable the coffee tracker, they could still navigate to the CoffeeList fragment. In this episode, we fixed that by adding conditional navigation and directing our users to make a selection when they launch the app for the first time.

You can find the same content in article form here.

Episode 3: Nested Graphs and Include

In the third episode, we took a step back and organized the navigation graph by using nested graphs and using the include tag to import other graphs. While keeping our project more organized, this also allowed us to modularize the app and see how navigation works with modules. Check out the article or the video below.

Episode 4: Feature Modules

In the fourth episode, we took the app a step further and converted the coffee module to a feature module. With this change, the coffee tracking feature will only be downloaded and installed for users who enabled this feature. Dynamic features allowed us to modularize the app to save network and storage for the user. To learn more, check out the video linked below or if you prefer read the article here.

Episode 5: Multiple Back Stacks

In this episode, we covered a highly requested feature, multiple back stack support for Navigation. To support multiple back stacks, all you need to do is to update your navigation and fragment dependencies. You can observe multiple back stack behavior with NavigationView and BottomNavigationView instantly without any code change!

You can also find the same content in article form here.

Episode 6: Live Q&A

Finally, we wrapped up the second series of Navigation with a live Q&A session where we answered your questions. If you missed the Q&A, make sure to check out the recording below.

Sample Apps

Donut and Coffee Tracker

The application used for the first 4 episodes in the series is the DonutTracker app which Chet built during the first Navigation series on MAD Skills. You can follow the progress in each episode by checking out the starter and solution code from this repo.

Navigation Advanced Sample

This project is used to demonstrate Multiple back stack support in Navigation. Before Navigation version 2.4.0-alpha01, this project offered NavigationExtensions to mimic the multiple back stack behavior. You can check out the solution code with updated dependencies and NavigationExtensions removed in this repo.

This brings an end to the second Navigation series but the MAD series will continue with another exciting topic! Make sure you stay tuned for more Android MADness!

July 1st 2021, 5:52 pm

The future of Android App Bundles is here

Android Developers Blog

Posted by Dom Elliott, Product Manager at Google Play

Since we launched the Android App Bundle in May 2018, we’ve seen our developer community embrace this new standard to benefit from streamlined releases and advanced distribution features. There are now over 1 million apps using app bundles in production, including the majority of the top 1,000 apps and games on Google Play such as Adobe, Duolingo, Gameloft, Netflix, redBus, Riafy, and Twitter.

To bring these benefits to more users and focus on modern Android distribution that benefits all developers, Google Play will start requiring new apps to be published with the Android App Bundle starting August 2021. This will replace the APK as the standard publishing format.

Modern Android distribution

If you haven’t made the switch to app bundles yet, here are some of the benefits you’re missing:

Recap of what’s changing starting August 2021




New apps 

on Google Play


Android App Bundle (AAB)

Expansion files (OBBs)

Play Asset Delivery or 

Play Feature Delivery

Updates to existing apps

No change

New instant experiences

Instant app ZIP

Instant-enabled Android App Bundle (AAB)

Updates to instant experiences

As a reminder, the app bundle requirement applies to new apps. Existing apps are currently exempt, as are private apps being published to managed Google Play users. Thanks to the thousands of developers who have been a part of the app bundle journey. We look forward to bringing you more improvements and features soon.

- - -

Answers to some Android App Bundle FAQs

How much work is required to use an app bundle vs an APK?

For most apps, very little work is required to build an AAB instead of an APK. It’s mostly a matter of choosing a different option at build time and then testing as normal. The app bundle is an open source format supported by major build tools such as Android Studio, Gradle, Bazel, Buck, Cocos Creator, Unity, Unreal Engine, and other engines. Play Core Native and Play Core Java & Kotlin SDKs also make it easy to start using optional, advanced app bundle features, whatever your preferred coding environment.

Why aren't expansion files (OBBs) supported with app bundles? Why should games use Play Asset Delivery?

APKs require separate files (OBBs) to serve additional resources to users. However, because OBBs are not signed and are stored in the app’s external storage, they’re not very secure. With Play Asset Delivery (PAD), games larger than 150MB can replace OBBs by publishing the entire game as a single app bundle on the Play Store. Beyond offering a smoother publishing process and flexible delivery modes, PAD carries benefits over the legacy expansion files: its delta patching of assets is optimized for large apps meaning updates require dramatically less device storage than OBBs. As a result, fast-follow drives higher install rate and store conversion rate. Finally, with ASTC now supported on ~80% of devices, texture compression format targeting lets you serve ASTC to devices that support it. You can target the widest range of Android devices while making efficient use of the available hardware and device storage.

If I use app bundles, can I still publish through multiple distribution channels/app stores?

Yes, there are multiple ways to achieve this. You can either use the same app signing key everywhere or use unique app signing keys for different channels, including a unique app signing key for Google Play. You can either build and sign artifacts for all distribution channels locally or you can download distribution APKs from Google Play for use on other channels. Distribution APKs downloaded from Google Play, either via the app bundle explorer in Play Console or via the Play Developer API, are signed with the same key used by Play App Signing.

I’m launching a new app. Can I decide what my app signing key is?

Yes, this option is available in the Play Console. When creating a new app, you can choose one of the options to provide the app signing key that Google uses. This allows you to keep a copy of your app signing key locally, for example to generate signed versions for distribution through other channels using the same key as the Play version. Soon, the Play Console will make releasing an app for the first time a little easier by giving you the ability to change your app signing key if you make a mistake, as long as you do it before you publish to an open track the first time.

When distributing apps on Google Play, how do I ensure my app is delivered to users the way I intend?

At any time, you can download and inspect artifacts from the Play Store, from the app bundle explorer in the Play Console, and via the Play Developer API to verify your app. In addition, code transparency for app bundles is a new, optional feature that can be used to inspect that code running on a device matches the code that was originally built and signed by the developer.

I have an app published on Google Play already. Can I start using Play App Signing without providing a copy of my existing app signing key?

To use Play App Signing today you have to provide a copy of your existing app signing key because Google Play needs a copy of it to sign and deliver updates to your existing users. This suits most developers, over 1M apps are using Play App Signing in production. Soon, we will add an additional option for existing apps to opt in to Play App Signing by performing a key upgrade. Choosing this option means Play App Signing can use a new, unique key for all new installs and their updates. However, for this to work, when you upload an app bundle, you also need to upload a legacy APK signed with your old key so that Google Play can continue to deliver updates to your existing users.

Can I ever change my app signing key?

Yes, some apps can request an app signing key upgrade for new installs in Play Console. Google Play will use your new key to sign new installs and app updates while using your legacy app signing key to sign updates for users who installed your app before the key upgrade. Soon, Play App Signing key upgrade will also add support for APK Signature Scheme v3 key rotation. This will make key upgrade a possible option for more apps and help apps signed with upgraded keys reach more users.

June 29th 2021, 1:34 pm

Play Dev ID requirements + 2-Step Verification

Android Developers Blog

Posted by Luke Jefferson, Product Manager at Google Play & Raz Lev, Product Manager at Google Play Trust and Safety

Over the past few years, Google Play has seen tremendous growth. Android apps and games have become a critical part of people’s lives, built by developers of all sizes from all over the world, whether professionally or just for fun.

To keep Google Play safe and secure and to better serve our developer community, we are introducing two new security measures: additional identification requirements and 2-Step Verification. These measures will help strengthen your account security and will help us better understand your needs.

Developer identification requirements

Today, when you create a new Google Play developer account, we ask you for an email address and a phone number.

With this update, account owners of developer accounts will also be asked to provide:

Your contact information allows us to share important information and updates about your app. It also helps us make sure that every account is created by a real person with real contact details, which helps us keep the Play Store safe for all users.

This information will not be public-facing and is just to help us confirm your identity and communicate.

2-Step Verification

In addition to learning more about our developer community, we’re also taking steps to improve security and keep your accounts safer by mandating that users of Google Play Console sign in using Google’s 2-Step Verification. 2-Step Verification is an additional safeguard to help protect your account, your app, and your users.

Learn more about 2-Step Verification and how to set it up for your own account.


Starting today, developer account owners will be able to declare their account type and verify their contact details. For now, declaring an account type is optional, but it will be required for any account owners who want to update their contact details.

In August, all new developer accounts will need to specify their account type and verify their contact information at sign-up. We will also make 2-Step Verification a requirement for the owners of new developer accounts.

Later this year, all existing developer account owners will be required to declare their account type, provide the required information, and verify their contact details. We will also require developers to sign in using 2-Step Verification.

Best practices

In addition to these changes, we’d like to remind you of some best practices to help keep your account in good health and make sure you don’t miss important information.

#AndroidDevJourney spotlight - June edition

Android Developers Blog

Posted by Luli Perkins, Developer Relations Program Manager

The final edition of #AndroidDevJourney spotlight features four Android developers, each with their own story to tell. Over the last six months we’ve heard from developers all over the globe who have shared their experiences in becoming Android Developers, their tips and favorite shortcuts, as well as advice for new developers entering the field.

Read all other profiles in this series:






Here are words of wisdom that were frequently mentioned:

If you’re looking for documentation, is the place to look. And if you’re searching for a community where you’ll be welcome regardless of where in the world you are, come find us on Twitter, YouTube, Reddit, Github, or a GDG meetup near you.

Vinay Gaba

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

My journey with Android started back in 2010 in a really unexpected manner. I was responsible for managing an Android workshop happening during our college tech festival. We had invited an external speaker to conduct the session and a few students had signed up for it. Unfortunately, since this was happening on a Saturday, not a single student showed up for the session.

Since the speaker had come all the way, the speaker decided to do his session anyway and share what he knew about Android with me being his only audience. I went home excited with the very basic Android fundamentals that I'd just learnt and created a scientific calculator app over the weekend. I launched it on the Google Play store as a paid app. What's more shocking is that the app had generated enough revenue in a couple days to take care of my expenses for the rest of the month. This event had a profound impact on my life and I'm so grateful that I found myself at the right place and the right time.

Since then, I've worked for some of the best engineering teams including Airbnb, Snapchat, Spotify, and Deloitte. I’ve lived across six cities in two countries, put myself through an Ivy League education on a partial scholarship, and made lifelong friendships. There was only one thing that was consistent throughout all those experiences and that is Android.

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

One shortcut that I use every single day is the command to find other commands on Android Studio using CMD + Shift + A. This is extremely useful when you are trying to do an action on Android Studio but don't know where it's hidden in our favorite IDE. Using this command opens up the "Find Action" dialog and allows you to just type what you were looking for to begin with. This shortcut saves my day on a daily basis!

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

Just ask. Early on in my career, I would often spend time trying to figure things out all by myself. While this certainly has some advantages, I would often be stuck on things longer than I should've. In a lot of cases, all I had to do was just ask someone who had more context and that would've allowed me to spend time on things that mattered. Given that we all have limited time in our day, it's critical that we choose our battles wisely.

Victoria Gonda

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

When I started college, I was majoring in dance. A friend suggested that I try a computer science course because they thought I would enjoy the types of problems you solve in code, and they were right!

Fast forward, and I had the opportunity to take part in a computer science summer research program. Over the summer, I learned Android and helped build an app to help a student with cognitive disabilities ride the local bus. It was this project that showed me how I could use software to make a difference in people's lives.

While I continued studying both dance and computer science, I pursued an internship, and later a career, that would allow me to continue to improve the world using Android development.

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

The combination of the developer tool to keep the screen on while charging and a device stand on my desk. I save so much time not needing to reach for my testing device, turn the screen on (and probably unlock it) and finally see what I'm looking for. Instead, it loads right before my eyes.

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

You don't need to define yourself by the work you do or the company you work for. I felt really conflicted when I chose a software career over a dance career. But I still dance! I felt conflicted when I moved from one company to another, but that company didn't define who I am.

Gilbert Leung

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

In 2010, I bought my first smart phone in the form of an HTC Nexus One. I was still in college back then and jumped into Android development as soon as I received the device. One of my first Android projects was a neat little keyboard / input method that took ideas from the old school T9 method and applied it onto a touch screen. Check out the video here and the Github repository here. It's been 11 years since; so much has changed. I'm now the CTO at a small startup Shuffle, yet I'm still working hard on Android development!

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

For debugging, use breakpoint logging instead of LogCat logging. Go to the line you want to log and add a breakpoint. Then right-click on the red dot of the breakpoint and deselect the Suspend checkbox. A more detailed view should suddenly open and let you select Log message to console. This avoids recompiling and rerunning the app, and is absolutely crucial in large projects that take a long time to recompile. The advanced breakpoint options can also be valuable for trickier situations.

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

I wish someone told me to browse the Android source code more often. I learned so much looking underneath the hood and developed an expertise far deeper than the average developer.

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 26th 2021, 9:13 am

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
Get it on Google Play تحميل تطبيق نبأ للآندرويد مجانا