Category Archives: Android Developers Blog

An Open Handset Alliance Project

Android 15 is released to AOSP

Posted by Matthew McCullough – VP of Product Management, Android Developer

Today we're releasing Android 15 and making the source code available at the Android Open Source Project (AOSP). Android 15 will be available on supported Pixel devices in the coming weeks, as well as on select devices from Samsung, Honor, iQOO, Lenovo, Motorola, Nothing, OnePlus, Oppo, realme, Sharp, Sony, Tecno, vivo, and Xiaomi in the coming months.

We're proud to continue our work in open source through the AOSP. Open source allows anyone to build upon and contribute to Android, resulting in devices that are more diverse and innovative. You can leverage your app development skills in Android Studio with Jetpack Compose to create applications that thrive across the entire ecosystem. You can even examine the source code for a deeper understanding of how Android works.

Android 15 continues our mission of building a private and secure platform that helps improve your productivity while giving you new capabilities to produce beautiful apps, superior media and camera experiences, and an intuitive user experience, particularly on tablets and foldables.

Starting today, we're kicking off a new educational series called Spotlight Weeks, where we dive into technical topics across Android, beginning with a week of content on Android 15. Check out what we'll be covering throughout the week, as well as today's deep dive into edge-to-edge.

Improving your developer experience

While most of our work to improve your productivity centers around tools like Android Studio, Jetpack Compose, and the Android Jetpack libraries, each new Android platform release includes quality-of-life updates to improve the development experience. For example, Android 15 gives you new insights and telemetry to allow you to further tune your app experience, so you can make changes that improve the way your app runs on any platform release.

Improving typography and internationalization

Android helps you make beautiful apps that work well across the global diversity of the Android ecosystem.

    • You can now create a FontFamily instance from variable fonts in Android 15 without having to specify wght and ital axes using the buildVariableFamily API; the text renderer will automatically adjust the values of the wght and ital axes to match the displaying text with compatible fonts.
    • The font file in Android 15 for Chinese, Japanese, and Korean (CJK) languages, NotoSansCJK, is now a variable font, opening up new possibilities for creative typography.

Camera and media improvements

Each Android release helps you bring superior media and camera experiences to your users.

    • For screens that contain both HDR and SDR content, Android 15 allows you to control the HDR headroom with setDesiredHdrHeadroom to prevent SDR content from appearing too washed-out.
    • Android 15 supports intelligently adjusting audio loudness and dynamic range compression levels for apps with AAC audio content that contains loudness metadata so that audio levels can adapt to user devices and surroundings. To enable, instantiate a LoudnessCodecController with the audio session ID from the associated AudioTrack.
    • Low Light Boost in Android 15 adjusts the exposure of the Preview stream in low-light conditions, enabling enhanced image previews, scanning QR codes in low light, and more.
    • Advanced flash strength adjustments in Android 15 enable precise control of flash intensity in both SINGLE and TORCH modes while capturing images.
    • Android 15 extends Universal MIDI Packets support to virtual MIDI apps, enabling composition apps to control synthesizer apps as a virtual MIDI 2.0 device just like they would with an USB MIDI 2.0 device.

Improving the user experience

We continue to refine the Android user experience with every release, while working to improve performance and battery life. Here is just some of what Android 15 brings to make the experience more intuitive, performant, and accessible.

Privacy and security enhancements

Privacy and security are at the core of everything we do, and we work to make meaningful improvements to protect your apps and our users with each platform release.

Get your apps, libraries, tools, and game engines ready!

If you develop an SDK, library, tool, or game engine, it's particularly important to prepare any necessary updates immediately to prevent your downstream app and game developers from being blocked by compatibility issues and allow them to target the latest SDK features. Please let your developers know if updates are needed to fully support Android 15.

Testing your app involves installing your production app using Google Play or other means onto a device or emulator running Android 15. Work through all your app's flows and look for functional or UI issues. Review the behavior changes to focus your testing. Here are several changes to consider that apply even if you don't yet target Android 15:

    • Package stopped state changes - Android 15 updates the behavior of the package FLAG_STOPPED state to keep apps stopped until the user launches or indirectly interacts with the app.
    • Support for 16KB page sizes - Beginning with Android 15, 16 KB page size support will be available on select devices as a developer option. Additionally, Android Studio also offers an emulator system image with 16 KB support through the SDK manager. If your app or library uses the NDK, either directly or indirectly through a library, you can use the developer option in the QPR beta or the Android 15 emulator system image to test and fix applications to prepare for Android devices with 16 KB page sizes in the near future.
    • Removed legacy emoji font file - Some Android 15 devices such as Pixel will no longer have the bitmap NotoColorEmojiLegacy.ttf file included for compatibility since Android 13 and will only have the default vector file.

Please thoroughly exercise libraries and SDKs that your app is using during your compatibility testing. You may need to update to current SDK versions or reach out to the developer for help if you encounter any issues.

Once you’ve published the Android 15-compatible version of your app, you can start the process to update your app's targetSdkVersion.

App compatibility

We’re working to make updates faster and smoother with each platform release by prioritizing app compatibility. In Android 15 we’ve made most app-facing changes opt-in until your app targets SDK version 35. This gives you more time to make any necessary app changes.

To make it easier for you to test the opt-in changes that can affect your app, based on your feedback we’ve made many of them toggleable again this year. With the toggles, you can force-enable or disable the changes individually from Developer options or adb. Check out how to do this, here.

