Author Archives: Android Developers

Peloton increased its multi-device support and saw an uptick in user engagement

Posted by the Android team

The Peloton App makes it easy for people to work out wherever they want, whenever they want. From living room yoga classes to guided audio runs outdoors, Peloton strives to create an engaging exercise experience that works for anyone, anywhere.

For Peloton, creating convenient workouts means making the Peloton App more accessible across surfaces. So after receiving numerous requests to upgrade its Android app experience from its community, along with the Pixel Watch announcement at Google I/O in 2022, the Peloton team saw an opportunity to boost the app’s support across the entire Android ecosystem, ensuring its Members receive a seamless Peloton experience on all their devices.
Quote card with text reads, 'We want to meet Members where they are and on all the devices they own'- Stefan Haaker, senior Android engineer at Peloton. Peloton logo.

Building the Wear OS experience

Peloton developers began updating the app’s multi-device support by creating a modern watch application for Wear OS devices using Compose for Wear OS. With the Compose toolkit, Peloton developers were able to quickly build a watch experience that met Wear OS guidelines. “The Wear OS app was our first usage of Compose in production,” said Stefan Haacker, a senior Android engineer at Peloton. “We really enjoyed how much more productive it made us.”

The Peloton team released the first wearable app version just after the Pixel Watch launched. They worked tirelessly to get the app ready between the announcement of the Pixel Watch and its launch. Thanks to the Jetpack Compose toolkit, Peloton developers were able to rapidly and efficiently prepare the app in record time.

The new wearable app gave Peloton Members more options for monitoring their heart rate in real time. Using the Data Layer API to synchronize information between wearables and the Peloton App, Members can now view their heart rate across devices—from their phones to their watches to their bikes—as they take a Peloton class.

“Before the Wear OS app was released, only a small percentage of Android Members worked out with a heart rate monitor (HRM). After releasing Peloton on Wear OS, the app had a 6X increase in HRM usage in just a few months,” said Stefan. “For Peloton, HRM usage correlates with a better user experience, increased user engagement, and more workouts a month.”

With more Members tracking their health and fitness data through the new Peloton app, it was important for the Peloton team to give them better access to that data. That’s why Peloton was excited to partner with Google to offer Health Connect integration from day one, giving its users a simpler way to consolidate and share their fitness data across applications.

Increased support across devices

Peloton developers wanted to embrace the uniqueness of each device across the Android ecosystem and focus on the individual benefits that their form factors could offer. With this mindset, it was easier for the Peloton team to create a flexible UI that could adapt to various screens.

“We had to stop developing and designing with rigid device categories in mind,” said Ward Bonnefond, a senior staff software engineer at Peloton. “Phones these days no longer have just a single rectangular screen.”

The Peloton team began optimizing for large screens and foldables by improving how the app handles window resizing across orientations and devices. Using resizable emulators, Peloton developers were able to ensure the app behaved as expected with different configurations and screen sizes.

“We used RecyclerViews to determine the number of columns the app displays at runtime based on the available screen size,” said Ward. “We removed restrictions on activity resizing and orientation locking so that our app would function properly in full screen, split screen, resizable floating windows, and foldables.”

Peloton developers used Jetpack WindowManager to support foldable-specific use cases, like tabletop mode for the app’s video player. The window manager library made it easy for developers to place a video above a device’s fold and workout metrics below it.

Peloton developers also streamlined the login process on Android TV. Instead of forcing Members to fumble over typing their credentials with a remote, they can now login through the Peloton App on their phone to quickly connect with their TV.

Quote card with text reads, 'With the Android SDK and Jetpack Libraries, it’s really easy to create a flexible UI that adapts to the different screen size.' — Ward Bonnefond, senior staff software engineer at Peloton

More devices, more opportunities

Since launching the all-new Wear OS application and enhancing support across Android devices, Peloton has seen an uptick in total workouts taken on the Android platform. Although other factors were at play, the Peloton team attributes much of that increase to the new wearable application.

“There are so many different devices with varying capabilities in the Android ecosystem, like phones, watches, tablets, TVs and more,” said Ward. “At the end of the day, we want the Peloton App to be awesome wherever Members use it.”

Get started

Learn how you can start developing for Wear OS and other Android devices today.

Top things to know from Google Play at Google I/O ’23

Posted by Tom Grinsted, Group Product Manager, Google Play

Here at Google Play, our mission is to support developers with the tools and opportunities you need to reach billions of people around the world. At this year’s Google I/O, we announced new tools, features, and updates to help your business thrive. If you missed this year’s event, check out our recap video below, or read on for our top 3 announcements from I/O.

