This blogpost is a collaboration between Google and Twitter. Authored by Aaron Labiaga with support from Fred Lohner, Suzanne Xie, and Alex Ackerman-Greenberg from Twitter.
Direct Messages for the conversation space
Twitter is a social media app and source for what's happening in the world. And with Android 11’s Conversation APIs, surfacing Twitter’s Direct Messages to the conversation space makes perfect sense as it features real people talking in real time bidirectional conversations.
Conversation Notification API
To surface notifications in the conversation space, developers need to use Messaging style notifications set with a published long-livedshortcut ID. The shortcut ID allows for surfacing the conversation throughout various surfaces in the UI, including as a shortcut in the launcher. For details and sample code on how this is done, please see the conversation API guidelines.
A Q&A with the Twitter team
Frederik Lohner, tech lead of Twitter’s notifications team and Suzanne Xie, Product Management Director for Conversations on Twitter, share their experience with the migration and future prospect of its impact:
How was the migration to messaging style notifications, the technical scope and its impact on codebase?
Due to legacy reasons we first had to migrate to use MessagingStyle notifications for our DM pushes. This offered a great opportunity to clean up a bunch of technical debt, whilst allowing us the opportunity to begin testing things like auto generated replies for notifications with very little additional work on our side.
Were there any challenges in the implementation of shortcuts? As it is a requirement for the conversation space.
We found it challenging to manage the max number of published dynamic shortcuts since there is a limited number, requiring us to manually remove older shortcuts as new ones were created. The first Developer Preview didn't include a great way for managing shortcuts but this changed in Developer Preview 2, with the addition of the pushDynamicShortcut method that handled the limit for you.The addition of this method is a testament to the importance of exploring the APIs in the early stages and the impact one can have on shaping the API through testing and feedback.
What do think is the future prospect on the impact of migration, e.g. more engagement given visibility of DMs in conversation space?
We think these changes will make DM's much easier to use and look forward to getting feedback from our users. The conversation space also fits the purpose of DMs and it is important that these messages are categorized in the right space.
A people-centric experience in Android 11
Android 11 reimagines the way we have conversations on our phones, building an OS that can recognize and prioritize the most important people in your life. If your application has any notion of messaging between people then consider following the guidelines in the Android developer docs to ensure that you're taking advantage of the new conversation space. We’re excited to work with developers like Twitter to help showcase the importance of a people-centric experience on mobile phones with Android 11.
This blogpost is a collaboration between Google and Twitter. Authored by Aaron Labiaga with support from Fred Lohner, Suzanne Xie, and Alex Ackerman-Greenberg from Twitter.
Direct Messages for the conversation space
Twitter is a social media app and source for what's happening in the world. And with Android 11’s Conversation APIs, surfacing Twitter’s Direct Messages to the conversation space makes perfect sense as it features real people talking in real time bidirectional conversations.
Conversation Notification API
To surface notifications in the conversation space, developers need to use Messaging style notifications set with a published long-livedshortcut ID. The shortcut ID allows for surfacing the conversation throughout various surfaces in the UI, including as a shortcut in the launcher. For details and sample code on how this is done, please see the conversation API guidelines.
A Q&A with the Twitter team
Frederik Lohner, tech lead of Twitter’s notifications team and Suzanne Xie, Product Management Director for Conversations on Twitter, share their experience with the migration and future prospect of its impact:
How was the migration to messaging style notifications, the technical scope and its impact on codebase?
Due to legacy reasons we first had to migrate to use MessagingStyle notifications for our DM pushes. This offered a great opportunity to clean up a bunch of technical debt, whilst allowing us the opportunity to begin testing things like auto generated replies for notifications with very little additional work on our side.
Were there any challenges in the implementation of shortcuts? As it is a requirement for the conversation space.
We found it challenging to manage the max number of published dynamic shortcuts since there is a limited number, requiring us to manually remove older shortcuts as new ones were created. The first Developer Preview didn't include a great way for managing shortcuts but this changed in Developer Preview 2, with the addition of the pushDynamicShortcut method that handled the limit for you.The addition of this method is a testament to the importance of exploring the APIs in the early stages and the impact one can have on shaping the API through testing and feedback.
What do think is the future prospect on the impact of migration, e.g. more engagement given visibility of DMs in conversation space?
We think these changes will make DM's much easier to use and look forward to getting feedback from our users. The conversation space also fits the purpose of DMs and it is important that these messages are categorized in the right space.
A people-centric experience in Android 11
Android 11 reimagines the way we have conversations on our phones, building an OS that can recognize and prioritize the most important people in your life. If your application has any notion of messaging between people then consider following the guidelines in the Android developer docs to ensure that you're taking advantage of the new conversation space. We’re excited to work with developers like Twitter to help showcase the importance of a people-centric experience on mobile phones with Android 11.
Posted by Steve Hartford, Product Manager, Google Play
Google Play is committed to a healthy ecosystem, where developers succeed by creating high-quality apps that users love. Many developers realize that success using Google Play’s one-time purchase and subscription services. Over the last decade, we’ve improved the purchase experience for Android users with features like paying via carrier billing (with over 180 supported carriers today), and tools to budget expenses and easily manage subscriptions.
We’re furthering these efforts with the launch of Billing Library version 3. Now available, this newest version includes new ways users can pay, subscription promotion capabilities, purchase attribution for games, and improvements to purchase reliability and security. Starting August 2, 2021, all new apps must use Billing Library version 3 or newer. By November 1, 2021, all updates to existing apps must use Billing Library version 3 or newer.
Paying with Cash
We continuously work to ensure users worldwide can pay for your one-time purchases and subscriptions in a way that’s comfortable and convenient.
Cash remains the most widely used payment method globally with 2.7 trillion transactions across all goods and services in 2018 (Source: Euromonitor). Last year we previewed a new payment method in which the transaction is completed off-device, such as paying with cash at a local convenience store. According to World Bank, two billion people worldwide do not have access to a bank account, so these pending transactions can help unlock new buyers, especially in emerging markets where cash is a popular form of payment.
Today we’re announcing users can easily pay for one-time purchases with cash in Indonesia and Malaysia at over 50,000 locations, including at leading retailers such as 7-Eleven and Alfamart. Pending transactions will be available soon for all developers.
Cash Purchases using Billing Library 3
More places for users to discover and purchase
Billing Library version 3 unlocks the ability for users to discover and purchase items outside of your app, such as across the Play store. One example is the new frictionless subscription promo code redemption experience. Now when you offer promo codes for subscription free trials, users can easily redeem them in the Play store - even if your app isn’t installed yet. It’s a simple redeem, subscribe and install experience that reduces the effort required for users to get going.
Purchase Attribution
Many games and apps need to ensure in-app purchases are attributed to a specific in-game character, avatar, or profile. Billing Library now allows you to specify this information when launching the purchase flow. After the purchase completes, you can retrieve the information and correctly attribute the purchase. This removes the need to build a custom solution using the deprecated AIDL developer payload.
Billing Library Version Requirements
Just like Play’s TargetSDK requirements, it’s important that all users are able to benefit from any security, performance, and user experience improvements in new versions of Billing Library. At Google I/O in 2019, we released Billing Library version 2 and announced changes including a two-year support window for each major release.
This means starting August 2, 2021, all new apps must use Billing Library version 3 or newer. By November 1, 2021, all updates to existing apps must use Billing Library version 3 or newer.
After these dates, you won’t be able to publish apps that use older AIDL, Billing Library version 1 or Billing Library version 2 integrations. Apps already in the Play Store can continue to be downloaded and will process in-app purchases. Any subsequent app upgrades, however, will require Billing Library version 3 or newer.
Billing Library version support
Availability
Billing Library version 3 is available today for all game and app developers in Java and Kotlin flavors. For game developers using Unity, we also launched a Billing Library 3-based Unity IAP plugin. This plugin allows Unity developers to meet the Billing Library version requirements and access all Play billing features.
Please upgrade any billing-related SDKs and libraries to versions supporting Billing Library version 3. Reach out to the SDK or library owner if one is not available. We’re working with top providers on their Billing Library version 3 compatibility.
Next Steps
While we recommend upgrading annually, we will be supporting each major release for two years. We recommend developers use Billing Library version 3 today for all new apps, and migrate existing billing integrations as soon as feasible - well ahead of the 2021 deadlines.
For developers who haven’t moved to Billing Library, we realize the transition from AIDL can be non-trivial for existing apps, and we want to help make the move as smooth as possible. We’ve created a migration guide for apps currently using AIDL, and there’s also a video walkthrough.
We’ve also updated our documentation - including guides for purchase attribution, using promo codes, and fighting abuse. Please let us know about any implementation issues - here’s how to contact us.
For details on all the Play Commerce platform improvements, watch our “What’s New” video session.
We’re looking forward to working with you to deliver great purchase experiences in your apps and games.
Posted by Greg Hartrell, Head of Product Management, Games on Android & Google Play
In March of this year, at the Google for Games Developer Summit, we shared several new tools and services Google has been working on to help game developers. They make it easier to see how your Android games are performing, expand your reach to more devices and new audiences, and support your go-to-market with Google Play. From the level of interest shown by game developers and the great feedback provided in our developer previews, we’re excited to share the progress we’ve made on these tools, and more.
Discover more about these updates below, and in addition to these, we’ll be back August 17-21, 2020 with even more information during a full week dedicated to Android gaming products, as part of #11WeeksOfAndroid.
Android tools for mobile game development
To support you in building a great Android game, we’re working on tools that help improve productivity and overall game performance. Learn about new updates you can start using today.
ADB Incremental in Android 11 addresses the slow install speeds you may face when installing very large APKs (2GB+) with ADB (Android Debug Bridge) during game development. Accelerate APK installs up to 10x when using an Android 11 device with this new update to ADB. Download as a part of the Android 11 Developer Preview SDK.
Apply for access to our continued developer previews, including the Android Game Development Extension for cross-platform developers targeting Android with their C++ game engine and the Android GPU Inspector, a profiling tool that helps you look into the GPU of Android devices and optimize the graphical performance of games. Download the Android Studio Profilers, with updates including an expanded set of profilers and standalone profilers, available in the Android Studio 4.1 preview.
Reach more devices & users
To provide greater insights into your game’s performance and help scale your games to reach a growing player-base across the Android ecosystem, we’ve seen growing success with the adoption of Play’s dynamic delivery of game assets as well as our Integrity Protection Suite. Read on for additional launches and updates.
Android Performance Tuner now in general availability: Deliver better experiences to more users. Measure your frame rate performance and graphical fidelity, and optimize between them to achieve stable frame rates at scale across the whole Android device ecosystem. Learn how to integrate the Unity plug-in or do a custom integration.
We’ve made updates to the Android Game SDK, now available on Jetpack, making it easier to integrate. As part of our ongoing efforts to support developers building Android games on any game engine, check out the new Google Play Plugins for Unity workflow improvement, and enhancements to Unreal Engine, including built-in support for Android App Bundles, Play Asset Delivery, Android Frame Pacing, and Play Billing Library.
Reach more devices and win go-to-market
We’ve completely redesigned the Google Play Console making it easier for you to improve your app’s quality, engage your audience, earn revenue, and more. We’re also continuing to improve the Google Play Store and other services allowing you to better market your game to expanded audiences.
Console 2020: The Google Play Console has been redesigned with a clearer, smarter, and more helpful developer experience. This includes an overhauled pre-launch workflow and the release of auto install for pre-registration campaigns to help you maximize early installs. Join the beta and share feedback.
Instant play games: Introducing a new way to reach 100s of millions of new gamers by publishing an 'Instant play' game in the Play Games app. Submit your game to be eligible for featuring.
Google Play Game Services - Friends: We’ve built a new friends system to help players easily find and play with friends across Android games. Bootstrap your in-game friend networks and have your game surfaced in new clusters in the Play Games app. Apply now for the preview.
We hope you start using some of these new tools and features, and continue to share your feedback with our development teams. You can learn about all of the offerings we have to help game developers at d.android.com/games.
Android vitals is the destination for managing your app's technical quality. Over 80,000 developers take advantage of its performance and stability metrics every month.
As part of our work to help you deliver better game experiences to more Android users, we're introducing Android Performance Tuner - a new library in the Android Game SDK that unlocks game performance insights in Android Vitals. This gives you a scalable way to measure and optimize your frame rate and graphical fidelity across the whole Android device ecosystem.
Unity Boat Attack Sample with Different Optimizations
Once you have integrated Android Performance Tuner into your game and published it on Play, you'll be able to see how it performs across real users and devices with the following new features in Android vitals.
Frame rate performance
Frame Rate Performance by Quality Level and Device Model
We chart the frame time distribution across your users’ devices, broken down by quality levels that you have implemented in your game, so you can see how specific device models or hardware specifications are performing on each quality level.
Performance issues
We also analyze your performance data to help determine the likely cause of issues, so you can differentiate between problems associated with specific hardware and problems with specific screens or levels in your game. You annotate your code to give contextual information about what your game is doing at that point. This gives you full control over the granularity of the insights.
Top Device Model/Annotation Issues
We call out the top device model issue as well as the top game-specific issue to give you clear guidance on what's most important.
Underperforming Device Models by GPU
You can drill down to see a breakdown of underperforming device models by different specs, such as GPU and SoC. This allows you to decide whether you can work at the GPU or SoC-level to optimize performance. Alternatively, you may decide to change quality levels, rather than work at the device model level.
Device Model Impact, User Impact, GPU Time
You can also see the full list of device models, along with the number of affected user sessions and frame time, to help you prioritize device-specific changes. As well as total frame time, we also show you GPU time to help determine whether the device is GPU bound or has another performance problem, such as being CPU or I/O bound. All data in the device model table can be exported for further analysis and action planning.
Opportunities to make a good experience great
We can also help identify opportunities — places where you could potentially provide users with a better experience by giving them a higher quality level, enabling more advanced graphical features.
Frame Time Performance with Opportunities
The devices on the far left are more than meeting the frame times for smooth performance. You can drill down to see stats by device model and specification to see if there is an opportunity to improve the graphical fidelity across a wide range of devices.
Available (almost) everywhere
The Android Performance Tuner is intended to work across over 99% of the Android device ecosystem. You can get these insights on any Android devices around the world, from Android 4.1 (API 16) onwards.
Integrating Android Performance Tuner
Whether you have your own game engine or are using a third-party game engine, we're doing our best to make integration easy. The Android Performance Tuner relies on tick functions being called each frame. Within the library, this tick information is aggregated into histograms, which are periodically uploaded through an HTTP endpoint, so your game will need to have the internet access permission.
With our plugin for the Unity platform, you can collect frame ticks from Unity 2017.4 onwards. Unity 2019.3.14+ enables the collection of higher-fidelity performance information.
If you're doing a native source code level engine integration, we strongly recommend integrating the Frame Pacing API from the Android Game SDK to get the highest quality information. The Frame Pacing API will give you smoother frame rates and improved support for high-refresh rate displays, so it's worth integrating on its own.
Unreal 4.25+ integrates the Frame Pacing API. You enable it by adding a.UseSwappyForFramePacing=1 to the Android_Default profile to activate it for all Android devices.
Within Unreal or your native engine integration, you pass in the Swappy_injectTracer function from the Frame Pacing API at initialization to enable automatic frame time recording.
Enabling Frame Time Recording in the Android Performance Tuner for your Engine
In Unity, we recommend activating Optimized Frame Pacing within the Unity settings (Unity 2019.3+ only), but Frame Pacing isn't required in Unity to use the Android Performance Tuner.
Activating Optimized Frame Pacing in Unity 2019.3
Providing contextual information
Next, you want to define annotations to give contextual information about what your game is doing when a tick is
recorded, such as:
Current game level
Loading a specific scene
A "big boss" or other complex rendered item is on the screen
Relevant game state information
Annotation Parameters
If you're using Unity with the Android Performance Tuner plugin, you'll automatically get a scene annotation that maps to the current scene being played. The LoadingState annotation can be easily hooked up to your scripts, and you can define additional annotations within the plugin editor UI.
Annotation Parameters within the Unity Editor from the Android Performance Tuner Plugin
To pass annotation parameters from within your own game engine, you define a protocol buffer message that contains all of these annotations, such as loading state, level or scene, etc.
Fidelity Parameters and Quality Levels
You also define fidelity parameters and associate them with quality levels that your game reports back. These can be used for anything that you use in your game to reduce the complexity of the scene, such as texture quality, draw distance, particle count, post-processing effects, shadow resolution, etc. In the native integration, you define these parameters using a protocol buffer.
Example FidelityParams Proto Definition for an In-house Engine
Then, you create up to fifteen sets of quality levels as a set of values defined by the FidelityParams message, which allows the Android Performance Tuner to track its metrics against your quality data. You can create both fidelity parameters and quality levels in the Unity editor interface provided by the Android Performance Tuner for Unity plugin.
Testing your integration
We've created the Tuning Fork Monitor app to act as a local server and display data from an Android Performance Tuner-enabled app. You can call EnableLocalEndpoint() in the Android Performance Tuner Unity plugin on a development build to enable local testing. In your native integration, you set the endpoint_uri_override in the Android Performance Tuner settings.
Once local tests look great, you then enable the Android Performance Parameters API in the Google Cloud Console to test end-to-end.
Available Now
We're committed to helping you bring the best version of your game to the widest number of users and devices in the Android ecosystem. Android Performance Tuner within the Android Game SDK, the Unity plugin, and Performance Insights within Android Vitals are all available now. You can refer to our documentation for a walk through of the process for native and Unity integrations.
Posted by Stephanie Cuthbertson, Director, Product Management
Editor’s note: The global community of Android developers has always been a powerful force in shaping the direction of the Android platform; each and every voice matters to us. We have cancelled the virtual launch event to allow people to focus on important discussions around racial justice in the United States. Instead, we are releasing the Android 11 Beta today in a much different form, via short-form videos and web pages that you can consume at your own pace when the time is right for you. Millions of developers around the world build their business with Android, and we're releasing the Beta today to continue to support these developers with the latest tools. We humbly thank those who are able to offer their feedback on this release.
Today, we’re unwrapping the Beta release for Android 11 as well as the latest updates for developers from Kotlin coroutines, to progress on the Jetpack Compose toolkit, to faster builds in Android Studio, even a refreshed experience for the Play Console.
Android 11 Beta: now available
You’ve been helping us with feedback on the Android 11 developer previews since February, and today we released the first Beta of Android 11 focused on three key themes: People, Controls, and Privacy.
People: we’re making Android more 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 your life:
Conversation notifications appear in a dedicated section at the top of the shade, with a people-forward design and conversation specific actions, such as opening the conversation as a bubble, creating a conversation shortcut on the home screen, or setting a reminder.
Bubbles help users to keep conversations in view and accessible while multitasking. Messaging and chat apps should use the Bubbles API on notifications to enable this in Android 11.
Consolidated keyboard suggestions let Autofill apps and Input Method https://developer.android.com/preview/overview#timeline Editors (IMEs) securely offer context-specific entities and strings directly in an IME’s suggestion strip, where they are most convenient for users.
Voice Access, for people who control their phone entirely by voice,now includes an on-device visual cortex that understands screen content and context, and generates labels and access points for accessibility commands.
Controls: the latest release of Android can now help you can quickly get to all of your smart devices and control them in one space:
Device Controls make it faster and easier than ever for users to access and control their connected devices. Now, by simply long pressing the power button, they’re able to bring up device controls instantly, and in one place. Apps can use a new API to appear in the controls. More here.
Media Controls make it quick and convenient for users to switch the output device for their audio or video content, whether it be headphones, speakers or even their TV. You can enable this today from Developer Options, and it will be on by default in an upcoming Beta release. More here.
Privacy: In Android 11, we’re giving users even more control over sensitive permissions and working to keep devices more secure through faster updates.
One-time permission lets users give an app access to the device microphone, camera, or location, just that one time. The app can request permissions again the next time the app is used. More here.
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.
Background location: In February, we announced 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. More here.
Google Play System Updates, launched last year, lets 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, and those 12 new modules will help improve privacy, security, and consistency for users and developers.
Developer friendliness: We want to make it easy for developers to take advantage of the new release, so to make compat testing easier, we’ve:
Gated most breaking changes until you target Android 11 (so they won’t take effect until you explicitly change your manifest)
Added new UI in developer options to let you toggle many of these changes for testing
added a new Platform Stability release milestone where all API and behavior changes will be complete, so you can finalize your app updates knowing the platform is stable.
Android 11 also includes a number of other developer productivity improvements like wireless ADB debugging, ADB incremental for faster installs of large APKs, and more nullability annotations on platform APIs (to catch issues at build time instead of runtime), and more.
The first Beta for Android 11 is available today, with final SDK and NDK APIs and new features to try in your apps. If you have a Pixel 2, 3, 3a, or 4 device, enroll here to get Android 11 Beta updates over-the-air. As always, downloads for Pixel and the Android Emulator are also available. To learn about all of the developer features in Android 11, visit the Android 11 developer site.
Modern Android development
Over the past several years, the Android team has been hard at work improving the mobile developer experience, to make you more productive. This includes the Android Studio IDE, a great language (Kotlin!), Jetpack libraries to make common tasks easy, and Android App Bundles to improve app distribution. Today we call this modern Android development - bringing you the best of Android to make you as efficient and productive as possible.
Android Studio
Today, we released new features in Android Studio 4.1 Beta and 4.2 Canary, focused on a number of crucial asks from developers:
Debugging is simpler with wireless debugging over ADB with Android 11 devices. We also added the Database Inspector and Dependency Injection (Dagger) tools;
Device testing is better, with the Android Emulator now hosted directly inside the IDE. Testsnow run side-by-side so you can see results from multiple devices at the same time. And we’ve improved the device manager to more easily handle your devices.
Machine learning is easier -- you can now import your models for ML Kit and TensorFlow Lite directly in the IDE.
Build and deployment are faster thanks to Kotlin Symbol Processing, caching of the task graph in Gradle, and faster app deployment to all devices on Android 11. And the new build analyzer can help you diagnose where your build may have bottlenecks.
Games tooling is more powerful with an updated performance profiler UI, an overhauled System Trace tool, and support for native memory profiling.
Try out the latest: Android Studio 4.1 Beta and Android Studio 4.2 Canary.
Kotlin and Jetpack
Languages and libraries are a major area of investment in modern Android development, with Kotlin’s modern, concise language and Jetpack’s opinionated powerful libraries all focused around making you more productive.
With the rise in Kotlin adoption (with over 70% of top 1000 apps on Google Play now using Kotlin) and so many developers using Kotlin, we can now use it to simplify your experience in new ways. Kotlin coroutines are a language feature of Kotlin which make concurrent calls much easier to write and understand. We’re making coroutines our official recommendation, and we’ve built coroutines support into 3 of the most-used Jetpack libraries -- Lifecycle, WorkManager, and Room -- so you can write even better code.
Kotlin itself also continues to get better with every release, thanks to the awesome team at Jetbrains. Kotlin 1.4 provides faster code completion, more powerful type inference enabled by default, function interfaces, as well as helpful quality of life improvements like mixing named and positioning arguments.
We also continue to push Jetpack forward - a suite of libraries which spans multiple Android releases and is designed to make common mobile development patterns fast and easy. Many of us have long loved Dagger, so we worked with the Dagger team to bring you Hilt, a developer-friendly wrapper on top of Dagger, as a recommended Dependency Injection solution for Android. You’ll find this in alpha ready to try out. We’ve also added a second new library App Startup, to help both app developers and library developers improve app startup time by optimizing initialization of libraries. We have many more updates to existing libraries as well, including a major update to Paging 3, rewritten Kotlin-first with full support for coroutines!
The latest on our new UI toolkit, Compose
There’s one more thing you need to be super productive — and that’s a powerful UI toolkit to quickly and easily build beautiful UIs on Android, with native access to the platform APIs. That’s why we’re building Jetpack Compose, our new modern UI toolkit that brings your app to life with less code, powerful tools, and intuitive Kotlin APIs.
Today we are launching Jetpack Compose Developer Preview 2, packed with features developers have been asking us for:
Interoperability with Views (start mixing Composable functions in your existing app) (new!)
Animations (new!)
Testing (new!)
Constraint Layout (new!)
Adapter list (new!)
Material UI components
Text and editable Text (new!)
Theming and Graphics
Window management
Input and Gestures
We've also added a number of new capabilities to Android Studio 4.2, in close partnership with Jetbrains Kotlin team, to help you build apps with Compose:
Kotlin compiler plugin for code generation
Compose Preview Annotations
Real-time interactive Compose previews
Deploy individual composables to device
Compose Code completion
Sample Data API for Compose
Compose isn’t ready for production use yet, in particular as we finish performance optimizations, but we’d love you to give it a try and share feedback. We plan to launch Alpha this summer and 1.0 next year.
An all-new Google Play Console
Google Play is focused on helping developers grow their business. With that mission in mind, we've redesigned the Google Play Console to help you maximize your success on our platform. In addition to being clearer and easier to use, we've added features to help you:
Find, discover, and understand features to help you thrive on Google Play
Find new guidance on policy changes, release status, and user feedback
Better understand performance insights with new acquisition reports
Enable everyone on your team to use Play Console features with new user management options
Learn more about the new Google Play Console in this post or join the beta now at play.google.com/console. Your feedback helps us continue to improve Google Play Console for everyone, so please let us know what you think.
Wrapping it all up
But there’s so much more we’re launching that we didn’t get to talk about!
We’re launching 11 Weeks of Android to keep the conversation going, with new developer content each week on topics you’ve asked for, like UI, Jetpack and Machine Learning. Check out the schedule here to learn more.
We’re introducing a global series of online community meetups to discuss what’s new in Android 11, how to make your app compatible, and the essentials and best practices of modern Android development. Find an Android 11 Meetup near you.
Posted by Tom Grinsted, Product Manager, Google Play Console
Over the years, we’ve seen our community grow to well over a million developers, from one-person shops to companies with hundreds of Google Play Console users. As you’ve grown, Play Console has grown with you. But as we added new features to keep up with your changing needs, Play Console became increasingly busy and a little difficult to navigate. So we’ve redesigned it from the ground up to ensure it continues to help you grow your business on Google Play for years to come.
Today, you can try out the new Google Play Console by joining the beta. Visit Play Console at its new home: play.google.com/console
We’ve designed the new Play Console to be more helpful. Now you can:
More easily find, discover, and understand important features
Get new guidance on policy changes, release status, advice, and user feedback
Better understand performance insights with new acquisition reports
Inspect each of your app bundles and understand how Google Play optimizes artifacts for your users
Safely enable everyone on your team to use our features with new user management options.
On behalf of the whole team at Google Play, I’m excited to share the beta with you and to get your feedback. Many thanks to the hundreds of developers who have already provided feedback — your input helps us improve Play Console for the entire developer community.
Clearer and easier to use
The new Google Play Console is built on Google Material, the UI design system for all Google-branded products. This brings a number of advantages as explained by the project’s lead designer, Jesse Orme:
“This design system is easier to read and scan, using typography and space to delineate sections and enable clear information hierarchy. A consistent and considered set of styles and components ensure that features are as easy and intuitive to use as possible, even if you’re new to them."
The new Play Console is also responsive, so you can use it across your devices, at home, at work, or when you’re on the move. The responsive design also supports right-to-left languages including Arabic, Farsi, and Hebrew. The team is putting the finishing touches on our mobile layouts now, so these features will roll out to the beta in the coming weeks.
New navigation
Because many Play Console users can be domain specialists like Growth Managers or QAs, we’ve designed the new navigation to reflect how you work, making it easier to find all the tools for your job.
The navigation groups related features based on what you want to achieve. For instance, all of your acquisition setup, reporting, and optimization tools are now collected in a single “Grow” section. We’re also adding a search feature to the beta soon, so you can jump to specific features or pages more quickly.
The new navigation organizes features based on your goals
Similarly, we’ve made the distinction between your production track and your internal, closed, and open testing tracks much clearer. This reflects best practices and will make it easier for your team to understand the status of app’s tracks at a glance so you can release with confidence.
Clearer overviews
The new releases overview gives you a snapshot of all your tracks, so now you can see information about your internal, closed, and open testing tracks, as well as your production track. Quickly see how many users are testing your app or the latest countries you’ve rolled out to.
The new Releases overview lets you see information about all your tracks at a glance
Easier publishing
We've renamed Timed Publishing to Managed Publishing. Use it to see a summary of your changes that are in review and control when to publish on Google Play. Managed Publishing also helps you understand all the changes that have been submitted across your releases, store listings, and more. For those of you with larger teams, you can now review and coordinate all your changes in one place so everything is published at the same time.
Submit your updates for review and launch them when you’re ready
with Managed Publishing
The Artifact library has evolved into the new App Bundle Explorer, which you can find in the “Release” section. You can inspect the app bundles you’ve uploaded to Play and understand how Google Play processes them to generate optimized serving artifacts. Download everything Play generates, including APKs for pre-installing on devices and standalone APKs, access an install link for historical versions for testing purposes, and see detailed dynamic delivery information.
And when you’re launching a new app, check out our new guided setup to help you get to production with confidence.
Guided setup includes best practices to help you get to production with confidence
More ways to get the answers you need, fast
Important information is now even easier to find, with more ways to get the answers you need, right when you need them.
Clearer policy and compliance information
The new Policy status and App content sections make it easier for you to provide information Google Play needs to confirm that your apps are compliant with our policies, and to quickly see if there’s an issue that needs addressing. We know this can be a source of worry, so we designed these new sections to help guide you through the process, and they will continue to grow over time.
The App content section makes it easier to provide the information Google Play needs to confirm that your apps comply with our policies
Inbox
Rolling out soon, the new Play Console Inbox collects everything we think you’ll need to know about your apps and games. Never miss an important message, update, recommendation, or milestone.
Find important messages about your apps and games in the new Play Console Inbox
Easier education
Many of you told us that you don’t feel like you’re using the full capabilities of Google Play Console because you’re not sure what features are available or how best to use them. To help, key features now include educational pages to help your teams understand their value and how to add them to your workflows. These also serve as a hub for related information, like our comprehensive documentation on the Help Center, Play Academy courses, developer case studies, and more.
Educational pages help you understand key features and
and how to add them to your workflows
These pages can be accessed without a Play Console account so you can easily share them.
Many of you told us that you value Google Play Console’s acquisition reports because they help you understand the impact of your store listing optimization and marketing investment. But you also told us that the current report made it challenging to see how your performance was trending over time, and you wanted to analyze performance across multiple dimensions together, such as country and acquisition source.
The new acquisition reports focus on trend analysis, understanding relationships between metrics, and now support expanded dimensions including language, store listing, and reacquisition.
New filters and dimensions let you see trends by acquisition type
and region to really understand your performance
Advanced filters and dimensions let you drill down by acquisition type and region to really understand your performance. For instance, did your campaign to increase organic installs in France pay off? Now you can find out.
Rolling out soon, deeply integrated benchmarks — including over 100 app and game categories, plus countries and regions — can help you identify areas for growth and where you’re leading the market.
Better, safer team management
Another area we’ve enhanced is team-member management. The new Google Play Console includes features, insights, and data to help every member of your team, from your engineers, PMs, and QAs to your marketing managers and executives. We know that granting broad access to everyone in your organization could be a challenge, with permissions that were sometimes hard to understand, and a UI that made managing large numbers of team members difficult.
We’ve updated the new team-member management area with better, more granular controls. Written in collaboration with developers, new permission names and descriptions are clearer, so you can understand what you are — and aren’t — allowing people to do. There’s clearer differentiation between global and app-level permissions, and we’ve added full user search and bulk-edit capabilities to make managing your teams easier.
Safely grant your team members access to Play Console’s features
with granular permission controls
We want as many people as possible to benefit from Play Console’s tools, and these changes should help you grant access with confidence.
Try the new Play Console beta today
The features above are just the beginning — every page on Google Play Console has been enhanced. Features like Pre-launch reports, Android vitals, Statistics, and Play Game Services have all been made more usable and helpful.
Visit play.google.com/console to check out the beta today. Once you do, please share your thoughts using this feedback form or in Play Console using the button on the top right. Your feedback is crucial to helping our teams build better products for you.
Thank you for being a part of our community, and we hope you enjoy the new Play Console!
Two years ago, we introduced the Android App Bundle, a new publishing format that allows Google Play to help optimize your app delivery. The app bundle is now Play’s recommended publishing format; with almost 50% of all top apps & games already using it.
It replaces the traditional monolithic APK at publishing time, allowing you to package all of your languages, screen densities and device architectures into a single artifact. The bundle itself can't be installed; Play takes care of generating APKs optimized for each requesting device from the single bundle that you publish.
Dynamic Delivery with App Bundle Produces Optimized APKs
Apps have seen great success with app bundles, but games often have different delivery challenges.
Today, large Android games rely on APK Expansion Files and custom Content Delivery Networks (CDNs) to deliver content. APK Expansion Files, also known as OBBs, support large resources but require you to maintain an additional publishing artifact, which causes many developer issues. Using CDNs for resource delivery often results in a suboptimal user-experience; users install and open the game just to face a long progress bar as they wait for additional resources to be downloaded. Users may also have to wait for updated resources, rather than having them delivered as part of the game auto-update. Finally, CDNs usually aren’t free, so this way of delivering game assets also involves extra cost that needs to be accounted for.
To handle the unique needs of games, Play is introducing Play Asset Delivery, giving you dynamic delivery of the right game assets to the right devices at the right time at no additional cost. To achieve this, we extended the Android App Bundle publishing format by adding asset packs.
The contents of an Android App Bundle with one base module, two dynamic feature modules, and two asset packs.
Asset packs contain non-code game content such as textures, materials, and sounds. They are served from Google Play with large size limits that are ideal for games, and you can customize how and when each asset pack is downloaded onto a device.
Keeping assets up-to-date
Play Asset Delivery (PAD) lets you rely on Google Play to take care of updating your assets, just like it does with your game binary. When your app auto updates, the entire game gets updated, including all assets. When your users open the game, they will already have the freshest binary and assets, and they won’t need to wait for resources to get updated. Play also takes care of delta patching for you, minimizing the download size and the update time.
To handle cases when the user opens the game before it has had a chance to update, you can trigger updates within the context of your game with our In-App Updates API.
Play Asset Delivery engine support
Version 4.25 of Unreal engine supports building App Bundles with asset packs instead of APK expansion files and includes a plugin that provides function calls for managing downloads and requesting information from Play Asset Delivery.
We have built a Unity plugin that takes care of packaging your Unity Asset Bundles into asset packs and lets you build an Android App Bundle that includes them. The plugin is now available in our Package Registry and is compatible with Unity 2017.4 and higher.
For other engines, that Android Gradle plugin 4.0 release lets you combine your asset packs and your binary into an App Bundle. Just update your gradle plugin version and configure the delivery mode in the build.gradle file for each individual asset pack.
Customizing when asset packs are installed
You can customize when asset packs are installed according to three delivery modes: install-time, fast-follow, and on-demand.
install-time asset packs allow you to deliver up to 1GB of game assets as part of the initial game installation. To your app, this works like a large APK, with no need for expansion files or special API calls. Just package your assets in asset packs and publish to Play.
fast-follow asset packs are automatically downloaded as soon as the app is installed, allowing the user to start playing while important assets are still downloading. The app doesn't have to be opened for the download to start.
on-demand asset packs are downloaded upon request by the app.
Both on-demand and fast-follow assets are delivered as raw files and placed in your game’s internal storage. You can track download progress with the PAD API and access the assets directly using file system calls.
Extending Android App Bundle for Games
When using Play Asset Delivery, you get to take advantage of the App Bundle format, which allows Play to optimize the binary for the device, making it easier to support both 64-bit and 32-bit devices and different CPU architectures such as ARM and X86. We also want to help you serve the optimal set of assets to each device, and the first step in this direction is texture compression format targeting.
In an upcoming release of Play Asset Delivery, you'll be able to package textures in multiple texture compression formats, relying on Play to serve optimal assets per device model. This means you won't need to compromise by using suboptimal texture compression formats, and your users will always get the best assets suitable for their device without wasting network bandwidth or having suboptimal loading performance.
Better retention with an improved install experience
Asphalt 8 by Gameloft
Gameloft integrated Play Asset delivery into Asphalt 8, Asphalt Xtreme, and Minion Rush. Asphalt Xtreme was easy to switch from using APK expansion files to using PAD with install-time delivery. Asphalt 8 and Minion Rush both originally used a custom CDN, which Gameloft replaced with PAD. They were able to leverage fast-follow and on-demand delivery by replacing their custom CDN calls with calls to the PAD API. They saw the expected reduction in CDN costs, but with fast-follow delivery, they have also seen a significant increase in the number of users who completed the secondary download to start playing the game. This resulted in better user retention, with 10% more new players compared to their previous CDN asset delivery system. With the promising early results and seamless implementation process, Gameloft plans to use PAD in more of their upcoming releases. Read more about their experience.
US-based developer RV AppStudios has over 200 million downloads to date across their portfolio of casual games, educational kids apps, and utility apps. Their Puzzle Kids app delivers over 23 MB of assets as players progress through the levels. When they switched from a third-party CDN to using Play Asset Delivery’s on-demand mode, they saw a 4.7% increase in 15-day retention and 21% reduction in crashes & ANRs. Overall, these changes helped improve the user experience by offering more stable, transparent, and secure downloads, while also saving costs for RV AppStudios. Read more about their experience.
Play Asset Delivery is available now
We're committed to helping you serve your entire game through Play with customized dynamic delivery. Play Asset Delivery, with the new app bundle format for games, along with its three delivery modes and updates + patching are all generally available. You can find documentation at d.android.com that will walk you through the integration process depending on the game engine you use.
During these uncertain times, we’re humbled by the many developers around the world who are finding ways to keep doing what they do best—create amazing apps for Android. Whether you’re working from your kitchen table on a laptop or from a home office, you need tools that keep up with you. Android Studio 4.0 is the result of our drive to bring you new and improved tools for coding smarter, building faster, and designing the apps your users depend on, and it’s now available on the stable channel.
Some highlights of Android Studio 4.0 include a new Motion Editor to help bring your apps to life, a Build Analyzer to investigate causes for slower build times, and Java 8 language APIs you can use regardless of your app’s minimum API level. Based on your feedback, we’ve also overhauled the CPU Profiler user interface to provide a more intuitive workflow and easier side-by-side analysis of thread activity. And the improved Layout Inspector now provides live data of your app’s UI, so you can easily debug exactly what’s being shown on the device.
As always, this release wouldn’t be possible without the early feedback from our Preview users. So read on or watch below for further highlights and new features you can find in this stable version. If you’re ready to jump in and see for yourself, head over to the official website to download Android Studio 4.0 now.
Design
Motion Editor
The MotionLayout API extends the rich capabilities of ConstraintLayout to help Android developers manage complex motion and widget animation in their apps. In Android Studio 4.0, using this API is made easier with the new Motion Editor—a powerful interface for creating, editing, and previewing MotionLayout animations. You no longer have to create and modify complex XML files; the Motion Editor generates them for you, with support for editing constraint sets, transitions, keyframes, and view attributes. And if you do want to see the code the editor creates, it is one click away. And just as conveniently, for developers already using ConstraintLayout, the IDE can easily convert those to MotionLayout. Learn more
Create, edit, and preview animations in the Motion Editor
Upgraded Layout Inspector
Have you ever wanted to investigate where a value for a particular attribute came from? Or see a live 3D representation of nested views to more easily inspect your view hierarchy? With the new Layout Inspector, debugging your UI is much more intuitive by giving you access to data that stays updated with your running app and providing insights on how resources are being resolved.
Debug your app’s UI in real-time with Live Layout Inspector
Use the live Layout Inspector by selecting View > Tool Windows > Layout Inspector from the main menu. If you are deploying to a device running API 29 level or higher, you have access to additional features, such as a dynamic layout hierarchy that updates as views change, detailed view attributes that also help you determine how resource values are resolved, and a live 3D model of your running app’s UI. Navigate, animate, and transition between views on your running app while always having the ability to debug your UI to pixel perfection. Learn more
Layout Validation
Compare your UI across multiple screens with Layout Validation
When you’re developing for multiple form-factors, screen sizes, and resolutions, you need to verify that changes you make to your UI look great on every screen you support. With the Layout Validation window, you can preview layouts on different screens and configurations simultaneously, so you can easily ensure your app looks great across a range of devices. To get started, click on the Layout Validation tab in the top-right corner of the IDE.
Develop & Profile
CPU Profiler UI Upgrades
The improved UI of the CPU Profiler
The CPU profiler is designed to provide a rich amount of information about your app’s thread activity and trace recordings. So, when you provided us feedback about how we can make the UI even more intuitive to navigate and the data easier to understand, we listened. In Android Studio 4.0, CPU recordings are now separated from the main profiler timeline and organized in groups to allow for easier analysis. You can move groups up and down, or drag-and-drop individual items within a group for additional customization.
Easier side-by-side analysis of thread activity
For easier side-by-side analysis, you can now view all thread activity in the Thread Activity timeline (including methods, functions, and events) and try new navigation shortcuts to easily move around the data—such as using W, A, S, and D keys for fine-grained zooming and panning. We’ve also redesigned the System Trace UI so Events are uniquely colored for better visual distinction, threads are sorted to surface the busier ones first, and you can now focus on seeing data for only the threads you select. Finally, we invested in the quality of the CPU profiler, and consequently we’ve seen a significant decrease in the user-reported error rates of recordings since Android Studio 3.6. There are even more improvements to try, so learn more.
Smart editor features when writing rules for code shrinking
Smart editor feature when writing rules for R8
R8 was introduced in Android Gradle plugin 3.4.0 to combine desugaring, shrinking, obfuscating, optimizing, and dexing all in one step—resulting in noticeable build performance improvements. When creating rules files for R8, Android Studio now provides smart editor features, such as syntax highlighting, completion, and error checking. The editor also integrates with your Android project to provide full symbol completion for all classes, methods, and fields, and includes quick navigation and refactoring.
IntelliJ IDEA 2019.3 platform update
The core Android Studio IDE has been updated with improvements from IntelliJ IDEA 2019.3 and 2019.3.3 releases. These improvements largely focus on quality and performance improvements across the IDE.
Kotlin Android live templates
Live templates is a convenient IntelliJ feature that allows you to insert common constructs into your code by typing simple keywords. Android Studio now includes Android-specific live templates for your Kotlin code. For example, simply type toast and press the Tab key to quickly insert boilerplate code for a Toast. For a full list of available live templates, navigate to Editor > Live Templates in the Settings (or Preferences) dialog.
Clangd support for C++
For developers writing C++, we have switched to clangd as the primary language analysis engine for code navigation, completion, inspection, and showing code errors and warnings. We also now bundle clang-tidy with Android Studio. To configure Clangd or Clang-Tidy behavior, go to the IDE Settings (or Preferences) dialog, navigate to Languages & Frameworks > C/C++ > Clangd or Clang-Tidy, and configure the options.
Build
Android Gradle plugin 4.0.0 includes support for Android Studio’s Build Analyzer by using Java 8 language APIs (regardless of your app’s minimum API level), and creating feature-on-feature dependencies between Dynamic Feature modules. For a full list of updates, read the Android Gradle plugin 4.0.0 release notes.
Build Analyzer
Address bottlenecks in your build performance with Build Analyzer
Android Developers rely on a variety of Gradle plugins and custom build logic to tailor the build system for their app. However, outdated or misconfigured tasks can cause longer build times that lead to frustration and lost productivity. The Build Analyzer helps you understand and address bottlenecks in your build by highlighting the plugins and tasks that are most responsible for your overall build time and by suggesting steps to mitigate regressions. Learn more
Java 8 Language library desugaring in D8 and R8
Previous versions of the Android Gradle plugin supported a variety of Java 8 language features for all API levels, such as lambda expressions and method references, through a process called desugaring. In Android Studio 4.0, the desugaring engine has been extended to support Java language APIs, regardless of your app’s minSdkVersion. This means that you can now use standard language APIs, which were previously available in only recent Android releases (such as java.util.stream, java.util.function and java.time). Learn more
Feature-on-feature dependencies
Feature-on-feature dependencies
When using Android Gradle plugin 4.0.0 and higher, you can now specify that a Dynamic Feature module depends on another feature module. Being able to define this relationship ensures that your app has the required modules to unlock additional functionality, resulting in fewer requests and easier modularization of your app. For example, a :video feature can depend on the :camera feature. If a user wants to unlock the ability to record videos, your app automatically downloads the required :camera module when it requests :video. Learn more
New options to enable or disable build features
The Android Gradle plugin has built-in support for modern libraries, such as data binding and view binding, and build features, such as auto-generated BuildConfig classes. However, you might not need these libraries and features for every project. In version 4.0.0 of the plugin, you can now disable discrete build features, as shown below, which can help optimize build performance for larger projects. For the DSL and full list of features you can control, see the release notes.
android {
// The default value for each feature is shown below.
// You can change the value to override the default behavior.
buildFeatures {
// Determines whether to support View Binding.
// Note that the viewBinding.enabled property is now deprecated.
viewBinding = false
// Determines whether to support Data Binding.
// Note that the dataBinding.enabled property is now deprecated.
dataBinding = false
...
}
}
Android Gradle plugin DSL for enabling or disabling build features
Essential support for Kotlin DSL script files
Android Studio 4.0 now has built-in support for Kotlin DSL build script files (*.kts), which means that Kotlin build scripts offer a full suite of quick fixes and are supported by the Project Structure dialog. While we are excited about the potential for using Kotlin to configure your build, we will continue to refine the Android Gradle Plugin’s DSL API throughout the next year, which may result in breaking API changes for Kotlin script users. Long term, these fixes will make for a more idiomatic, easy-to-use DSL for Kotlin script users.
Dependencies metadata
When building your app using Android Gradle plugin 4.0.0 and higher, the plugin includes metadata that describes the library dependencies that are compiled into your app. When uploading your app, the Play Console inspects this metadata to provide alerts for known issues with SDKs and dependencies your app uses, and, in some cases, provide actionable feedback to resolve those issues.
The data is compressed, encrypted by a Google Play signing key, and stored in the signing block of your release app. If you’d rather not share this information, you can easily opt-out by including the following in your module’s build.gradle file:
android {
dependenciesInfo {
// Disables dependency metadata when building APKs.
includeInApk = false
// Disables dependency metadata when building Android App Bundles.
includeInBundle = false
}
}
Disable dependency metadata for your APKs, app bundle, or both
To recap, Android Studio 4.0 includes these new enhancements & features:
Design
Motion Editor: a simple interface for creating, editing, and previewing MotionLayout animations
Upgraded Layout Inspector: a real-time & more intuitive debugging experience
Layout Validation: compare your UI across multiple screen dimensions
Develop & Profile
CPU Profiler update: improvements to make the UI more intuitive to navigate and the data easier to understand
R8 rules update: smart editor features for your code shrinker rules, such as syntax highlighting, completion, and error checking
IntelliJ IDEA 2019.3 platform update with performance and quality improvements
Live Template update: Android-specific live templates for your Kotlin code
Clangd support: Clangd and Clang-Tidy turned on by default
Build
Build Analyzer: understand and address bottlenecks in your build
Java 8 language support update: APIs you can use regardless of your app’s minimum API level
Feature-on-feature dependencies: define dependencies between Dynamic Feature modules
buildFeatures DSL: enable or disable discrete build features, such as Data Binding
Kotlin DSL: essential support for Kotlin DSL script files
For a full list of changes, read the official release notes.
Getting Started
Download
Download Android Studio 4.0 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.
As always, we appreciate any feedback on things you like, and issues or features you would like to see. If you find a bug or issue, please file an issue. Follow us -- the Android Studio development team ‐ on Twitter and on Medium.
In just under a week, we’ll kick off #Android11: The Beta Launch Show, your opportunity to find out what’s new in Android from the people who build Android. Join us on June 3, 11AM ET (8AM PT, 4PM BST, 8:30PM IST) as we unveil new features packed inside the next release, Android 11, as well as updates to help developers get the most out of modern Android development. You’ll be able to watch the show live on YouTube (don’t forget to set a reminder) or Twitter, and can sign-up for updates here.
Get your #AskAndroid questions answered live
Got a burning question? We’ve got experts ready to answer your #AskAndroid questions, and we’ll be wrapping up the show with a live Q&A session. All you have to do is share your question on Twitter using #AskAndroid, and we’ll be selecting questions for Android engineering and product leads Dave Burke and Stephanie Cuthbertson to answer live on-the-air.
Check out the list of talks
Also on June 3, we’ll be sharing 12 talks on a range of topics from Jetpack to Android Studio and Google Play–talks that we had originally planned for Google I/O–to help you take advantage of the latest in Android development. We just posted the full list of talks on the event page.
Sketchnote with us
We want to see your take on the show, so grab your best pens, markers, and paper, download the template, and get ready to show off your sketchnote skills during The Beta Launch Show. Don’t forget to share your work using the hashtag #Android11 for a chance to be featured.
We can’t wait to share with you the latest we’ve been working on with you in just over a week at #Android11: The Beta Launch Show!