App compatibility toggles in Developer Options on Android 15
App compatibility toggles in Developer Options

To help you migrate your app to target Android 15, the Android SDK Upgrade Assistant within the latest Android Studio Koala Feature Drop release now covers android 15 API changes and walks you through the steps to upgrade your targetSdkVersion.

Android SDK upgrade assistant in Android Studio Koala feature drop
Android SDK upgrade assistant in Android Studio Koala feature drop

Get started with Android 15

If you have a supported Pixel device, you will receive the public Android 15 over the air update when it becomes available. If you don't want to wait, you can get the most recent quarterly platform release (QPR) beta by joining the Android 15 QPR beta program at any time.

If you're already in the QPR beta program on a Pixel device that supports the next Android release, you'll likely have been offered the opportunity to install the first Android 15 QPR beta update. If you want to opt-out of the beta program without wiping your device, don't install the beta and instead wait for an update to the release version when it is made available on your Pixel device. Once you've applied the stable release update, you can opt out without a data wipe as long as you don't apply the next beta update.

Stay tuned for the next five days of our Spotlight Week on Android 15, where we'll be covering topics like edge-to-edge, passkeys, updates to foreground services, picture-in-picture, and more. Follow along on our blog, X, LinkedIn or YouTube channels. Thank you again to everyone who participated in our Android developer preview and beta program. We're looking forward to seeing how your apps take advantage of the updates in Android 15.

For complete information, visit the Android 15 developer site.


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

Google Maps improved download reliability by 10% using user initiated data transfer API

Posted by Alice Yuan – Developer Relations Engineer, in collaboration with Software Engineers – Matthew Valgenti and Emma Li – at Google

What is user initiated data transfer?

In Android 14 we introduced user-initiated data transfer jobs, or UIDT. You can use the new API setUserInitiated in JobScheduler to specify that the job is a user-initiated data transfer job. This API is helpful for use cases that require long-duration (>10 minutes), user-initiated transfer of data over network. UIDT is also an alternative API to using a dataSync foreground service, which has new timeout behavior for apps that target Android 15.

UIDT is intended to support user initiated use cases such as downloading files from a remote server, uploading files to a remote server or transferring data between two devices via Wi-Fi transport. Since the release of Android 14, the new API has been adopted by a growing number of Android apps running on hundreds of millions of user devices.


What are the benefits if I adopt user-initiated data transfer?

The Android team’s extensive analysis found gaps in foreground services and WorkManager for long duration, user initiated data transfers. Although WorkManager could support retries and constraints, it could not support long duration work which are often necessary for data transfer operations. Developers also found it challenging to use foreground service, which did not provide an ideal user experience during interruption of network connectivity.

JobScheduler’s user initiated data transfer API helps solve for these gaps by offering developers the following benefits:

    • Long duration, immediate background work execution that is not impacted by existing job quotas based on app standby buckets.
    • Helps improve consistency in API behavior across all devices, and the behavior is enforced through Compatibility Test Suite (CTS).
    • Improved reliability of data transfer compared to using a foreground service as indicated by Google Maps own benchmarks.
    • Support for execution when certain constraints are met, such as running only on Wi-Fi or only when the device is charging.
    • Gracefully manages job timeouts and retries.
    • Reduced memory usage and reduced notification clutter when the app is waiting for constraints to be met.

If you’re looking to do short or interruptible background work, WorkManager is still the recommended solution. Check out data transfer background task options to learn more.

“We successfully launched UIDT on Android 14 in early 2024 migrating from our foreground service implementation. After a retroactive analysis on Android 14 vs Android 13 implementation, we now see a 10%+ improvement in download failure rate of offline downloads!”- Matthew Valgenti, Software Engineer at Google

Google Maps successfully launched UIDT and saw improvement in download reliability!

Google Maps decided to use UIDT for their offline maps download use case. This use case ensures that users are able to download offline maps so they have map data even when they lose network connectivity.

What was Google Maps’ main motivation for adopting UIDT?

Google Maps decided to adopt UIDT to ensure that the download service works with the latest Android releases and continues to be reliable and efficient.

“We implemented several features and optimizations, such as resumable downloads so that if a user's internet connection is interrupted or they exit the app before the download is complete, the download resumes from where it left off when the user returns to the app or their connection is restored.” - Emma Li, Software Engineer at Google

What is the trigger point to start UIDT in Google Maps?

The UIDT is triggered when a user decides to download a map region to have that data offline. When a user hits download, the UIDT is triggered immediately and processing of the region begins as soon as possible.

What were Google Maps’ adoption results?

Google Maps rolled out the project using experiment flags to understand metrics impact after each ramp stage.

“We successfully launched UIDT on Android 14 in early 2024 migrating from our foreground service implementation. After a retroactive analysis on Android 14 vs Android 13 implementation, we now see a 10%+ improvement in download failure rate of offline downloads!- Matthew Valgenti, Software Engineer at Google

How do I get started implementing user initiated data transfer API?

In order to adopt user initiated data transfer, you will need to integrate with the JobScheduler platform API and gate the change to Android 14 or higher.

Check out the following developer documentation to get started with user initiated data transfer:


This blog post is part of our series: Spotlight Week on Android 15, where we provide resources — blog posts, videos, sample code, and more — all designed to help you prepare your apps and take advantage of the latest features in Android 15. You can read more in the overview of Spotlight Week: Android 15, which will be updated throughout the week.