#1: New custom store listing features

We’ve made three big updates to custom store listings, giving you more ways to deliver personalized content to a wider audience.

  • Re-engage lapsed users by showing them why they should give your app or game another chance with inactive user custom store listings
  • Create a seamless marketing funnel to increase conversions by directing users to specific custom store listings for your Google Ads App campaign ad groups
  • Mange more listings faster and easier with Store Listing Groups which allow you create a base listing, then modify specific elements for different audiences
Image showing a base listing as the primary template with modified elements for three different audiences, shown as the 'Halloween Group', via Store Listing Groups in Google Play
Create a base listing as your primary template and modify elements for different audiences with Store Listing Groups

#2: Generative AI and machine learning for store listings

Draft better content with less effort with our new experimental integrated AI helper. For example, if you’re writing a listing in English, you can now enter prompts like your intended audience and theme and it will generate a draft you can edit, discard, or use.

Moving image depicting drafting a store listing using a few prompts with the AI helper in Google Play
Draft an AI-generated store listing with just a few prompts

We’re also leveraging our machine learning technology to help you connect with users in their native language. More specifically, we’re launching a new machine translation feature in Play Console which uses Google Translate and new machine models for 10 language at no cost to Play developers.

#3: Price experiments

Finally, we launched price experiments for in-app products, which allows you to A/B test price points to better reach both new and existing buyers. You can set up experiments in minutes in Play Console, testing the price sensitivity of buyers for selected in-app products across different markets. Better understand buyer behavior with added support for key monetization metrics such as revenue uplift, revenue derived from new installers, buyer ratio, and orders, giving you statistical confidence in your decisions.

Screen capture of 'Lower price points in emerging markets' price experiment in Play Console
Find the right price point for your in-app products with our experiments tool in Play Console

If you’re not sure where to start, head over to strategic guidance in Play Console for a holistic view of your monetization data and influential performance metrics. Our new pricing features help you identify opportunities for growth to help you effectively generate revenue while uncovering opportunities for buyer conversion.

Learn more about how you can take advantage of price experiments here.

And that's our top 3 Google Play announcements from Google I/O 2023, but we launched so much more to help you grow with us - check out this blog post for more.

Developers guide to Pixel Fold and Pixel Tablet: get your app large screen ready

Posted by Alex Vanyo, Developer Relations Engineer

At Google I/O we announced that Pixel Tablet and Pixel Fold are joining our Pixel family of devices. With pre-orders ongoing, now is the time to update your applications to work great on these devices!

This blog covers two topics: what makes Pixel Fold and Pixel Tablet unique, and how you can test your app on these devices before they are generally available.

What makes Pixel Fold and Pixel Tablet unique?

The good news about Pixel Fold and Pixel Tablet is that, if your app is already optimized for larger screens, you won’t have much to do.

For general large screen developer guidance, start with developer.android.com/large-screens. Additionally, we published a blog post right before I/O with some common do’s and don’ts for large screens. And we published a whole set of videos at I/O for how to optimize your apps for large screens.

Besides the general large screen development guidance, there are a few things that make Pixel Fold and Pixel Tablet unique in the market today:

  1. Pixel Fold unfolds from portrait to landscape (not portrait to portrait)
  2. Pixel Fold rear camera sensor orientation is orthogonal to the inner display orientation
  3. Pixel Tablet has a dock

We’ll go through each of these individually so you know what to look out for when updating your own apps.

Provide a delightful unfold experience

One of the most frequent app issues we encountered during the development of Pixel Fold is apps that don’t account for dynamically going from a portrait to landscape display environment. On Pixel Fold and Pixel Tablet, the user can rotate and fold their device as they choose, and multitask with any app. If an app restricts orientation or resizability, the system places the app into a compatibility mode when the user is using the app in a configuration the app doesn’t support directly. Past assumptions made in your app, like assuming that the app is running fullscreen and it won’t be resized, can cause issues with these new devices.

There are two classes of problems apps experience when a user is unfolding a device:

  • Continuity
  • Layout

Continuity

If you don’t manage and save UI states properly, your user can lose state when going from the folded outer display to the unfolded inner display. This can be extremely frustrating for users. For example, a user might begin filling out a form in an app in a small window in multi-window mode or on the outer display of a foldable and realize the extra screen area of a larger window or screen would be helpful for completing the task. If your app loses state, the user loses all previous form entry data and is forced to start all over. While this is not unique to Pixel Fold (the same bugs would likely occur if your app were resized in multi-window mode), the situation becomes a lot more common on a foldable when the act of going from folded to unfolded is a common occurrence.