Google Maps improved download reliability by 10% using user initiated data transfer API

Posted by Alice Yuan – Developer Relations Engineer, in collaboration with Software Engineers – Matthew Valgenti and Emma Li – at Google

What is user initiated data transfer?

In Android 14 we introduced user-initiated data transfer jobs, or UIDT. You can use the new API setUserInitiated in JobScheduler to specify that the job is a user-initiated data transfer job. This API is helpful for use cases that require long-duration (>10 minutes), user-initiated transfer of data over network. UIDT is also an alternative API to using a dataSync foreground service, which has new timeout behavior for apps that target Android 15.

UIDT is intended to support user initiated use cases such as downloading files from a remote server, uploading files to a remote server or transferring data between two devices via Wi-Fi transport. Since the release of Android 14, the new API has been adopted by a growing number of Android apps running on hundreds of millions of user devices.


What are the benefits if I adopt user-initiated data transfer?

The Android team’s extensive analysis found gaps in foreground services and WorkManager for long duration, user initiated data transfers. Although WorkManager could support retries and constraints, it could not support long duration work which are often necessary for data transfer operations. Developers also found it challenging to use foreground service, which did not provide an ideal user experience during interruption of network connectivity.

JobScheduler’s user initiated data transfer API helps solve for these gaps by offering developers the following benefits:

    • Long duration, immediate background work execution that is not impacted by existing job quotas based on app standby buckets.
    • Helps improve consistency in API behavior across all devices, and the behavior is enforced through Compatibility Test Suite (CTS).
    • Improved reliability of data transfer compared to using a foreground service as indicated by Google Maps own benchmarks.
    • Support for execution when certain constraints are met, such as running only on Wi-Fi or only when the device is charging.
    • Gracefully manages job timeouts and retries.
    • Reduced memory usage and reduced notification clutter when the app is waiting for constraints to be met.

If you’re looking to do short or interruptible background work, WorkManager is still the recommended solution. Check out data transfer background task options to learn more.

“We successfully launched UIDT on Android 14 in early 2024 migrating from our foreground service implementation. After a retroactive analysis on Android 14 vs Android 13 implementation, we now see a 10%+ improvement in download failure rate of offline downloads!”- Matthew Valgenti, Software Engineer at Google

Google Maps successfully launched UIDT and saw improvement in download reliability!

Google Maps decided to use UIDT for their offline maps download use case. This use case ensures that users are able to download offline maps so they have map data even when they lose network connectivity.

What was Google Maps’ main motivation for adopting UIDT?

Google Maps decided to adopt UIDT to ensure that the download service works with the latest Android releases and continues to be reliable and efficient.

“We implemented several features and optimizations, such as resumable downloads so that if a user's internet connection is interrupted or they exit the app before the download is complete, the download resumes from where it left off when the user returns to the app or their connection is restored.” - Emma Li, Software Engineer at Google

What is the trigger point to start UIDT in Google Maps?

The UIDT is triggered when a user decides to download a map region to have that data offline. When a user hits download, the UIDT is triggered immediately and processing of the region begins as soon as possible.

What were Google Maps’ adoption results?

Google Maps rolled out the project using experiment flags to understand metrics impact after each ramp stage.

“We successfully launched UIDT on Android 14 in early 2024 migrating from our foreground service implementation. After a retroactive analysis on Android 14 vs Android 13 implementation, we now see a 10%+ improvement in download failure rate of offline downloads!- Matthew Valgenti, Software Engineer at Google

How do I get started implementing user initiated data transfer API?

In order to adopt user initiated data transfer, you will need to integrate with the JobScheduler platform API and gate the change to Android 14 or higher.

Check out the following developer documentation to get started with user initiated data transfer:


This blog post is part of our series: Spotlight Week on Android 15, where we provide resources — blog posts, videos, sample code, and more — all designed to help you prepare your apps and take advantage of the latest features in Android 15. You can read more in the overview of Spotlight Week: Android 15, which will be updated throughout the week.

#WeArePlay | Estante Mágica, the app helping kids publish their own books

Posted by Robbie McLachlan, Developer Marketing

In our latest film for #WeArePlay, which celebrates the people behind apps and games, we meet Robson from Rio de Janeiro, Brazil. As the co-founder of Estante Mágica, he created an app that turns kids into published authors, sparking their imagination and love for reading. Robson's journey from the favelas to creating a platform that inspires millions of young minds is helping to revolutionize education in Brazil. Discover how Estante Mágica is making a lasting impact on education, one story at a time.



What was the inspiration behind Estante Mágica?

It’s a combination of my personal journey and a deep belief in the transformative power of education. Growing up in the Rocinha favela, I saw first-hand how education could change lives — my illiterate grandparents always believed that education was the key to real change, and passed that belief down to me. I wanted to create a tool that nurtures literacy so I teamed up with my friend Pedro to create Estante Mágica.

Estante Mágica, which translates to "Magic Bookshelf," is our way of giving every child the chance to become an author, create something magical that they can be proud of, and to see their own imagination come to life. We designed the app to be a bridge, reaching not just urban schools but also rural and underserved communities, including indigenous villages and areas with fewer resources.

Can you tell us about a moment that showed you the power of Estante Mágica?

Recently, I visited a school in a small village in Rio de Janeiro. The principal apologized for being late to our meeting, explaining that she had just met with a father and mother who wanted to enroll in adult education classes. When she asked them why they wanted to learn to read and write in their 30s and 40s, they told her, "Our son wrote a book here last year, and we don't know how to read it. It's our dream to be able to read the book our son wrote." That moment hit me hard. It was proof that our app isn’t just about helping kids become authors; it's about inspiring entire families to embrace literacy and education.

Founder of Estante Magica, Robson Omelo, taking a photo of a child particiopating on Autograph Day

Tell us about the Autograph Days

These events are held at schools and are all about celebrating the young authors who have created their own books. Each child receives a printed copy of their book, and the day is set up just like a traditional book signing event. The event is not only about the children’s hard work but also a moment of pride for parents and teachers, who see the joy and confidence this experience brings to the kids.

image of the Estante Magica app on a mobile device

What’s next for Estante Mágica?

One major focus is integrating more AI into the app. We want to make it so that when kids create their characters or stories, they can interact with them more dynamically. Imagine a character in a game being able to respond to a child’s questions or comments – that’s the kind of interaction we’re aiming for. We’re keeping an eye on some new features like text-to-video and image-to-video which could add a whole new layer to how kids can bring their stories to life. Ultimately, we’re planning to bring the magic of storytelling to children around the world and expand our platform to more schools, especially in underserved areas.


Discover more global #WeArePlay stories and share your favorites.



How useful did you find this blog post?

Android Studio Koala Feature Drop is Stable!

Posted by Sandhya Mohan, Product Manager, Android Studio

Today, we are thrilled to announce the stable release of Android Studio Koala Feature Drop (2024.1.2)!🐨

Earlier this year, we announced that every Android Studio animal version will have two releases: a platform release and a feature drop release. These more frequent updates get important IntelliJ updates to you faster, while we focus on quality and polish for Android-specific features. The Koala platform release was launched in June. Today, we'll walk through the feature drop release.

Get access to cutting-edge features like new devices in device streaming, Compose previews for Glance widgets, USB cable speed detection, support for Android 15 in the Android SDK Upgrade Assistant, and much more. All of these new features are designed to accelerate your Android app development workflow in building next-generation and high-quality apps.

Read on to learn more about all the updates, quality improvements, and new features across your key workflows in Android Studio Koala Feature Drop, and download the latest stable version today to try them out!


Develop

Android Device Streaming: more devices and improved sign-up

Android Device Streaming now includes the following devices, in addition to the portfolio of 20+ device models already available:

    • Google Pixel 9
    • Google Pixel 9 Pro
    • Google Pixel 9 Pro XL
    • Google Pixel 9 Pro Fold
    • Google Pixel 8a
    • Samsung Galaxy Fold5
    • Samsung Galaxy S23 Ultra

Additionally, if you're new to Firebase, Android Studio automatically creates and sets up a no-cost Firebase project for you when you sign-in to Android Studio to use Device Streaming. As a result, you can get to streaming the device you need much faster. Learn more about Android Device Streaming quotas, including promotional quota for the Firebase Blaze plan projects available for a limited time.

As we announced at Google I/O 2024, we’re further expanding the selection of devices available by working with partners, such as Samsung, Xiaomi, and OnePlus, to allow you to connect to devices hosted in their device labs. To learn more and enroll in the upcoming Early Access Preview, see the official blog post.

a screengrab showing device streaming in Android Studio
Device Streaming

Target Android 15 using Android SDK Upgrade Assistant

The Android SDK Upgrade Assistant provides a step-by-step wizard to help you upgrade your targetSdkVersion. It also pulls documentation directly into Android Studio, saving you time and effort. Android Studio Koala Feature Drop adds support for upgrading projects to Android 15 (API Level 35).

a screengrab showing Android SDK Upgrade Assistant in Android Studio
Android SDK Upgrade Assistant

Updated sign-in flow to Google services

It's now easier to sign in to multiple Google services with one authentication step. Whether you use Gemini in Android Studio, Firebase for Android Device Streaming, Crashlytics in App Quality Insights, Google Play for Android Vitals reports, or some combination of these services, the new sign-in flow makes it easier to get up and running. With granular permissions scoping, you'll always be in control of which services have access to your account. To get started, click the profile avatar on the top right corner and sign-in with your developer account.

a moving image showing the updated sign-in wizard in Android Studio
Updated sign-in wizard

Wear OS Tile Preview Panel

You can now view snapshots of your Wear OS app's tiles by including version 1.4 of the Jetpack Tiles library. This preview panel is particularly useful if your tile's appearance changes based on certain conditions, such as content that depends on the device's display size, or a sports event reaching halftime.

Wear OS Tile Preview Panel in Android Studio
Wear OS Tile Preview Panel

Compose Glance widget previews

Android Studio Koala Feature Drop makes it easy to preview your Jetpack Compose Glance widgets directly within the IDE. You can even use multi-previews to preview at standard widget sizes and their designed widget breakpoints (sample code). Catch potential UI issues and fine-tune your widget's appearance early in the development process or while debugging any UI issues. Learn more.

Previews for Compose Glance widgets in Android Studio
Previews for Compose Glance widgets

Live Edit (Compose)

Live Edit is now enabled in manual mode by default. It has increased stability and more robust change detection, including support for import statements. Note that starting with Android Studio Koala Feature Drop, the default shortcut to push your changes in manual mode has been updated to Control+' (Command+' on macOS). You can customize the shortcut on the Keymap settings page.