The takeaway: make sure you’re saving UI state properly.

Layout

Another issue we see is apps being letterboxed on the inner display, even if they support a landscape layout. We’ve also seen cases where apps can be letterboxed on the Pixel Fold inner display when the device is held in the natural landscape orientation, but rotating the device to portrait and back to landscape can make the apps return to full screen!

All of these bugs originate from “isTablet” boolean logic.

Let’s assume we’re working on an app that uses “isTablet” logic to determine if the activity orientation should be restricted to portrait. We see a lot of developers do this to restrict their layout to portrait on phones, but unlock landscape support on large screen devices. A common way to determine isTablet is to use a smallest-width qualified boolean value (for example, isTablet=true for sw>=600dp) or equivalent code using the WindowMetricsCalculator computeCurrentWindowMetrics APIs.

Let’s walk this logic through the scenario of a user doing the following steps with Pixel Fold:

  1. Open the app on the outer display
  2. With the app still open, unfold the device
  3. Rotate the unfolded device to portrait
  4. Rotate the device back to landscape
Step 1: Open the app on the outer display
In this case, the smallest-width value is < 600dp and reports isTablet=false. The app restricts the activity’s orientation to portrait and the app won’t rotate to landscape on the outer display.

Step 2: Unfold the device
When the device is unfolded (to landscape), the activity’s orientation is still restricted to portrait. Android recognizes this and applies letterboxing to the application so the user doesn’t need to rotate the device to continue using the application. The configuration’s size metrics and the WindowMetricsCalculator computeCurrentWindowMetrics API both return the display metrics of the letterboxed window, not the entire size of the device screen. Therefore, display metrics of the letterboxed window still have the smallest width < 600dp, so isTablet still evaluates to false, meaning the orientation is still restricted to portrait.

Step 3: Rotate the unfolded device to portrait
When the user rotates the inner display to portrait, the application can take advantage of the full display since the activity’s orientation and the display orientation match. In this case, the smallest width is > 600 dp and isTablet evaluates to true. If you have application logic to stop restricting the activity orientation based on these criteria, your activity will no longer be portrait but will instead become unspecified.

Step 4: Rotate back to landscape
Now when you rotate to landscape, the application takes advantage of the entire screen, and there will be no letterboxing. While this is the desired outcome, the steps to get there can be extremely confusing for a user! Users won’t understand why your application is full screen landscape in some cases but not others.

There are two ways to fix this:

  1. Stop restricting activity orientation
  2. Use the Jetpack WindowMetricsCalculator computeMaximumWindowMetrics API to determine the maximum size your window could be on the current display.

We strongly recommend the first way. If your application is functional and usable in landscape on a traditional phone display, we encourage you to not restrict the app to portrait in any situation. Android has an auto-rotation lock feature (and Pixel Fold enables users to specify this setting independently for the outer and inner display), so let the users decide if they want to always use their outer display in portrait or not.

If your app has glaring usability or functional issues on a landscape, traditional phone-size display, then use the WindowMetricsCalculator computeMaximumWindowMetrics API to retrieve the maximum size your app’s window could be if resized. We have a cookbook recipe for this specific use case. However, this should be a temporary solution until you make your landscape layout work everywhere.

Make your camera preview work for all states

Camera preview is a complex topic that’s applicable only if your application uses the camera directly, so we’ll just highlight the problem and make a quick recommendation. For more advanced uses of Android camera, see the in-depth Camera preview guide.

Recommendation: Unless you have advanced Camera API requirements, use the CameraX library, which contains easy-to-use APIs that avoid many of the camera preview orientation concerns described below.

Problem: This is related to the layout issue. Because the outer and inner displays of some foldables have different natural orientations, it can’t be true that both displays match the rear camera sensor orientation. So, one of the displays has to be orthogonal to the camera sensor. For Pixel Fold, this means the inner display natural orientation of landscape is rotated relative to the main camera sensor's natural orientation of portrait.

Images of portrait rear camera preview on protrait outer screen and landscape inner screen of Pixel Fold
Portrait rear camera preview on portrait outer screen and landscape inner screen of Pixel Fold

This can cause difficulty when building camera preview displays if you have previously assumed that the camera orientation always matches your UI orientation. You need to make sure you’re handling rotation logic for the displays and sensor properly so you don’t get a distorted, rotated, or cropped camera preview. If you are also restricting orientation and your app is letterboxed, the orientation of your app may not match the orientation of the device or the orientation of the camera.