a moving demonstration of making an update with Live Edit in manual mode in Android Studio
Making an update with Live Edit in manual mode

Debug

USB Cable Speed Detection

Android Studio now detects when it's possible to connect your Android device with a faster USB cable and suggests an upgrade that maximizes your device capabilities. Using an appropriate USB cable optimizes app installation time and minimizes latency when using tools such as the Android Studio debugger. USB cable speed detection is currently available for macOS and Linux. Learn more.

While most readily available USB cables are still the older USB 2.0 standard, the majority of modern devices support the significantly faster USB 3.0. Upgrading to a USB 3.0 cable can potentially increase your data transfer speeds up to 10x.

USB cable speed detection warning in Android Studio
USB cable speed detection

Device UI Shortcuts

To help you build and debug your UI, we've introduced Device UI shortcuts button action in the Running Devices tool window in Android Studio. Use the shortcuts to view the effect of common UI settings such as dark theme, font size, screen size, app language and TalkBack. You can use the shortcuts with emulators, mirrored physical devices, and devices streamed from Firebase Test Lab. Device UI shortcuts are available for devices running API level 33 or higher. Learn more.

Device UI Setting Shortcuts in Running Device Window in Android Studio
Device UI Setting Shortcuts in Running Device Window

Pixel 8a in Emulator

The Android Emulator (35.1+) now supports the Pixel 8a in the stable channel, enabling you to test your apps on more Pixel devices without needing a physical device. Find the new Pixel 8a in the phone category when you create a new virtual device. Additionally, you can find Pixel 9 devices in the canary release channel of Android Studio.

Pixel 8a in Emulator in Android Studio
Pixel 8a in Emulator

Optimize

Faster and improved Profiler with a task-centric approach

Popular performance optimization tasks like capturing a system trace with profileable apps now start up to 60% faster*. The Profiler's task-centric redesign also makes it easier to start the task you're interested in, whether it's profiling your app's CPU, memory, or power usage. For example, you can start a system trace task to profile and improve your app's startup time right from the UI as soon as you open the Profiler.

Pixel 8a in Emulator in Android Studio
Faster and improved Profiler with a task-centric approach
* Based on internal data, as tested in April 2024

Quality improvements

Beyond new features, we also continue to improve the overall quality and stability of Android Studio. In fact, the Android Studio team addressed over 520 bugs during the Koala Feature Drop development cycle.

IntelliJ platform update

Android Studio Koala Feature Drop (2024.1.2) includes the IntelliJ 2024.1 platform release, which has many new features such as comprehensive support for the latest Java** 22 features, an improved terminal, and sticky lines in the editor to simplify working with large files and exploring new codebases.

    • The improved terminal features a fresh new look, with commands separated into distinct blocks, along with an expanded set of features, such as smooth navigation between blocks, command completion, and easy access to the command history. Learn more.
    • Sticky lines in the editor keeps key structural elements, like the beginnings of classes or methods, pinned to the top of the editor as you scroll and provides an option to promptly navigate through the code by clicking on a pinned line. Learn more.
    • Basic IDE functionalities like code highlighting and completion now work for Java and Kotlin during project indexing, which should enhance your startup experience.

See the full release notes here.

Summary

To recap, Android Studio Koala Feature Drop includes the following enhancements and features:

Develop

    • Android Device Streaming: more devices and improved sign-up
    • Target Android 15 using Android SDK Upgrade Assistant
    • Updated sign-in flow to Google services
    • Wear OS Tile Preview Panel
    • Compose Glance widget previews
    • Live Edit (Compose)

Debug

    • USB Cable Speed Detection
    • Device UI Settings Picker
    • Pixel 8a in Emulator

Optimize

    • New Task UX for Profilers

Quality Improvements

    • 520+ bugs addressed

IntelliJ Platform Update

    • Improved terminal
    • Sticky lines in the editor to simplify working with large codebases
    • Enhanced startup experience

Getting Started

Ready for next-level Android development? Download Android Studio Koala Feature Drop and unlock these cutting-edge features today! As always, your feedback is important to us – check known issues, report bugs, suggest improvements, and be part of our vibrant community on LinkedIn, Medium, YouTube, or X. Let's build the future of Android apps together!


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

Instagram’s early adoption of Ultra HDR transforms user experience in only 3 months

Posted by Mayuri Khinvasara Khabya – Developer Relations Engineer, Google; in partnership with Bismark Ito - Android Developer, Rex Jin - Android Developer and Bei Yi - Partner Engineering

Meta’s Instagram is one of the world's most popular social networking apps that helps people connect, find communities, and grow their businesses in new and innovative ways. Since its release in 2010, photographers and creators alike have embraced the platform, making it a go-to hub of artistic expression and creativity.

Instagram developers saw an opportunity to build a richer media experience by becoming an early adopter of Ultra HDR image format, a new feature introduced with Android 14. With its adoption of Ultra HDR, Instagram completely transformed and improved its user experience in just 3 months.

Enhancing Instagram photo quality with Ultra HDR

The development team wanted to be an early adopter of Ultra HDR because photos and videos are Instagram's most important form of interaction and expression, and improving image quality aligns with Meta’s goal of connecting people, communities, and businesses. “Android rapidly adopts the latest media technology so that we can bring the benefits to users,” said Rex Jin, an Android developer on the Instagram Media Platform team.