There is a lot of depth to this topic, but the Camera preview guide will help you get through this step by step.

Handle the Pixel Tablet dock

Last but not least is the Pixel Tablet charging speaker dock.Outputting sound to the dock is just like outputting to the external speakers, and apps shouldn’t really need to do anything to update for the dock out of the box.

Image showing removing Pixel Tablet from the dock
Removing Pixel Tablet from the dock

Docking and undocking triggers a uiMode configuration change.

Make sure your app works as expected when going from docked to undocked and back.Most apps already handle this gracefully.

This could happen if you are doing something in your application’s onConfigurationChanged handlers that would cause a disruptive experience when a device is docked or not. For example, if your application includes an element that’s playing media or other content, don’t pause playback when onConfigurationChanged is called. Many apps already handle this well and there’s not much to consider. This will be a nuisance to users who may be watching a video on the dock and then want to take it on the go, or who start playing music while holding the tablet and then dock it to use the dock’s better speakers.

Test your apps… today!

Once you’ve updated your application to work great on large screen devices, you can test them in the new Pixel Fold and Pixel Tablet configurations in Android Studio Hedgehog Canary 3 or later. These emulators are great for testing layout, but we are continuing to improve these emulators to serve more features in the future.

Screen grab of API 34 Pixel tablet and Pixel Fold emulators in Android Studio
API 34 Pixel Tablet and Pixel Fold emulators in Android Studio

To test camera preview orientation flexibility, we recommend trying any tablet with your camera preview in multi-window mode and continuously resizing your application window to make sure your camera preview works as expected.

Now is the time to update your applications so they delight users who begin unboxing their Pixel Fold and Pixel Tablet devices later this month!

#WeArePlay | Meet the people creating apps and games in Europe

Posted by Leticia Lago, Developer Marketing

Last summer #WeArePlay went on a virtual tour of the U.S. to spotlight the stories of app and game founders from every state, and earlier this year we visited India sharing stories from across the country. Today, we’re continuing our tour across the world with our next stop: Europe. From an app increasing independence for the elderly to a game for children with neurodevelopmental disorders, meet the founders of 126 apps and games companies building growing businesses on Google Play.

Let’s take a quick road trip across the region, with stories of founders that were inspired to create their company to help others around them.

A man smiling with his hands crossed over indoors with a blurred background
Geert, cofounder of Cubigo

Increasing independence for elderly people

First up is Geert from Belgium, who is the founder of Cubigo. When Geert’s grandmother moved into a nursing home, managing her care felt overwhelming so he used his experience from working in tech to create his app. It’s aimed at elderly people - they can use it to book taxis, days out, order food, schedule appointments and message friends. Family and nursing staff can also stay updated with their plans and activities, so they can provide better assistance. His aim is to give elderly people independence, and Geert hopes Cubigo will become a global player in senior care. Read more stories from Belgium.

Two men stood side-by-side outside with a house in the background
Zafer and Sercan, co-founders of Otsimo

Games designed for children with neurodevelopmental disorders

Next up are friends and co-founders Zafer and Sercan from Turkey, who co-founded gaming company Otsimo. As a teen, Zafer got inspiration to create mobile tools for kids with learning difficulties by seeing his autistic brother enjoy playing on his phone. Fast forward to his college years, Zafer and his course mate Sercan made a series of apps aimed at children with delayed speech and developmental disorders. The first, created alongside special needs experts, was Otsimo | Special Education which can be tailored to the individual's requirements. Their apps use voice recognition and machine learning to help children improve their speech, cognitive and social skills, with rewards and stickers to keep it fun. The Otsimo team have just launched a fully customizable Augmentative and Alternative Communication (AAC) app for non-verbal people of all ages. Read more stories from Turkey.

A couple taking a selfie outdoors surrounded by greenery
Maxence and Oxana, co-founders of Appsent

Making home management and cleaning easier for everyone

Last but not least, we have Maxence and Oxana from France, co-founders of Appsent. Maxence and Oxana struggled to keep their house clean when they were both working from home. Sweepy is their solution – it’s a smart home cleaning schedule that assigns household tasks on particular days and for particular people. The couple are really proud that their app has been downloaded by lots of people with autism and ADHD, who tell them that it helps them to manage their homes. They are now developing a points and rewards feature, to try to encourage children to get involved in the housework too. Read more stories from France.

Discover more #WeArePlay stories from Europe, and stories from across the globe.



How useful did you find this blog post?

Top 3 things to know in multi-device from Google I/O 2023

Posted by Sara Hamilton, Developer Relations Engineer

Did you miss any multi-device updates at Google I/O this year? Don’t worry – here are the top 3 things you should know as a developer about Android multi-device updates, and be sure to check out the full playlist for sessions and more!

#1: New Large Screen Devices, plus improved tools and guidance

First, we have some exciting large screen updates. There are 2 new Android devices coming from Pixel - the Pixel Fold and the Pixel Tablet.

With these joining the 280M active large screen Android devices, now is a great time to invest in optimizing your app for larger screens. We’ve released a few things to make this easy.

We have improved tools and guidance, like the new Pixel Fold and Pixel Tablet emulator configurations in Android Studio available today.

We also have expanded Material design updates, and we’ve created more galleries with inspiration for building gaming and creativity apps, all part of the new Android design gallery.

You can start optimizing for these devices, and other large screen devices, by reading the guidance on the do’s and don’ts of optimizing your Android app for large screens and watching the session on developing high quality apps for large screens and foldables.

#2: Wear OS 4 developer preview released

Second, we released the developer preview of Wear OS 4. This release comes with many exciting changes – including a new way to build watchfaces.

The new Watch Face Format is a declarative XML format that allows you to configure the appearance and behavior of watch faces. This means that there's no executable code involved in creating a watch face, and there's no code embedded in your watch face APK.

The Wear OS platform takes care of the logic needed to render the watch face so you can focus on your creative ideas, rather than code optimizations or battery performance.

Learn more about all the latest updates in Wear OS by checking out our blog post, watching the session, and taking a look at the brand new Wear OS gallery, also part of the new Android design gallery.

#3: Compose for TV released in alpha

Finally, Compose for TV is released in alpha.

Jetpack Compose already had mobile components, Wear OS components, and Widgets – and now, TV components! Plus, you can now use the same foundational Jetpack Compose APIs, for things like state management, on TV as well.

This makes it easy to build beautiful, functional apps for Android TV OS with less code and better customization.

Learn more about how to integrate your TV app with Compose for TV by watching this session. And, check out the developer guides, design reference, our new codelab and sample code to get started. You can submit feedback through the library’s release notes.

That’s a quick snapshot of some of the coolest updates in the world of multi-device on Android from Google I/O’23. Want to learn more? Check out the full playlist here!

We’re making it even easier to build across these devices, through modern Android development tools like Jetpack Compose, so that as you build for more and more form factors, that skill base continues to grow and extend. Take a look at how Peloton continues to invest in different screens for an experience that follows their users wherever they want to train:

Android 14 Beta 3 and Platform Stability

Posted by Dave Burke, VP of Engineering
Android 14 logo

With today's Android 14 Beta 3 release, we're continuing into the next phase of the Android development cycle. It builds upon our core themes of privacy, security, performance, developer productivity, and user customization while continuing to improve the large-screen device experience on tablets, foldables, and more.

Beta 3 takes Android 14 to Platform Stability, which means that the developer APIs and all app-facing behaviors are now final for you to review and integrate into your apps. Thank you for all of your continued feedback in getting us to this milestone.

There's a lot to explore in Android 14 and test in your apps. Today with Beta 3, we’re highlighting new accessibility features such as non-linear font scaling, privacy upgrades including partial photos/videos access, new animation support in gesture navigation, and features that further align with the OpenJDK 17 LTS release.


Platform Stability

With Platform Stability in Beta 3, you can confidently develop and release any necessary compatibility updates. Please start your final compatibility testing now and prepare to publish any necessary updates so you can get valuable feedback during the remainder of the beta releases. This will help ensure a smooth app experience ahead of the final release of Android 14 later this year.

image of timeline illustrates that we are in June and on track with Platform Stability for Android 14

If you develop an SDK, library, tool, or game engine, it's even more important to be testing now so you can release your compatible updates as soon as possible to prevent your downstream app and game developers from being blocked with compatibility issues. Also, when you've released a compatible update, please make sure to let your developers know.


App Compatibility

Each release of Android contains changes to the platform that improve privacy, security, and the overall user experience. These changes can affect your apps. Testing your app involves installing your production app onto a device running Android 14 Beta 3; you can use Google Play or other means. Work through all the app's flows and look for functional or UI issues. Review the behavior changes to focus your testing. Changes that may impact your app include:


Non-linear font scaling.
Starting in Android 14, the system supports font scaling up to 200% by default, providing low-vision users with additional accessibility options that align with Web Content Accessibility Guidelines (WCAG). Perform UI testing with the maximum font size enabled (200%) to ensure that your app can accommodate larger font sizes without impacting usability. To get the most out of this feature, make sure that you're not hardcoding sp calculations from Configuration or DisplayMetrics, and use TypedValue's applyDimension() and deriveDimension() to convert between sp and px.

Grant partial access to photos and videos.
Users can now grant partial access to their media library when your app requests any of the visual media permissions (READ_MEDIA_IMAGES or READ_MEDIA_VIDEO) introduced in Android 13 (API level 33). When your app moves to the background, or when the user actively kills your app, the system treats these as one-time-permissions and eventually denies them. If your app is following permissions best practices, this change shouldn't break your app. Android 14 introduces the READ_MEDIA_VISUAL_USER_SELECTED permission to help apps better support the new changes. For a more seamless user experience, we recommend that you consider using the photo picker which provides a safe way for users to grant your app access to selected images and videos that does not require any permissions.

Data safety information is more visible.
To enhance user privacy, Android 14 increases the number of places where the system shows the information you have declared in the Play Console Form. For some permissions, the system runtime permission dialog now includes a clickable section that highlights your app's data sharing practices. This section of the system dialog includes information, such as why your app may decide to share data with third parties, and links users to where they can control your app's data access. We encourage you to review your app's location data sharing policies and take a moment to make any applicable updates to your app's Google Play Data safety section.

Please review the behavior changes section to see all of the changes that may impact the compatibility of your app or game. If you find any issues with libraries and SDKs in your app, try updating to the latest library or SDK version, reaching out to the developer for help if necessary.

Once you’ve published the compatible version of your current app, you can start the process to update your app's targetSdkVersion. Review the behavior changes for apps targeting Android 14 and consider using the compatibility framework to help you detect issues quickly. Here are some of the changes to test for (these apply only to apps with targetSdkVersion set to API 34 or higher):


Foreground service types are required.
If your app targets Android 14, it must specify at least one foreground service type for each foreground service within your app. You should choose a foreground service type that represents your app's use case. The system checks for proper use of foreground service types and confirms that the app has requested the proper runtime permissions or uses the required APIs. For instance, the system expects apps that use the foreground service type FOREGROUND_SERVICE_TYPE_LOCATION type to request either ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION. Android 14 introduces foreground service types for health and remote messaging use cases. The system also reserves new types for short services, special use cases, and system exemptions. If a use case in your app isn't associated with any of these types, it's strongly recommended that you migrate your logic to use WorkManager or user-initiated data transfer jobs.

OpenJDK 17 updates.
A few of the changes Android 14 makes to refresh core libraries to align with features in the latest OpenJDK LTS releases can affect app compatibility, including changes to regular expressions, UUID handling, and issues involving ProGuard and the addition of java.lang.ClassValue.

Security changes.
Apps targeting Android 14 can no longer send certain implicit intents to internal components. Runtime registered broadcast receivers must specify export behavior, unless they are receiving only system broadcasts. Dynamically-loaded code files must be marked as read-only. ZipFile(String) and ZipInputStream.getNextEntry() throws a ZipException if zip file entry names contain ".." or start with "/" to prevent the Zip path traversal vulnerability. There are additional restrictions on starting activities from the background, and updated restrictions to calling non-SDK interfaces.

Get started with Android 14

Today's Beta 3 release has everything you need to try the Android 14 features, test your apps, and give us feedback. For testing your app with tablets and foldables, you can test with devices from our partners, but the easiest way to get started is using the 64-bit Android Emulator system images for the Pixel Tablet or Pixel Fold configurations found in the latest preview of the Android Studio SDK Manager. You can also enroll any supported Pixel device here, including the new Pixel 7a, to get this and future Android 14 Beta and feature drop Beta updates over-the-air.

For the best development experience with Android 14, we recommend that you use the latest release of Android Studio Hedgehog. Once you’re set up, here are some of the things you should do:

  • Try the new features and APIs. Report issues in our tracker on the feedback page.
  • Test your current app for compatibility – learn whether your app is affected by default behavior changes in Android 14. Install your app onto a device or emulator running Android 14 and extensively test it.
  • Test your app with opt-in changes – Android 14 has opt-in behavior changes that only affect your app when it’s targeting the new platform. It’s important to understand and assess these changes early. To make it easier to test, you can toggle the changes on and off individually.

We’ll update the beta system images regularly throughout the Android 14 release cycle.

If you are already enrolled in the Android 14 Beta program and your device is supported, Beta 3 will be made available to you as an Over The Air update without taking any additional action.