Instagram developers started implementing Ultra HDR in late September 2023. Ultra HDR images store more information about light intensity for more detailed highlights, shadows, and crisper colors. It also enables capturing, editing, sharing, and viewing HDR photos, a significant improvement over standard dynamic range (SDR) photos while still being backward compatible. Users can seamlessly post, view, edit, and apply filters to Ultra HDR photos without compromising image quality.

Since the update, Instagram has seen a large surge in Ultra HDR photo uploads. Users have also embraced their new ability to edit up to 10 Ultra HDR images simultaneously and share photos that retain the full color and dynamic camera capture range. Instagram’s pioneering integration of Ultra HDR earned industry-wide recognition and praise when it was announced at Samsung Unpacked and in a Pixel Feature Drop.

Image sharing is how Instagram started and we want to ensure we always provide the best and greatest image quality to users and creators. — Bei Yi,, partner engineering at Meta

Pioneering Ultra HDR integrations

Being early adopters of Android 14 meant working with beta versions of the operating system and addressing the challenges associated with implementing a brand-new feature that’s never been tested publicly. For example, Instagram developers needed to find innovative solutions to handle the expanded color space and larger file sizes of Ultra HDR images while maintaining compatibility with Instagram's diverse editing features and filters.

The team found solutions during the development process by using code examples for HDR photo capture and rendering. Instagram also partnered with Google's Android Camera & Media team to address the challenges of displaying Ultra HDR images, share its developer experience, and provide feedback during integration. The partnership helped speed up the integrations, and the feedback shared was implemented faster.

“With Android being an open source project, we can build more optimized media solutions with better performance on Instagram,” said Bismark Ito, an Android developer at Instagram. “I feel accomplished when I find a creative solution that works on a range of devices with different hardware capabilities.”

UI image of an uploaded Instagram post that was taken using Ultra HDR
UI image of an uploaded Instagram post that was taken using Ultra HDR

Building for the future with Android 15

Ultra HDR has significantly enhanced Instagram’s photo-sharing experience, and Meta is already planning to expand support to more devices and add future image and video quality improvements. With the upcoming Android 15 release, the company plans to explore new APIs and features that amplify its mission of connecting people, communities, and businesses.

As the Ultra HDR development process showed, being the first to adopt a new feature involves navigating new challenges to give users the best possible experience. However, collaborating with Google teams and Android’s open source community can help make the process smoother.

Get started

Learn how to revolutionize your app’s user experience with Ultra HDR images.

The Recorder app on Pixel sees a 24% boost in engagement with Gemini Nano-powered feature

Posted by Terence Zhang – Developer Relations Engineer and Kristi Bradford - Product Manager

Google Pixel’s Recorder app allows people to record, transcribe, save, and share audio. To make it easier for users to manage and revisit their recordings, Recorder’s developers turned to Gemini Nano, a powerful on-device large language model (LLM). This integration introduces an AI-powered audio summarization feature to help users more easily find the right recordings and quickly grasp key points.

Earlier this month, Gemini Nano got a power boost with the introduction of the new Gemini Nano with Multimodality model. The Recorder app is already leveraging this upgrade to summarize longer voice recordings, with improved processing for grammar and nuance.

Meeting user needs with on-device AI

Recorder developers initially experimented with a cloud-based solution, achieving impressive levels of performance and quality. However, to prioritize accessibility and privacy for their users, they sought an on-device solution. The development of Gemini Nano presented a perfect opportunity to build the concise audio summaries users were looking for, all while keeping data processing on the device.

Gemini Nano is Google’s most efficient model for on-device tasks. “Having the LLM on-device is beneficial to users because it provides them with more privacy, less latency, and it works wherever they need since there’s no internet required,” said Kristi Bradford, the product manager for Pixel’s essential apps.

To achieve better results, Recorder also fine-tuned the model using data that matches its use case. This is done using low order rank adaptation (LoRA), which enables Gemini Nano to consistently output three-bullet point descriptions of the transcript that include any speaker names, key takeaways, and themes.

AICore, an Android system service that centralizes runtime, delivery, and critical safety components for LLMs, significantly streamlined Recorder's adoption of Gemini Nano. The availability of a developer SDK for running GenAI workloads allowed the team to build the transcription summary feature in just four months, with only four developers. This efficiency was achieved by eliminating the need for maintaining in-house models.

Since its release, Recorder users have been using the new AI-powered summarization feature averaging 2 to 5 times daily, and the number of overall saved recordings increased by 24%. This feature has contributed to a significant increase in app engagement and user retention overall. The Recorder team also noted that feedback about the new feature has been positive, with many users citing the time the new AI-powered summarization feature saves them.

“We were surprised by how truly capable the model was… before and after LoRA tuning.” — Kristi Bradford, product manager for Pixel’s essential apps

The next big evolution: Gemini Nano with multimodality

Recorder developers also implemented the latest Gemini Nano model, known as Gemini Nano with multimodality, to further improve its summarization feature on Pixel 9 devices. The new model is significantly larger than the previous one on Pixel 8 devices, and it’s more capable, accurate, and scalable. The new model also has expanded token support that lets Recorder summarize much longer transcripts than before. Gemini Nano with multimodality is currently only available on Pixel 9 devices.