For complete information on how to get the Beta, visit the Android 14 developer site.

Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Top things to know in Android Platform and Quality at Google I/O ’23

Posted by Dan Galpin, Developer Relations Engineer

Google I/O was HUGE for developers with exciting news all across the platform and more around quality. Here are the top three announcements around Android and App Quality from Google I/O 2023:

#1 Android 14 comes with new features in privacy and security, system UI, and more

Android 14 continues our effort to improve privacy and security on the platform with the CredentialManager, which has a unified API that brings support for passkeys and federated login. Health Connect is also now a core part of the platform and available on all Android mobile devices directly in Settings, helping to control how users’ health and fitness data is shared across apps.. In addition, the beta of Privacy Sandbox on Android ensures effective privacy-preserving personalized advertising experiences.

Additionally, you’ll find Foreground Service changes, with required types, new permissions, system runtime checks, and new purpose-built APIs for user initiated data transfers and VoIP telephony that behave more consistently across our entire ecosystem. Android 14 also introduces Grammatical Inflection to help your app correctly address your users, along with updated per-app language and regional preferences. Finally, check out the Updated Predictive Back APIs that support in-app animations.

Watch the sessions that will help you get your app ready:

#2 Premium devices mean premium app experiences with camera & media and on-device ML

To help devices become creative powerhouses, Media3's Transformer supports video editing and transcoding and Android 14 introduces Ultra HDR images and more premium camera extensions. To leverage that CPU and GPU power to enable new productivity experiences, ML Kit adds new, production-ready on-device machine learning models such as document scanning and face mesh, and the Acceleration service for your custom ML models is in public beta.

Check out the sessions from I/O to learn more:

#3 More around app quality: a new quality framework, quality hub, and design hub

We've introduced a quality framework and quality hub which includes insights into how Google Play views app quality. We also created a new UI design hub that gives you a centralized destination for guidance, Figma starter kits, UI samples, and inspirational galleries to help apply our best practices for phones, large screens, wearables, and TVs.

Be sure to catch the full Android Platform and Quality playlist from Google I/O for all these videos!

What it means to be a Google Developer Expert – spotlight stories

Posted by Dawid Ostrowski, Developer Relations Program Manager, Android Developer

Welcome to our Google Developer Expert series where we highlight some incredible Android GDEs. Through the series they’ll explain how they became GDEs and what it means to them to be part of the community.

If you tuned in to #TheAndroidShow you may have already spotted some familiar faces as our Google Developer Experts helped introduce the Android GDE community.

In our first short episode we’re excited to reintroduce Madona, a Senior Android Developer from the USA. She shares her journey to becoming a GDE, from her first steps as a developer through to the impact of being a GDE on her career.

Madona used her knowledge of Java to build her first app which led her to the Women Techmakers Academy. Fast forward to today and she is now a professional Android developer and Google Developer Expert.

Over the coming weeks we’ll be sharing more short videos from Android Google Developer Experts as they share their best advice, tips, and experiences as a GDE. Meet the Android GDEs who’ll be sharing their experiences below:

Headshot of Ahmed, smiling

Meet Ahmed, a Software Engineer from the Netherlands. Ahmed will be explaining how the GDE program has grown from its founding days to now.

Headshot of Zarah, smiling

Meet Zarah, an Android Developer from Australia. Zarah will share her experience as the first woman Android GDE in Australia and how she would encourage more diversity and inclusivity in the Android GDE community.

Headshot of Annyce, smiling

Meet Annyce, Vice President of Engineering from the USA. She’ll share her top career and life advice for other developers.

Headshot of Harun, smiling

Meet Harun, a Software Engineer from Kenya. Harun will share the different routes to becoming a GDE, from contributing to open source to sharing content, there are many ways to share with the Android community.

Headshot of Dinorah, smiling

Last but not least, meet Dinorah, Mobile Lead from Mexico. Dinorah will share how she’s seen the GDE program evolve to help shape the next generation of developers.

Does the community inspire you? Get involved by speaking at your local developer conferences, sharing your latest Android projects, and by not being afraid to experiment with new technology.

Active in the #AndroidDev community? Become an Android Google Developer Expert.

Upcoming changes to InAppProducts API and subscription catalog management

Posted by Rejane França, Product Manager and Serge Beauchamp, Software Engineer at Google Play

Last year, we introduced new capabilities for subscriptions on Google Play, giving you more flexibility and control when it comes to growing and retaining your subscribers. The enhanced developer experience enabled by the monetization.subscriptions APIs, separates your subscription products - what you sell - from how you sell them, allowing you to configure multiple base plans and offers for each subscription. The new model is designed to reduce the complexity and overhead of managing your product configuration - this means:

    • The subscription now defines the benefits and other metadata for the product you are selling, regardless of how the user pays.
    • Each base plan within a subscription defines the base price for a specific billing period and plan renewal type.
    • In addition to auto-renewing plans, you can sell prepaid plans that allow users access to pay a fixed amount of time, and then top-up as desired. With prepaid plans, reach users in regions where pay-as-you-go is standard or provide an alternative for users not ready to purchase an auto-renewing plan.
    • Offers build on the base plan, making it easier to define alternative pricing for eligible users throughout the monetization lifecycle. They can be used to acquire new subscribers, incentivize upgrades, or retain existing subscribers.

Monetization.subscriptions APIs will replace InAppProducts API for subscription catalog management

Starting on January 1, 2024, all new apps must use monetization.subscriptions APIs for managing your subscriptions catalog. Existing apps will have until May 1, 2024 to migrate to the new monetization.subscriptions APIs, at which point support for using the InAppProducts API for managing your subscriptions catalog will end completely.

Starting this month, if we detect that your app has used the InAppProducts API to manage your subscriptions within the last 7 days, you will start seeing a reminder in Play Console to migrate over to monetization.subscriptions APIs.

Additionally, if your app is not using the latest version of Play Billing Library, you’ll need to upgrade to version 5.0 or later before November of this year in order to publish updates to your app.

If you continue to use the InAppProduct API while support is still available, the subscription SKUs you create will be automatically converted into the new model following the backward compatible structure represented below with limited access to new features. Learn more about converted subscriptions here.

New model separates your subscription products – what you sell – from how you sell them.


No changes to selling in-app items with the InAppProducts API

This deprecation will only impact the InAppProducts API when used to manage your subscription product catalog in Play Console. All apps can continue using the InAppProducts API to manage one-time products. The Play Billing Library and Subscription Purchase APIs will not be impacted. Note that both InAppProducts API and monetization.subscriptions APIs are for managing your subscription catalog on Play from your backend, and should not be called directly as part of any in-app flows.


Start your migration to the monetization.subscriptions APIs

If you use the Google Play Developer API client libraries - available for Java, Python, and other popular languages - we recommend upgrading to the latest versions, which already include the monetization.subscriptions APIs. Base plans can be managed with the monetization.subscription.basePlans API, and introductory pricing and free trials can be managed as offers with the monetization.subscriptions.basePlans.offers API.

To use the new monetization.subscriptions APIs with existing subscriptions, make sure that you’ve made your pre-existing subscriptions editable in Play Console.

Start maximizing the latest subscription capabilities available with the monetization.subscriptions APIs. Learn more by visiting the Help Center, getting started guide, documentation, and sample app.

#WeArePlay | Meet Tessa and Saasha from the UK, founders of waste-fighting app Olio

Posted by Leticia Lago, Developer Marketing In our latest #WeArePlay film, we’re spotlighting Tessa and Saasha - best friends turned co-founders of Olio. They’ve been on a mission to help people reduce waste by encouraging communities to share, sell or give-away what they no longer need - from leftover food to household items. The app now helps millions take one big step closer to living in a zero waste world.

Growing up on a farm, Tessa quickly learned how much hard work goes into producing food. Meanwhile, Saasha spent her childhood helping her family make ends meet through scavenging items that others threw away. When they eventually met in college, they bonded over their passion to help to save the environment through recycling and reducing waste.

But it wasn’t until Tessa was one day moving countries when the idea for Olio came - she couldn’t pack leftover food in air-freight, and couldn’t easily find anyone to take it. Feeling like this was a missed opportunity, she told Saasha about the idea for a food-sharing app. Saasha instantly knew she wanted to help make this app a reality, and so Olio was born. Tessa believes that “if no one else is taking action then we have to take action”.

Originally developed to encourage people to give away their surplus food, over time Olio has evolved so that people can give away any items that could have a second life. It’s now used in 62 countries, and Olio also partners with supermarkets and restaurants with the help of Food Waste Heroes - volunteers who collect and redistribute surplus food – saving an estimated 1 million meals per week. Looking to the future, Saasha says their ambition is “to create a world in which sharing becomes the new normal”.

You can read more inspiring stories, including those featuring LGTBQ+ apps celebrating Pride Month, at g.co/play/weareplay.

How useful did you find this blog post?