Integrating Gemini Nano with multimodality required another round of fine-tuning. However, Recorder developers were able to use the original Gemini Nano model's fine-tuning dataset as a foundation, streamlining the development process.

To fully leverage the new model's capabilities, Recorder developers expanded their dataset with support for longer voice recordings, implemented refined evaluation methods, and established launch criteria metrics focused on grammar and nuance. The inclusion of grammar as a new metric for assessing inference quality was made possible solely by the enhanced capabilities of Gemini Nano with Multimodality.

UI example

Doing more with on-device AI

“Given the novelty of GenAI, the whole team had fun learning how to use it,” said Kristi. “Now, we’re empowered to push the boundaries of what we can accomplish while meeting emerging user needs and opportunities. It’s truly brought a new level of creativity to problem-solving and experimentation. We’ve already demoed at least two more GenAI features that help people get time back internally for early feedback, and we’re excited about the possibilities ahead.”

Get started

Learn more about how to bring the benefits of on-device AI with Gemini Nano to your apps.

#TheAndroidShow: diving into the latest from Made by Google, including wearables, Foldable, Gemini and more!

Posted by Anirudh Dewani, Director – Android Developer Relations

We just dropped our summer episode of #TheAndroidShow, on YouTube and on developer.android.com, where we unpacked all of the goodies coming out of this month’s Made by Google event and what you as Android developers need to know. With two new Wear OS 5 watches, we show you how to get building for the wrist. And with the latest foldable from Google, the Pixel 9 Pro Fold, we show how you can leverage out of the box APIs and multi-window experiences to make your apps adaptive for this new form factor.

Building for Pixel 9 Pro Fold with Adaptive UIs

With foldables like the Pixel 9 Pro Fold, users have options for how to engage and multitask based on the display they are using and the folded state of their device. Building apps that adapt based on screen size and device postures allows you to scale your UI for mobile, foldables, tablets and beyond. You can read more about how to get started building for devices like the Pixel 9 Pro Fold, or learn more about building for large screens.

Preparing for Pixel Watch 3: Wear OS 5 and Larger Displays

With Pixel Watch 3 ringing in the stable release of Wear OS 5, there’s never been a better time to prepare your app for the behavior changes from Wear OS 5 and larger screen sizes from Pixel. We covered how to get started building for wearables like Pixel Watch 3, and you can learn more about building for Wear OS 3.

Gemini Nano, with multi-modality

We also took you behind the scenes with Gemini Nano with multimodality, Google’s latest model for on-device AI. Gemini Nano, the smallest version of the Gemini model family, can be executed on-device on capable Android devices including the latest Pixel 9. We caught up with the team to hear more about how the Pixel Recorder team used Gemini Nano to summarize users’ transcripts of audio recordings, with data remaining on-device.

And some voices from Android devs like you!

Across the show, we heard from some amazing developers building excellent apps, across devices. Like Rex Jin and Bismark Ito, Android Developers at Meta: they told us how the team at Instagram was able to add Ultra HDR in less than three months, dramatically improving the user experience. Later, SAP told us how within 5 minutes, they integrated NavigationSuiteScaffold, swiftly adapting their navigation UI to different window sizes. And AllTrails told us they are seeing 60% higher monthly retention from Wear OS users… pretty impressive!


Have an idea for our next episode of #TheAndroidShow? It’s your conversation with the broader community, and #TheAndroidShow is your conversation with the Android developer community, this time hosted by Huyen Tue Dao and John Zoeller. You'll hear the latest from the developers and engineers who build Android. You can watch the full show on YouTube Comment start and on developer.android.com/events/show!

Adding 16 KB Page Size to Android

Posted by Steven Moreland – Staff Software Engineer, Sandeep Patil – Principal Software Engineer

A page is the granularity at which an operating system manages memory. Most CPUs today support a 4 KB page size and so the Android OS and applications have historically been built and optimized to run with a 4 KB page size. ARM CPUs support the larger 16 KB page size. When Android uses this larger page size, we observe an overall performance boost of 5-10% while using ~9% additional memory.

In order to improve the operating system performance overall and to give device manufacturers an option to make this trade-off, Android 15 can run with 4 KB or 16 KB page sizes.

The very first 16 KB enabled Android system will be made available on select devices as a developer option. This is so you can use the developer option to test and fix (if needed) your applications to prepare for Android devices with 16 KB page sizes in the near future.

Details

In most CPUs, dedicated hardware called memory management units (MMUs) translate addresses from what a program is using to a physical location in memory. This translation is done on a page-size basis. Every time a program needs more memory, the operating system needs to get involved and fill out a “page table” entry, assigning that piece of memory to a process. When the page size is 4 times larger, there is 4 times less bookkeeping. So, the system can spend more time making sure your videos look great, games play well, and applications run smoothly, and less time filling out low-level operating system paperwork.

Unlike 32-bit/64-bit mode, a page size is not an Application Binary Interface (ABI). In other words, once an application is fixed to be page size agnostic, the same application binary can run on both 4 KB and 16 KB devices.

In Android 15, we’ve refactored Android from the ground up to support running at different page sizes, thus making it page-size agnostic.

Major OS Changes

On new Android 15 based devices:

    • All OS binaries are 16 KB aligned (-Wl,-z,max-page-size=16384). 3rd party applications / libraries may not be 16 KB aligned.
    • All OS binaries are built with separate loadable segments (-Wl,-z,separate-loadable-segments) to ensure all memory regions mapped into a process are readable, which some applications depend on.

Many of our other OS components have been rewritten to avoid assuming the page size and to optimize for larger page size when available.

Filesystems

For performant operation, file system block size must match the page size. EROFS and F2FS file systems have been made 16 KB compatible, as has the UFS storage layer.

On 4 KB systems, ELF executable file size increases due to additional padding added for 16 KB alignment (-Wl,-z,max-page-size=16384 option), but several optimizations help us avoid this cost.

  1. Sparse read-only file systems ensure that zero pages created for additional padding for 16 KB alignment are not written to disk. For example, EROFS knows a certain range of a file is zero filled, and it will not need to do any IO if this part of the file is accessed.
  2. Read-writeable file systems handle zero pages on a case-by-case basis. For example, In Android 15, for files installed as part of applications PackageManager reclaims this space.

Memory Management

  1. The Linux page cache has been modified not to read ahead for these extra padding spaces, thereby saving unnecessary memory load.
  2. These pages are blank padding, and programs never read this. It’s the space in-between usable parts of the program, purely for alignment reasons.

Linux Kernel

The Linux kernel is deeply tied to a specific page size, so we must choose which page size to use when building the kernel, while the rest of the operating system remains the same.

Android Applications

All applications with native code or dependencies need to be recompiled for compatibility with 16 KB page size devices.

Since most native code within Android applications and SDKs have been built with 4 KB page size in mind, they need to be re-aligned to 16 KB so the binaries are compatible with both 4 KB and 16 KB devices. For most applications and SDKs, this is a 2 step process:

  1. Rebuild the native code with 16 KB alignment.
  2. Test and fix on a 16 KB device/emulator in case there are hardcode assumptions about page size.

Please see our developer documentation for more information.

NOTE: If you are an SDK or tools developer, you should add 16 KB support as soon as possible so that applications can work on 16 KB using your SDK or tools.

Developing for 16 KB devices

There are no production Android devices available today or expected for the Android 15 release that support a 16 KB page size. In order to fix this problem, we are taking steps to work with our partners to make a developer option available on existing devices. This developer option is meant for application development and testing. We are also making a 16 KB emulator target available for developers in Android Studio.

16 KB Developer option on device

In Android 15, we implemented a developer option that lets users switch between 16 KB and 4 KB page size on the device in order to test their application with either of the page sizes. This option is available on Pixel 8 and Pixel 8 Pro starting in the Android 15 QPR1 Beta, and we're collaborating closely with SoC and OEM partners to enable the option on additional devices soon.

screen grab of 16KB developer option on device

When built for 16 KB pages, the same binary will work with 4 KB and 16 KB devices, however the Linux kernel has to be separate. In order to solve this problem, we’ve added a way to include an extra kernel you can switch to as a developer option. Incrementally compressed, with one copy for each page size and takes ~12-16 MB of space on disk.

Using the 16 KB developer option will require wiping the device once and an unlocked bootloader. Following flashing, developers will be able to switch between a 4 KB and 16 KB mode by toggling the developer option over a reboot.

If you are a device manufacturer or SoC developer, see our instructions on how to enable and use this.

16 KB on x86_64 desktops

While 16 KB pages are an ARM-only feature, we recognize that many developers are using emulators on x86_64 hardware. In order to bridge this gap for developers, we’ve added support to emulate 16 KB page size for applications on x86_64 emulators. In this mode, the Kernel runs in 4 KB mode, but all addresses exposed to applications are aligned to 16 KB, and arguments to function calls such as mmap(...MAP_FIXED...) are verified to be 16 KB aligned.

To get started, you can download and run the 16 KB pages emulator inside the Android Studio SDK manager. This way, even if you don’t have access to ARM hardware, you can still ensure your applications will work with 16 KB page size.

16 KB pages emulator inside the Android Studio SDK manager

Future

In this post, we’ve discussed the technical details of how we are restructuring memory in Android to get faster, more performant devices. Android 15 and AOSP work with 16 KB pages, and devices can now implement 16 KB pages as a development option. This required changes from the bottom to the top of the operating system, in our development tooling, and throughout the Android ecosystem.

We are looking forward to application and SDK developers now to take advantage of these options and prepare for more performant and efficient Android devices in near future.

Tune in for our summer episode of #TheAndroidShow on August 27!

Posted by Anirudh Dewani – Director, Android Developer Relations

In just a few days, on Tuesday, August 27 at 10AM PT, we’ll be dropping our summer episode of #TheAndroidShow, on YouTube and on developer.android.com. In this quarterly show, we’ll be unpacking all of the goodies coming out of this month’s Made by Google event and what you as Android developers need to know!



With two new Wear OS 5 watches, we’ll show you how to get building for the wrist. And with the latest foldable from Google, the Pixel 9 Pro Fold, we’ll show how you can leverage out of the box APIs and multi-window experiences to make your apps adaptive for this new form factor.

Plus, Gemini Nano now has Multimodality, and we’ll be going behind-the-scenes to show you how teams at Google are using the latest model for on-device AI.

#TheAndroidShow is your conversation with the Android developer community, this time hosted by Huyen Tue Dao and John Zoeller. You'll hear the latest from the developers and engineers who build Android.

Don’t forget to tune in live on August 27 at 10AM PT, live on YouTube and on developer.android.com/events/show!