<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:gd="http://schemas.google.com/g/2005" xmlns:georss="http://www.georss.org/georss" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:thr="http://purl.org/syndication/thread/1.0"><id>tag:blogger.com,1999:blog-6755709643044947179</id><updated>2026-05-22T11:34:37.520-07:00</updated><category term="Featured"/><category term="Google Play"/><category term="Android"/><category term="latest"/><category term="android developers"/><category term="Develop"/><category term="Android Developer"/><category term="Android Studio"/><category term="Games"/><category term="Announcements"/><category term="Security"/><category term="Jetpack"/><category term="Wear OS"/><category term="Play Console"/><category term="Jetpack Compose"/><category term="Privacy"/><category term="Apps"/><category term="Developer Preview"/><category term="archive"/><category term="app development"/><category term="Compose"/><category term="Game Development"/><category term="developer stories"/><category term="Google Play services"/><category term="Kotlin"/><category term="Android Wear"/><category term="google play developers"/><category term="success stories"/><category term="#WeArePlay"/><category term="Platform_Update"/><category term="case study"/><category term="Gemini"/><category term="Performance"/><category term="mobile"/><category term="Distribute"/><category term="android security"/><category term="#11WeeksOfAndroid"/><category term="GooglePlay"/><category term="NDK"/><category term="#GoogleIO"/><category term="App"/><category term="Google Services"/><category term="User Interface"/><category term="Design"/><category term="Developer Tools"/><category term="Android TV"/><category term="Game"/><category term="Google Play Console"/><category term="Android Auto"/><category term="Material Design"/><category term="Media"/><category term="androidstudio"/><category term="Android N"/><category term="Developer Console"/><category term="Google Play Games"/><category term="Large Screens"/><category term="SDK updates"/><category term="Android Developer Challenge"/><category term="Explore"/><category term="Google Play game services"/><category term="Best Practices"/><category term="Google I/O"/><category term="Google I/O 2025"/><category term="How-to"/><category term="foldables"/><category term="#GenerativeAI"/><category term="#TheAndroidShow"/><category term="AI"/><category term="Android app development"/><category term="Google I/O 2023"/><category term="Story"/><category term="Tablets"/><category term="UI"/><category term="Android Jetpack"/><category term="Web"/><category term="developers"/><category term="Tools"/><category term="form factors"/><category term="wear"/><category term="Android Development"/><category term="Android Market"/><category term="Beta"/><category term="Google I/O 2024"/><category term="AndroidDevStory"/><category term="android11"/><category term="developer"/><category term="#androiddevsummit"/><category term="Android Things"/><category term="Indie Games"/><category term="Location"/><category term="machine learning"/><category term="Android 1.5"/><category term="Android for cars"/><category term="App quality"/><category term="compatibility"/><category term="Android Dev Summit"/><category term="Firebase"/><category term="Android Design"/><category term="Android12"/><category term="Authentication"/><category term="Camera"/><category term="CameraX"/><category term="Optimization"/><category term="Solve"/><category term="android p"/><category term="permissions"/><category term="#Android"/><category term="Android 11"/><category term="Android O"/><category term="Indie Games Accelerator"/><category term="Udacity"/><category term="Wear OS 6"/><category term="Widgets"/><category term="announcement"/><category term="media3"/><category term="monetization"/><category term="#JetpackCompose"/><category term="Android Automotive OS"/><category term="Android Emulator"/><category term="Google Play Store"/><category term="Identity"/><category term="Marshmallow"/><category term="Support Library"/><category term="UX"/><category term="androidq"/><category term="indie developers"/><category term="safety"/><category term="#Media"/><category term="API"/><category term="Android 1.6"/><category term="Android XR"/><category term="Audio"/><category term="Gemini Nano"/><category term="Google"/><category term="Google Analytics"/><category term="Open source"/><category term="Pixel"/><category term="R8"/><category term="notifications"/><category term="subscriptions"/><category term="Europe"/><category term="Health Connect"/><category term="Kotlin Multiplatform"/><category term="Learn"/><category term="Localization"/><category term="London"/><category term="ML Kit"/><category term="Modern Android Development"/><category term="Navigation"/><category term="Performance Optimization"/><category term="Testing"/><category term="adaptive"/><category term="beginner"/><category term="business"/><category term="events"/><category term="passkeys"/><category term="Android 5.0"/><category term="Android UI"/><category term="AndroidO"/><category term="C++"/><category term="ExoPlayer"/><category term="Gemini in Android Studio"/><category term="Google Cloud Platform"/><category term="Graphics"/><category term="Health Connect API"/><category term="How-To Guide"/><category term="IoT"/><category term="Layout"/><category term="Play Store"/><category term="Project Treble"/><category term="WebView"/><category term="analytics"/><category term="aosp"/><category term="appstory"/><category term="competition"/><category term="engagement"/><category term="grow"/><category term="prizes"/><category term="release"/><category term="win"/><category term="#MADSkills"/><category term="ADS 22"/><category term="Ads"/><category term="Android Developer Story"/><category term="Android Instant Apps"/><category term="Android Pie"/><category term="Android SDK"/><category term="Android Vitals"/><category term="AndroidX"/><category term="GDC"/><category term="Game Developers Conference"/><category term="Google Cast"/><category term="Google Cloud Messaging"/><category term="Google Fit"/><category term="Google Play Indie Games Festival"/><category term="Google Play Indie games accelerator"/><category term="Google Play policy"/><category term="Indie Games Festival"/><category term="Mobile Games"/><category term="News"/><category term="Policy"/><category term="Product News"/><category term="Quality"/><category term="Release Notes"/><category term="Renderscript"/><category term="UI toolkit"/><category term="adaptive layouts"/><category term="admob"/><category term="android13"/><category term="android14"/><category term="android16"/><category term="battery"/><category term="credential manager"/><category term="developerstory"/><category term="indie"/><category term="indies"/><category term="showcase"/><category term="user experience"/><category term="wearos"/><category term="‘Google Play"/><category term="#AndroidDevJourney"/><category term="#camera"/><category term="APIs"/><category term="Android 15"/><category term="Android M"/><category term="Android Q"/><category term="Android fitness"/><category term="Android health"/><category term="Androidify"/><category term="Background work"/><category term="Dev Story"/><category term="Developer Inspiration"/><category term="Google Assistant"/><category term="IO2013"/><category term="Policies"/><category term="Saatchi"/><category term="TensorFlow"/><category term="app optimizations"/><category term="career inspiration"/><category term="careers in tech"/><category term="google play protect"/><category term="google tv"/><category term="health data"/><category term="spotlight week"/><category term="users"/><category term="watch faces"/><category term="#io19"/><category term="Android 10"/><category term="Android 13"/><category term="Android 14"/><category term="Android 2.0"/><category term="Android 9"/><category term="Android Dev Journey"/><category term="Android Go"/><category term="Android Gradle Plugin"/><category term="Android Open Source Project"/><category term="Android app developers"/><category term="AndroidAI"/><category term="AndroidDev"/><category term="App Resources"/><category term="Bluetooth"/><category term="Developer Journey"/><category term="Education"/><category term="GenAI"/><category term="GenerativeAI"/><category term="Get Inspired"/><category term="Google Drive"/><category term="Google Play Devs"/><category term="Google Play games services"/><category term="HDR"/><category term="HTTPS"/><category term="In-app Billing"/><category term="KMP"/><category term="Material 3 Expressive Design"/><category term="Media and Camera"/><category term="OpenGL ES"/><category term="Power series"/><category term="Requirements"/><category term="Samples"/><category term="TV"/><category term="TensorFlow Lite"/><category term="Tiles"/><category term="Treble"/><category term="VR"/><category term="Watch Face Format"/><category term="adaptive UI"/><category term="android15"/><category term="androidn"/><category term="appexcellence"/><category term="chrome"/><category term="community"/><category term="contest"/><category term="desktop"/><category term="developer story"/><category term="gamestory"/><category term="growth"/><category term="io15"/><category term="library"/><category term="material you"/><category term="nearby"/><category term="rendering"/><category term="startup"/><category term="update"/><category term="watchface"/><category term="workmanager"/><category term="#AdaptiveApps"/><category term="#Android11"/><category term="#AndroidDevChallenge"/><category term="#Wear"/><category term="#passkeys"/><category term="ART"/><category term="Actions on Google"/><category term="Android 4.2"/><category term="Android 6.0"/><category term="Android Camera"/><category term="Android Studio Emulator"/><category term="Android Study Jams"/><category term="Android for Work"/><category term="AndroidWear"/><category term="Animation"/><category term="App Components"/><category term="App Security"/><category term="Architecture"/><category term="Baseline Profiles"/><category term="Canary"/><category term="Code Day"/><category term="Connectivity"/><category term="Courses"/><category term="DAC/Develop"/><category term="Developer profiles"/><category term="Developing Media Apps"/><category term="Development Tools"/><category term="FIDO2"/><category term="GCM"/><category term="Google Developers"/><category term="Google Mobile Ads"/><category term="IO2014"/><category term="Intents"/><category term="Jetpack Navigation"/><category term="KotlinConf"/><category term="Latest news"/><category term="Launch"/><category term="Launchpad Accelerator"/><category term="Licensing"/><category term="ML"/><category term="Platform"/><category term="Platform_Updates"/><category term="Resources"/><category term="Sample code"/><category term="Text-to-Speech"/><category term="Unity"/><category term="Video"/><category term="Virtual Reality"/><category term="accessibility"/><category term="advertising"/><category term="androidp"/><category term="app performance"/><category term="d8"/><category term="event"/><category term="features"/><category term="iOS"/><category term="large_screens"/><category term="layouts"/><category term="multiplatform apps"/><category term="play"/><category term="playback"/><category term="resizing"/><category term="sandbox"/><category term="signing"/><category term="tutorial"/><category term="vulkan"/><category term="wifi"/><category term="windowing"/><category term="#AndroidAI"/><category term="#Gemini"/><category term="#GoogleforGames"/><category term="#Productive"/><category term="#featured"/><category term="#io17"/><category term="#io18"/><category term="#transformer"/><category term="#watch-face"/><category term="#wff"/><category term="#widgets"/><category term="AGDK"/><category term="Activity Recognition"/><category term="Agentic"/><category term="Android 3.0"/><category term="Android 3.2"/><category term="Android 4.4"/><category term="Android App"/><category term="Android Architecture"/><category term="Android Basics"/><category term="Android Dev"/><category term="Android Development Tools"/><category term="Android Studio Narwhal"/><category term="Android ecosystem"/><category term="Android16QPR2"/><category term="AndroidGameDev"/><category term="AndroidPerformance"/><category term="App Bundle"/><category term="App Indexing"/><category term="Architecture Components"/><category term="Biometrics"/><category term="Business &amp; Leadership"/><category term="Camera X"/><category term="Camera2"/><category term="ChromeOS"/><category term="Chromebooks"/><category term="Cloud"/><category term="Commerce"/><category term="Compose Material 3"/><category term="Compose UI"/><category term="Coroutines"/><category term="Crashlytics"/><category term="Custom Model"/><category term="DAC/google"/><category term="DataStore"/><category term="Developer Labs"/><category term="Developer Productivity"/><category term="Early Access"/><category term="Firebase Cloud Messaging"/><category term="Fragments"/><category term="GameDev"/><category term="Gemma"/><category term="Global"/><category term="Google For Games"/><category term="Google Maps"/><category term="Google Play for Work"/><category term="Google client API"/><category term="Google+"/><category term="Gradle"/><category term="Indie Contest"/><category term="Indie games contest"/><category term="Indie games showcase"/><category term="Indie showcase"/><category term="Input methods"/><category term="Instant Apps"/><category term="LiquidFun"/><category term="MADSkills"/><category term="Maps"/><category term="Maps API"/><category term="MaterialDesign"/><category term="MediaSession"/><category term="Mobile App Development"/><category term="Mobile Development"/><category term="Notification"/><category term="Onboarding"/><category term="Pixel Fold"/><category term="Pixel Watch"/><category term="Preview"/><category term="Privacy Sandbox"/><category term="Productivity"/><category term="Profiling"/><category term="SDK Tools"/><category term="Samsung"/><category term="Screens"/><category term="Studio Bot"/><category term="Subscription"/><category term="TLS"/><category term="Text and Input"/><category term="UI Development"/><category term="Ultra HDR"/><category term="Watch Face"/><category term="Wearables"/><category term="Window Size Classes"/><category term="android oreo"/><category term="android privacy"/><category term="android-tv"/><category term="android17"/><category term="apk"/><category term="appexcellencecasestudy"/><category term="appquality"/><category term="ar"/><category term="bestpractices"/><category term="chrome os"/><category term="codelab"/><category term="compiler"/><category term="connection encryption"/><category term="cross-device"/><category term="developergamestory"/><category term="documentation"/><category term="dynamic delivery"/><category term="emulator"/><category term="encryption"/><category term="fcm"/><category term="foldable"/><category term="free-form"/><category term="glance"/><category term="google play for families"/><category term="google-tv"/><category term="insets"/><category term="kernel"/><category term="language"/><category term="largescreens"/><category term="live edit"/><category term="mobile vision APIs"/><category term="multi-device development"/><category term="multitasking"/><category term="network security"/><category term="oreo"/><category term="people"/><category term="privacy sandbox on android"/><category term="profile guided optimization"/><category term="stable release"/><category term="store listing experiments"/><category term="training"/><category term="transformer"/><category term="transparency"/><category term="ubicomp"/><category term="updates"/><category term="wear-tiles"/><category term="windowmanager"/><category term="#APK"/><category term="#Android12"/><category term="#AndroidDev"/><category term="#AndroidJetpack"/><category term="#Androiddevelopment"/><category term="#CredentialManager"/><category term="#GDC20"/><category term="#Media3"/><category term="#Studio"/><category term="#TV"/><category term="#complications"/><category term="#credential-manager"/><category term="#exoplayer"/><category term="#googleplay"/><category term="#identity"/><category term="#nav3"/><category term="#releases"/><category term="#tiles"/><category term="'Google Play"/><category term="5G"/><category term="64bit"/><category term="A/B testing"/><category term="AGDE"/><category term="AI assisted coding"/><category term="AI code completion"/><category term="Action Bar"/><category term="Actions"/><category term="Adaptive apps"/><category term="Adaptive development"/><category term="Agent Mode"/><category term="Android 12L"/><category term="Android 16"/><category term="Android 2.1"/><category term="Android 2.2"/><category term="Android 2.3"/><category term="Android 7.0"/><category term="Android 71"/><category term="Android App Bundles"/><category term="Android Architecture Components"/><category term="Android Bench"/><category term="Android CLI"/><category term="Android Developer Community"/><category term="Android Developer Phone"/><category term="Android Device Streaming"/><category term="Android Devs"/><category term="Android Game SDK"/><category term="Android Media"/><category term="Android Pay API"/><category term="Android Photo Picker"/><category term="Android SDK Upgrade Assistant"/><category term="Android Storage"/><category term="Android Studio 3.0"/><category term="Android Studio Arctic Fox"/><category term="Android Studio Dolphin"/><category term="Android Studio Flamingo"/><category term="Android Studio Giraffe"/><category term="Android Studio Hedgehog"/><category term="Android Studio Jellyfish"/><category term="Android Studio Koala"/><category term="Android Studio Koala Feature Drop"/><category term="Android TV OS"/><category term="Android Wear 2.0"/><category term="Android XR SDK"/><category term="Android app excellence"/><category term="Android betas"/><category term="Android codelabs"/><category term="Android courses"/><category term="Android training"/><category term="Androidtv"/><category term="Animation and Graphics"/><category term="App Bundles"/><category term="App Excellence"/><category term="App Quality Insights"/><category term="AppCompat"/><category term="AppFunctions"/><category term="Assistant"/><category term="Audio for Android"/><category term="Auto"/><category term="BLE"/><category term="Back Stack"/><category term="Better together"/><category term="Boston"/><category term="C"/><category term="Compose Animation Previews"/><category term="Conversation API"/><category term="Dashboard"/><category term="Daydream"/><category term="Debugging"/><category term="Declarative Programming"/><category term="Dev Tools"/><category term="Developer Console Store Listing Experiments"/><category term="Efficient Apps"/><category term="Feature Group"/><category term="Fundamentals"/><category term="GDC 2020"/><category term="GLSL"/><category term="GPS"/><category term="Gesture Navigation"/><category term="Gestures"/><category term="Google AI Studio"/><category term="Google Developer"/><category term="Google Play App Safety"/><category term="Google Play Billing"/><category term="Google Play Instant"/><category term="Google Play Integrity API"/><category term="Google Play SDK Console"/><category term="Google Play SDK Index"/><category term="Google Sign-In"/><category term="Google Wallet"/><category term="Google codelabs"/><category term="Google for Games Developer Summit"/><category term="GoogleAPIClient"/><category term="GoogleIO"/><category term="Gradle sync"/><category term="Guidelines"/><category term="Health Services"/><category term="Horologist"/><category term="I/O"/><category term="I/O2014"/><category term="IME"/><category term="Influence"/><category term="Internet of Things"/><category term="JNI"/><category term="Japan"/><category term="Java"/><category term="Java 8"/><category term="JetBrains"/><category term="Jetpack Compose 1.2"/><category term="Jetpack Glance"/><category term="Jetpack Libraries"/><category term="Kotlin Everywhere"/><category term="KotlinConf 2023"/><category term="LVL"/><category term="LaunchShow"/><category term="Linux"/><category term="LondonEng"/><category term="MAD Skills"/><category term="Made by Google"/><category term="Memory Management"/><category term="Mobile World Congress"/><category term="Model Maker"/><category term="MotionLayout"/><category term="Multi-form factor designs"/><category term="Navigation Library"/><category term="Navigation Q&amp;A"/><category term="Navigation component"/><category term="Navigation3"/><category term="Nougat"/><category term="On-Device Machine Learning"/><category term="OnePlus"/><category term="OpenGL"/><category term="OpenXR"/><category term="PC games"/><category term="PickVisualMedia"/><category term="Pixel Tablet"/><category term="Places"/><category term="Play Academy"/><category term="Play Commerce"/><category term="Play Privacy"/><category term="Play Security"/><category term="Play Vitals"/><category term="PlayStore"/><category term="Preview Stabilization"/><category term="Problem-Solving"/><category term="Profilers"/><category term="Pure"/><category term="SDR"/><category term="SEA"/><category term="Safe Browsing"/><category term="SafetyNet"/><category term="Scoped Storage"/><category term="Sharing"/><category term="Southeast Asia"/><category term="Storage"/><category term="TLS by default"/><category term="TikTok"/><category term="Translation"/><category term="UXR"/><category term="User Engagement"/><category term="User Support"/><category term="Visibility"/><category term="Watch Face Push"/><category term="Wear surfaces"/><category term="WebXR"/><category term="Window Manager"/><category term="adaptive API"/><category term="android ux"/><category term="androidjetpack"/><category term="app developer"/><category term="app lifecycle"/><category term="app signing"/><category term="apps games insights"/><category term="attestation"/><category term="autofill"/><category term="beacons"/><category term="beta testing"/><category term="billing"/><category term="build Android apps"/><category term="buildingforbillions"/><category term="canonical layouts"/><category term="code completion"/><category term="codelabs"/><category term="coding productivity"/><category term="color"/><category term="constraintlayout"/><category term="conversations"/><category term="conversions"/><category term="device explorer"/><category term="devices"/><category term="dexer"/><category term="dx"/><category term="editing"/><category term="emojis"/><category term="fitness"/><category term="game design"/><category term="gaming"/><category term="get started"/><category term="google computer science"/><category term="hackster"/><category term="immersive experiences"/><category term="in-app purchase"/><category term="indie game developers"/><category term="infinite deviation: games"/><category term="insights"/><category term="io2010"/><category term="laptops"/><category term="learn Android"/><category term="malware"/><category term="media controls"/><category term="multi-device"/><category term="on-device"/><category term="passwords"/><category term="podcast"/><category term="policy compliance"/><category term="ratings"/><category term="regulations"/><category term="reviews"/><category term="search"/><category term="social impact"/><category term="solutions"/><category term="spatial computing"/><category term="startup profiles"/><category term="target API"/><category term="text"/><category term="things"/><category term="time"/><category term="user data"/><category term="watch face API"/><category term="&quot;featured'+'androidstudio'"/><category term="#11WeeksOfAndroid Android TV"/><category term="#64-bit"/><category term="#AAB"/><category term="#ADS19"/><category term="#AIGlasses"/><category term="#ARCore #TheAndroidShow"/><category term="#ART"/><category term="#ATV"/><category term="#Android #Android development # advanced Android #learn Android #build Android apps #Udacity"/><category term="#Android 14"/><category term="#AndroidAppBundles"/><category term="#AndroidDeviceStreaming&#10;#AndroidStudio"/><category term="#AndroidGeiminiEra"/><category term="#AndroidStudio"/><category term="#AndroidTV"/><category term="#AndroidTV #Google Cast #Udacity"/><category term="#AndroidXR"/><category term="#Androidbasics"/><category term="#AppBundles"/><category term="#Argentina"/><category term="#Compose"/><category term="#Composecamp"/><category term="#Covid-19"/><category term="#EdTech"/><category term="#Editing"/><category term="#Experts"/><category term="#FFmpeg"/><category term="#Firebase"/><category term="#GDC17 #GoogleDeveloperDay #GooglePlay #Games #VR #Daydream #Developers #Android #Google Play"/><category term="#GDE"/><category term="#GPA2017 #GooglePlayAwards #GooglePlay #Games #VR #AR #AndroidWear #Indies #Startup #Apps #Developers #Android #Google Play"/><category term="#GPA2018 #GooglePlayAwards #GooglePlay #Games #VR #AR #AndroidWear #Indies #Startup #Apps #Developers #Android #Google Play"/><category term="#GTV"/><category term="#Game"/><category term="#Gemma"/><category term="#GoogleDevelopers"/><category term="#GoogleTV"/><category term="#Imagen"/><category term="#MADscore"/><category term="#PasskeysWeek #Identity"/><category term="#Pixel"/><category term="#Productivity"/><category term="#STEM"/><category term="#StorageSavings"/><category term="#TechEd"/><category term="#TechEdu"/><category term="#XRGlasses"/><category term="#XRHeadsets"/><category term="#adaptive"/><category term="#advancedAndroid #Udacity"/><category term="#apps"/><category term="#auth-wear"/><category term="#authentication"/><category term="#autofill"/><category term="#autofill-services"/><category term="#codelabcourses"/><category term="#codelabs"/><category term="#compiler"/><category term="#develop"/><category term="#exposing-data"/><category term="#google"/><category term="#io16"/><category term="#largescreens"/><category term="#memory"/><category term="#notifications"/><category term="#optimization"/><category term="#page-sizes"/><category term="#performance"/><category term="#pixel7"/><category term="#restorecredentials"/><category term="#sign-in"/><category term="#ultra-hdr"/><category term="#watch-face-push"/><category term="#xr"/><category term="'featured'+'platform_update'"/><category term=". Web"/><category term=".app"/><category term="11 Weeks of Android"/><category term="11weeksofandroid"/><category term="12l"/><category term="16 KB memory page"/><category term="16 KB page size"/><category term="16KB Page Size"/><category term="3d"/><category term="4 KB page size"/><category term="5 star apps"/><category term="505 Games"/><category term="60 FPS"/><category term="8.1"/><category term="AAKB"/><category term="AAOS"/><category term="AAudio for Android"/><category term="ADT-3"/><category term="AGI"/><category term="AI&#10;Industry Trends"/><category term="AI Edge"/><category term="AI glasses"/><category term="AIY"/><category term="AIY Projects"/><category term="AMD"/><category term="AMP"/><category term="ANR"/><category term="API stabilization"/><category term="APK Expansion Files"/><category term="AQI"/><category term="ARM"/><category term="ARPU"/><category term="ART profiles"/><category term="ASO"/><category term="ATSL"/><category term="About Fun"/><category term="Access"/><category term="Acquisition"/><category term="Activity Embedding"/><category term="Activity Stack Pinning"/><category term="ActivityResult"/><category term="Administration"/><category term="Advanced Android course"/><category term="Advanced Android training"/><category term="Agent Skills"/><category term="Agentic AI"/><category term="Agus Gomez"/><category term="Android 11 Compatibility"/><category term="Android 11 final release"/><category term="Android 12 Beta 5"/><category term="Android 16 KB page"/><category term="Android 17"/><category term="Android 2.3.3"/><category term="Android 4.0"/><category term="Android 4.3"/><category term="Android 5.1"/><category term="Android 7.1"/><category term="Android 8.1"/><category term="Android AICore"/><category term="Android Basics in Kotlin"/><category term="Android Basics with Compose"/><category term="Android C++"/><category term="Android Dev Summit 2021"/><category term="Android Developer Journey"/><category term="Android Developers  #GooglePlayAwards #GooglePlay #Games #Indies #Startup #Apps #Developers #Android"/><category term="Android Developers Best Practices"/><category term="Android Excellence"/><category term="Android GPU"/><category term="Android Game Development Kit"/><category term="Android Games"/><category term="Android IDE"/><category term="Android IO"/><category term="Android Keystore"/><category term="Android ML"/><category term="Android Neural Networks"/><category term="Android Neural Networks API"/><category term="Android O Developer Preview"/><category term="Android One"/><category term="Android Output Switcher"/><category term="Android Paging"/><category term="Android Pay"/><category term="Android Performance Tuner"/><category term="Android Plugins"/><category term="Android Prompting"/><category term="Android Q Beta"/><category term="Android Q Beta 6"/><category term="Android Quality"/><category term="Android Scudo"/><category term="Android Security Rewards"/><category term="Android Security Rewards Program"/><category term="Android Studio 3.6"/><category term="Android Studio 4.0"/><category term="Android Studio 4.1"/><category term="Android Studio 4.2"/><category term="Android Studio Bumblebee"/><category term="Android Studio Chipmunk"/><category term="Android Studio Dolphin Beta"/><category term="Android Studio Electric Eel Canary"/><category term="Android Studio Icon"/><category term="Android Studio Iguana"/><category term="Android Studio Ladybug"/><category term="Android Studio Logo"/><category term="Android Studio Otter"/><category term="Android Studio Profiler"/><category term="Android Studio for enterprises"/><category term="Android Testing Support Library"/><category term="Android Tools"/><category term="Android U"/><category term="Android VRP"/><category term="Android audio latency"/><category term="Android developer codelabs"/><category term="Android games on PC"/><category term="Android graphics"/><category term="Android release"/><category term="Android skills"/><category term="AndroidCanary"/><category term="AndroidRuntime"/><category term="Annoucements"/><category term="AnswerLab"/><category term="AoG"/><category term="App Actions"/><category term="App Review"/><category term="App Startup"/><category term="App Testing"/><category term="App experience"/><category term="App icons"/><category term="AppSearch"/><category term="AppWidgets"/><category term="Application Security Improvement Program"/><category term="Assistant SDK"/><category term="Auto Backup"/><category term="Autofill Framework"/><category term="Autofill Services"/><category term="Automatic App Testing"/><category term="Automotive"/><category term="BABBQ"/><category term="Backup and Restore (IDE)"/><category term="Benchmarking"/><category term="Betatesting"/><category term="Billions"/><category term="Biometric authentication"/><category term="BiometricPrompt"/><category term="BiometricPrompt API"/><category term="Budge Studios"/><category term="Bugs"/><category term="Built-in Intents"/><category term="C++ audio library for Android"/><category term="CDD"/><category term="CFI"/><category term="CMP"/><category term="CTS"/><category term="Call Log"/><category term="CameraX Effect"/><category term="CameraX Extensions"/><category term="Cast"/><category term="Certificates"/><category term="Certification"/><category term="Channels"/><category term="Clock"/><category term="Cloud Speech API"/><category term="Code Generation"/><category term="Compiler Mitigations"/><category term="Compiler-based security"/><category term="Complications"/><category term="Composables"/><category term="Compose 1.8"/><category term="Compose Adaptive Layouts Library 1.2"/><category term="Compose MultiPlatform"/><category term="Compose Preview"/><category term="Compose Tools"/><category term="Compose for Wear OS"/><category term="CompositionPlayer"/><category term="Connected displays"/><category term="Consistency"/><category term="Console"/><category term="Contacts"/><category term="Content Provider"/><category term="Control Flow Integrity"/><category term="Cool Stuff"/><category term="Credential Saving"/><category term="CredentialManager"/><category term="Crostini"/><category term="CultureAlley"/><category term="DAC/Design"/><category term="DNG"/><category term="DNS over TLS"/><category term="DP3"/><category term="DST"/><category term="Dagger"/><category term="Dan Dole"/><category term="Data-Driven Prompts"/><category term="Daylight savings"/><category term="Deep Links"/><category term="DeliQueue"/><category term="Demographics"/><category term="Deprecation"/><category term="Design Hub"/><category term="Desugaring"/><category term="DevTools"/><category term="Developer Accounts"/><category term="Developer Days"/><category term="Developer Experience"/><category term="Developer Preview 4"/><category term="Developer Student Clubs"/><category term="DialogFragment"/><category term="Disruptor Beam"/><category term="DonutTracker"/><category term="Doze"/><category term="Driving Do Not Disturb"/><category term="Duolingo"/><category term="EA"/><category term="EAP"/><category term="EOY Recap 2022"/><category term="EOY recap 2023"/><category term="Editors’ Choice"/><category term="Educate"/><category term="Electronic Arts"/><category term="Engage"/><category term="Engage SDK"/><category term="Engineering"/><category term="Enterprise"/><category term="Entrepreneurs"/><category term="Extensions"/><category term="FAQ"/><category term="Facebook"/><category term="Fast"/><category term="Fast Pair"/><category term="Feature Combination"/><category term="Feedback"/><category term="Figma"/><category term="Finance"/><category term="Find My Device"/><category term="Firebase AI Logic"/><category term="Firebase Crashlytics"/><category term="Fit"/><category term="Foreground services"/><category term="Fortify"/><category term="Fragment"/><category term="Freeform Resizing"/><category term="Frequently Asked Questions"/><category term="Froyo 2.2"/><category term="GDC 2025"/><category term="GDC17"/><category term="GDC19"/><category term="GDC20"/><category term="GMD"/><category term="GNSS"/><category term="GPGS"/><category term="GPU acceleration"/><category term="GSI"/><category term="Game Mode API"/><category term="Game engine development"/><category term="Gamer Profile"/><category term="Games and Media"/><category term="Gareth Jones"/><category term="Gemini 1.5 Flash"/><category term="Gemini 1.5 Pro"/><category term="Gemini API"/><category term="Gemini APIs"/><category term="Gemini features"/><category term="Gemini for enterprises"/><category term="GeminiPro"/><category term="GenAI APIs"/><category term="Global Game Jam"/><category term="Global events"/><category term="Gmail"/><category term="Golf Clash"/><category term="Google AI Edge"/><category term="Google APIs"/><category term="Google Ads"/><category term="Google Apps"/><category term="Google Awareness API"/><category term="Google Cloud"/><category term="Google Developer Student Clubs"/><category term="Google Health"/><category term="Google Home app"/><category term="Google I/O 2021"/><category term="Google I/O 2026"/><category term="Google I/O 26"/><category term="Google Mobile Developer Day"/><category term="Google Now"/><category term="Google Photos"/><category term="Google Play Asset Delivery"/><category term="Google Play Developer API"/><category term="Google Play Developer API V3"/><category term="Google Play Developer API Version 3"/><category term="Google Play Developer Policies"/><category term="Google Play Games on PC"/><category term="Google Play Orders API benefits"/><category term="Google Play Points"/><category term="Google Play Protect Rewards Program"/><category term="Google Play developer distribution agreement"/><category term="Google Play monetization insights"/><category term="Google Play system updates"/><category term="Google registry"/><category term="GoogleDeveloperDay"/><category term="GoogleForGames"/><category term="GooglePlay AndroidDev"/><category term="Gpfe"/><category term="GridLayout"/><category term="Guidance on how to declare support for pointer input"/><category term="HAL"/><category term="HDR Headroom"/><category term="HTC G1"/><category term="HWASan"/><category term="Hard"/><category term="Health and Fitness"/><category term="HelloEnglish"/><category term="High Speed Recording"/><category term="Hilt"/><category term="Hiring"/><category term="Holo"/><category term="How to build Android app"/><category term="HttpsURLConnection"/><category term="Hutch"/><category term="Hutch Games"/><category term="Hybrid Interface"/><category term="HyperV"/><category term="I/O '25"/><category term="I/O 2018"/><category term="I/O 2024 KMP"/><category term="I/O 2026 announcements"/><category term="ICS"/><category term="IO"/><category term="IO 2019"/><category term="Image Attachment"/><category term="Image Processing"/><category term="Imagen"/><category term="Images"/><category term="Indie Games Fund"/><category term="Indie games developers"/><category term="Indonesia"/><category term="Indonesia Games Contest"/><category term="Industry Standards"/><category term="Industry Trends"/><category term="InkToCode"/><category term="Intel"/><category term="Intent"/><category term="Intermediate"/><category term="Introducing Android Performance Analyzer"/><category term="Inzen studio"/><category term="Issue Tracker"/><category term="J. Eason"/><category term="Jamal Eason"/><category term="Jetpack Compose 1.3"/><category term="Jetpack Compose 1.4"/><category term="Jetpack Compose 1.5"/><category term="Jetpack Core Performance library"/><category term="Jetpack Tiles Library"/><category term="Jetpack XR SDK"/><category term="JetpackCompose"/><category term="JioHotstar"/><category term="Job Scheduler"/><category term="Job Service"/><category term="KNOX"/><category term="KSP"/><category term="Key Attestation"/><category term="Keystone"/><category term="Kids experience"/><category term="Klei Entertainment"/><category term="Kotlin Event"/><category term="Kotlin Symbol Processiong"/><category term="Kotlin codelabs"/><category term="KotlinConf 2025"/><category term="LLM"/><category term="LLM Optimization"/><category term="LLM Tuning"/><category term="LTV"/><category term="LaMatinale"/><category term="Large screen"/><category term="Layout Inspector"/><category term="LeMonde"/><category term="Life of a Bug"/><category term="Lifecycle"/><category term="Lint"/><category term="Linux on Chrome OS"/><category term="Linux on Chromebooks"/><category term="LiteRT"/><category term="Live Updates"/><category term="LiveData"/><category term="Lollipop"/><category term="Low-light"/><category term="MCP"/><category term="MENA"/><category term="ML Kit Face Detection"/><category term="ML Stack"/><category term="MLKit"/><category term="Marta Gui"/><category term="Material 3 Expressive"/><category term="Media Development Kit"/><category term="Media Editing"/><category term="Media3 Effect"/><category term="MediaPipe"/><category term="Memory Safety"/><category term="MessageQueue"/><category term="Messenger"/><category term="Meta"/><category term="Mirror Mode"/><category term="Mixed Reality"/><category term="Mobilel"/><category term="Motorola Droid"/><category term="Mountain View"/><category term="Multimodal"/><category term="Multiwindow"/><category term="Munich"/><category term="Music"/><category term="MyTouch 3G"/><category term="NBU"/><category term="NFC"/><category term="NLP"/><category term="Narwhal Canary"/><category term="Nav Editor"/><category term="Navigation 3"/><category term="Navigation Sample"/><category term="Night Mode"/><category term="Niji Games"/><category term="Nix Hydra"/><category term="Non-SDK"/><category term="Notification bubbles"/><category term="Now in Arabic"/><category term="O-MG"/><category term="OAuth"/><category term="OEM"/><category term="OS Updates"/><category term="Oboe audio library"/><category term="Omnidrone"/><category term="OneTap sign-in"/><category term="OneUi7"/><category term="Ongoing Activities API"/><category term="OpenSL ES for Android"/><category term="Operating System"/><category term="Oppo"/><category term="Orientation"/><category term="OverlayEffect"/><category term="P2P"/><category term="PC"/><category term="PC gaming"/><category term="PWA"/><category term="Paging"/><category term="Pane expansion"/><category term="Parcelize"/><category term="Paris Hsu"/><category term="PasskeysWeek"/><category term="Password Manager"/><category term="Paul Gouge"/><category term="Photo Sphere"/><category term="Physics"/><category term="Pico"/><category term="Pixel 10 Pro fold"/><category term="Pixel 2"/><category term="Pixel 9"/><category term="Pixel Fold AVD"/><category term="Pixel Fold Emulator"/><category term="Pixel Tablet AVD"/><category term="Pixel Tablet Emulator"/><category term="Pixel Watch 4"/><category term="Platform Stability"/><category term="PlatformUpdate"/><category term="Platforms"/><category term="Play Console sales channel reporting"/><category term="Play Games Services"/><category term="Play IO19"/><category term="Play Quality"/><category term="Play developer identification"/><category term="Playdemic"/><category term="Playtime"/><category term="Playtime 2016"/><category term="Plugin"/><category term="Pocket Gems"/><category term="Potentially Harmful Applications"/><category term="Power Consumption"/><category term="Power Profiler"/><category term="Power Rails"/><category term="Pre-Launch Report"/><category term="Preload Manager"/><category term="PreloadManagerListener"/><category term="Preloading"/><category term="Product Inclusion"/><category term="Profileable Build"/><category term="Programs"/><category term="Project Mainline"/><category term="Promo Graphics"/><category term="Promotions"/><category term="Prompt Library"/><category term="Protolayout"/><category term="Protolayouts"/><category term="Public Tracker"/><category term="Publishing Overview"/><category term="PyTorch"/><category term="PyTorch mobile support"/><category term="PyTorck"/><category term="Q Beta 6"/><category term="Quick Search Box"/><category term="RAW capture"/><category term="RTL"/><category term="Ratings and Reviews"/><category term="Releases"/><category term="RemoteCompose"/><category term="Restore Credentials"/><category term="Robinhood"/><category term="Room"/><category term="Rust"/><category term="SDLC"/><category term="SDV"/><category term="SMS"/><category term="SQLite"/><category term="SafeArgs"/><category term="Sam Glassenberg"/><category term="Sample app"/><category term="Samsung One UI"/><category term="Sanitizers"/><category term="Santa Tracker"/><category term="Save for later"/><category term="Schell Games"/><category term="Screen Flash"/><category term="ScreenCapture"/><category term="Security Development Lifecycle"/><category term="Selected Photos"/><category term="Sensors"/><category term="Seriously"/><category term="Server"/><category term="SessionConfig"/><category term="Sharding"/><category term="ShareActionProvider"/><category term="Shared Components"/><category term="Shared Elements"/><category term="SharedPreferences"/><category term="Shortcuts"/><category term="Signos"/><category term="Simultaneous Contrast"/><category term="Skyscanner"/><category term="Sliding Window Pattern"/><category term="Small Business"/><category term="Smart Home"/><category term="Smart Lock"/><category term="Smartlock"/><category term="Social"/><category term="Social Point"/><category term="South Korea"/><category term="Space"/><category term="Space Ape Games"/><category term="Speech Input"/><category term="Stable 1.0"/><category term="Startup Speed"/><category term="Stencils"/><category term="Storytoys"/><category term="Stripe"/><category term="Studio"/><category term="Stylus"/><category term="Submit changes"/><category term="Super Evil MegaCorp"/><category term="Survey"/><category term="System Fitness Tracker"/><category term="System Instructions"/><category term="System Media Controls"/><category term="System hardening"/><category term="TAGS: Google Play"/><category term="TEE"/><category term="Tabletop"/><category term="Tap to Pay"/><category term="Target API level"/><category term="TargetPreloadStatusControl"/><category term="Tel Aviv"/><category term="Telephony"/><category term="Text improvements"/><category term="The Android Show"/><category term="The Next Evolution in Profiling for Android"/><category term="Tiles API"/><category term="Tiles components"/><category term="Tiles material"/><category term="Timekeeping"/><category term="Timestamps"/><category term="Tips"/><category term="Titan Brawl"/><category term="Todoist"/><category term="Tor Norbye"/><category term="Touch"/><category term="Transform Preview with Gemini"/><category term="Trusted User Interface"/><category term="TrustedTime"/><category term="Twitter"/><category term="UAMP"/><category term="UI Automation"/><category term="USB speed detection"/><category term="UTP"/><category term="Universal Android Music Player"/><category term="Updatability"/><category term="Upgrade Agent"/><category term="User Acquisition"/><category term="User Feedback"/><category term="User Retention"/><category term="User-Agent Reduction"/><category term="VGames"/><category term="VOD"/><category term="Vertex AI Prompts"/><category term="Viber"/><category term="Video recording"/><category term="ViewBinding"/><category term="Virtualization"/><category term="Visibility tracking"/><category term="Vitals"/><category term="Voice"/><category term="Voice Kit"/><category term="Vulnerability"/><category term="Vulnerability Remediation"/><category term="WEI"/><category term="WFF 5"/><category term="WM"/><category term="Wakelocks"/><category term="Watch Face Studio"/><category term="Wear UI Library"/><category term="Webdriver"/><category term="What's new in Cars for developers"/><category term="Wide Color"/><category term="Widget Discovery"/><category term="WindowSizeClass"/><category term="Wired XR glasses"/><category term="Withings"/><category term="Work Manager"/><category term="World Food Day"/><category term="X"/><category term="X86"/><category term="XML"/><category term="XR"/><category term="XR Emulator"/><category term="Xiaomi"/><category term="XmlPullParser"/><category term="YouTube"/><category term="Zero-Shot Prompts"/><category term="activity-recognition"/><category term="add-ons"/><category term="advanced Android"/><category term="adventure games"/><category term="and appquality"/><category term="android 12"/><category term="android 8.0"/><category term="android audio apps"/><category term="android c++ games linux open source release osx serialization windows"/><category term="android extension pack"/><category term="android kotlin"/><category term="android o apis"/><category term="android sanitizer"/><category term="android things 1.0"/><category term="android wear 1.0"/><category term="android-dev"/><category term="android10"/><category term="android71"/><category term="android81"/><category term="android9"/><category term="androidbasics"/><category term="androiddevsummit"/><category term="androidoreo"/><category term="app attribution"/><category term="app id"/><category term="app install"/><category term="app size"/><category term="app standby buckets"/><category term="app updates"/><category term="appbundle"/><category term="application security"/><category term="applications"/><category term="arch"/><category term="arcore"/><category term="ask android"/><category term="assistive technology"/><category term="audio playback"/><category term="audio playback capture"/><category term="audio recording"/><category term="augmented reality"/><category term="award"/><category term="awareness"/><category term="background"/><category term="background access"/><category term="background location"/><category term="backup and sync"/><category term="badge"/><category term="bar code"/><category term="beacon"/><category term="best apps 2020"/><category term="best games 2020"/><category term="betatesting GooglePlayforFamilies"/><category term="big data"/><category term="blackhat"/><category term="bootcamp"/><category term="bubbles"/><category term="bug swatting"/><category term="building 5 star apps"/><category term="building across devices"/><category term="bulletins"/><category term="business development"/><category term="calling"/><category term="car app quality"/><category term="clang"/><category term="class loading"/><category term="code sharing"/><category term="codesearch"/><category term="coding"/><category term="companion Action"/><category term="compilers"/><category term="concurrency"/><category term="concurrent camera"/><category term="conferencing"/><category term="context"/><category term="controls"/><category term="course"/><category term="crash management"/><category term="credential"/><category term="cross-device sdk"/><category term="cross-platform"/><category term="cross-platform development"/><category term="curriculum"/><category term="custom tiles"/><category term="cutout"/><category term="dalvik"/><category term="data storage"/><category term="ddms"/><category term="decompile"/><category term="deeplocal"/><category term="desktop apps"/><category term="developer community"/><category term="developer profile"/><category term="developer success"/><category term="developerappstory"/><category term="developerpreview"/><category term="developerstory developerconsole"/><category term="device id"/><category term="dex2oat"/><category term="diagnostics"/><category term="dialog full-screen dim"/><category term="digital credentials"/><category term="digital identity"/><category term="disassembly"/><category term="dynamicdelivery"/><category term="eBook"/><category term="ecosystem"/><category term="educator"/><category term="efficiency"/><category term="encoding"/><category term="explorer"/><category term="face detection"/><category term="faculty"/><category term="families"/><category term="feature combination query"/><category term="final release"/><category term="financial management"/><category term="first app"/><category term="font updates"/><category term="free trial"/><category term="full-text search"/><category term="game-as-a-service"/><category term="games business"/><category term="gaming industry"/><category term="gapid"/><category term="gdc18"/><category term="getting started"/><category term="go edition"/><category term="gold"/><category term="golf games"/><category term="google pay"/><category term="google security"/><category term="googleservices"/><category term="guide"/><category term="heading"/><category term="health"/><category term="heart rate sensor"/><category term="high dynamic range"/><category term="high frame rate"/><category term="how to develop audio apps for android"/><category term="how to increase app revenue Google Play"/><category term="http"/><category term="i18n"/><category term="iOS development"/><category term="image description"/><category term="imakeapps"/><category term="in-app transactions"/><category term="in-car experiences"/><category term="insider attack resistance"/><category term="install referrer"/><category term="install track"/><category term="installs"/><category term="instant"/><category term="instant experience"/><category term="instant games"/><category term="instructor"/><category term="interactive divider"/><category term="internationalization"/><category term="internet"/><category term="intuit"/><category term="io16"/><category term="io18"/><category term="jetpack media3"/><category term="jobscheduler"/><category term="journeys testing"/><category term="journeys with gemini"/><category term="key"/><category term="keymaster"/><category term="keymint"/><category term="keys"/><category term="keystore"/><category term="kids app developers"/><category term="kids apps"/><category term="ktx"/><category term="l10n"/><category term="language id"/><category term="language identification"/><category term="laptop apps"/><category term="large screen devices"/><category term="latency"/><category term="latest."/><category term="leanback"/><category term="learning"/><category term="listing"/><category term="liveops"/><category term="location access"/><category term="location data"/><category term="lock contention"/><category term="lock-free"/><category term="long aspect ratio"/><category term="longevity"/><category term="machine"/><category term="marble"/><category term="media playback"/><category term="meet"/><category term="memory"/><category term="messaging api"/><category term="minSdkVersion"/><category term="mobile ads"/><category term="mobile driving license"/><category term="mobile encryption"/><category term="mobile search"/><category term="monitoring"/><category term="motion"/><category term="motion."/><category term="multi-display support"/><category term="multi-product checkout"/><category term="multiplayer"/><category term="music player"/><category term="musician apps"/><category term="native development"/><category term="native libraries"/><category term="navigation apps"/><category term="network"/><category term="new Play developer accounts"/><category term="new with Cast"/><category term="nonce field"/><category term="oboe"/><category term="of"/><category term="official launch"/><category term="offline"/><category term="on-device AI"/><category term="optimize app ARPPU"/><category term="optimized resource shrinking"/><category term="ordered broadcast"/><category term="oscon"/><category term="outreach"/><category term="packaging"/><category term="partial"/><category term="passwordless authentication"/><category term="patch level"/><category term="patching"/><category term="pathway"/><category term="peer group"/><category term="perfetto"/><category term="performance class"/><category term="performancetools"/><category term="phone"/><category term="photo picker"/><category term="play billing"/><category term="play billing library"/><category term="play core"/><category term="playback resumption"/><category term="playbook app"/><category term="playconsole"/><category term="player engagement"/><category term="policy violations"/><category term="postview"/><category term="pre rotation"/><category term="pre-leaunch"/><category term="preinstalled apps"/><category term="preloaded apps"/><category term="priority inversion"/><category term="pro audio"/><category term="problem solving"/><category term="programming"/><category term="project marble"/><category term="protection"/><category term="provisioning"/><category term="publishing"/><category term="purchase flows"/><category term="push messaging"/><category term="pwn"/><category term="real world identity"/><category term="real-time audio"/><category term="recaptcha"/><category term="reduce app churn strategies"/><category term="registration"/><category term="requirement"/><category term="revenue"/><category term="robotics"/><category term="rotation"/><category term="runtime"/><category term="runtime permissions"/><category term="sandbox ads"/><category term="sanitizer"/><category term="schools"/><category term="screen"/><category term="screensharing"/><category term="sdk"/><category term="seamless transfer"/><category term="secondhand"/><category term="secure hardware"/><category term="security infrastructure"/><category term="selinux"/><category term="sensors-and-location"/><category term="service fees"/><category term="sign-in"/><category term="slow motion"/><category term="smart reply"/><category term="smartwatch design"/><category term="smr"/><category term="source code"/><category term="spam"/><category term="spatial audio"/><category term="spyware"/><category term="stability"/><category term="stable"/><category term="storelistingexperime"/><category term="strictmode"/><category term="study group"/><category term="success"/><category term="suggested fixes for crashes"/><category term="synthetics"/><category term="system UI"/><category term="system fonts"/><category term="tamper-resistant hardware security"/><category term="targeted spyware"/><category term="taxation"/><category term="taxes"/><category term="teach"/><category term="telecom"/><category term="text styling API"/><category term="textclassifier"/><category term="texture compression"/><category term="textview"/><category term="threading"/><category term="time zone"/><category term="titan"/><category term="traceview"/><category term="tradein"/><category term="transition api"/><category term="transitions"/><category term="trial period"/><category term="trust"/><category term="university"/><category term="user control"/><category term="user location"/><category term="user safety"/><category term="version"/><category term="video call"/><category term="video editing"/><category term="video playback"/><category term="videocall"/><category term="viewfinder"/><category term="viewpager"/><category term="virtual instruments"/><category term="voice call"/><category term="voip"/><category term="vulnerabilities"/><category term="wake locks"/><category term="wear emulators"/><category term="web registry"/><category term="wellness"/><category term="window"/><category term="“Privacy Sandbox on Android”"/><title type="text">Android Developers Blog</title><subtitle type="html">An Open Handset Alliance Project.</subtitle><link href="http://android-developers.googleblog.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/" rel="alternate" type="text/html"/><link href="http://pubsubhubbub.appspot.com/" rel="hub"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/><author><name>Birna</name><uri>http://www.blogger.com/profile/04044883525253664551</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><generator uri="http://www.blogger.com" version="7.00">Blogger</generator><openSearch:totalResults>2024</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-8004021755030502267</id><published>2026-05-19T06:00:00.000-07:00</published><updated>2026-05-21T09:08:56.044-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ai"/><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Android Bench"/><category scheme="http://www.blogger.com/atom/ns#" term="Android CLI"/><category scheme="http://www.blogger.com/atom/ns#" term="android developers"/><category scheme="http://www.blogger.com/atom/ns#" term="Android Studio"/><category scheme="http://www.blogger.com/atom/ns#" term="Android XR"/><category scheme="http://www.blogger.com/atom/ns#" term="cross-device"/><category scheme="http://www.blogger.com/atom/ns#" term="Developer Tools"/><category scheme="http://www.blogger.com/atom/ns#" term="Google I/O 2026"/><category scheme="http://www.blogger.com/atom/ns#" term="Google Play"/><category scheme="http://www.blogger.com/atom/ns#" term="google tv"/><category scheme="http://www.blogger.com/atom/ns#" term="Jetpack Compose"/><category scheme="http://www.blogger.com/atom/ns#" term="Kotlin Multiplatform"/><category scheme="http://www.blogger.com/atom/ns#" term="Material Design"/><category scheme="http://www.blogger.com/atom/ns#" term="Wear OS"/><title type="text">17 Things to know for Android developers at Google I/O</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP7OJeCTRC-RN9j39-rULmU26qB-lZoyIZjjDrq07Z7b5GsfHz3q18ftSgcWReGBgIBkp03B6BVghzWllOC38o4jckzzq-e4a8R23ISeegev98zubhGXbIzhTZaqbCTaPLJC2zkxKYvvNspcM4yXkk94f6PEQHpdyMvlpwogicTWQRn3GEksJHOTQDIG4/s2048/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP7OJeCTRC-RN9j39-rULmU26qB-lZoyIZjjDrq07Z7b5GsfHz3q18ftSgcWReGBgIBkp03B6BVghzWllOC38o4jckzzq-e4a8R23ISeegev98zubhGXbIzhTZaqbCTaPLJC2zkxKYvvNspcM4yXkk94f6PEQHpdyMvlpwogicTWQRn3GEksJHOTQDIG4/s2048/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" style="display: none;" /&gt;


&lt;div style="line-height: 1.6;"&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;i&gt;Posted by Matthew McCullough, VP, Product Management, Android Developer&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="line-height: 1.6;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVq21_VInGStxa8CNxcwiU_tpvlkPXci8aDeSb8qUqBe4teuWUN_vIqBf_W64xjTQMBYFyJkdXB-nshsp9DXXEwzUV8-Zn9feQTbuyLk8l98kAlFQqz3_LZrYaEvCukqXCZuY95tmNzrLFqXSviaTTSxflyAkpXJb88cB7mZ7g0x6fdnKzXqY8i1jmhqM/s4209/GoogleForDevelopers-AndroidText-Blogger-4209x1253.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVq21_VInGStxa8CNxcwiU_tpvlkPXci8aDeSb8qUqBe4teuWUN_vIqBf_W64xjTQMBYFyJkdXB-nshsp9DXXEwzUV8-Zn9feQTbuyLk8l98kAlFQqz3_LZrYaEvCukqXCZuY95tmNzrLFqXSviaTTSxflyAkpXJb88cB7mZ7g0x6fdnKzXqY8i1jmhqM/s16000/GoogleForDevelopers-AndroidText-Blogger-4209x1253.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="line-height: 1.6;"&gt;&lt;br /&gt;&lt;/div&gt;Today at &lt;a href="https://io.google/2026/"&gt;Google I/O,&lt;/a&gt; we announced the many ways we’re powering agentic workflows to increase your productivity and ensure your apps shine across the expanding Android ecosystem. Here’s a recap of 17 of our favorite announcements for Android developers; you can also &lt;a href="https://www.youtube.com/live/KvTRMSa1w4E?si=QBAxNvihPwJCJUuS"&gt;see what was announced last week&lt;/a&gt; in &lt;a href="https://developer.android.com/events/show"&gt;The Android Show: I/O Edition&lt;/a&gt;. Stay tuned over the next two days as we dive into all of the topics in more detail!&lt;h2 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: x-large;"&gt;Build High Quality Android Apps Using Agents&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;

  &lt;h3 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;1: Android CLI: helping you build with any agent, LLM, and tool&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;
  &lt;a href="https://goo.gle/CLI_IO26"&gt;Android CLI is now stable&lt;/a&gt;. It offers programmatic tools that allow any AI agent, including Claude Code, Codex, or Antigravity, to perform core Android tasks much more easily and efficiently. With today’s release, it also provides a bridge to tap directly into the "heavy-lifting" power of Android Studio to give you the production-ready polish needed for professional Android development. By leveraging the new android studio commands, developers can now grant their preferred agents the ability to perform semantic symbol resolution, analyze files for warnings, and even render Jetpack Compose previews. This release also enables official support for "Journeys" through new &lt;a href="https://developer.android.com/tools/agents/android-skills"&gt;Android skills&lt;/a&gt;, which enables agents to execute end-to-end UI tests under your direction. Watch the &lt;a href="https://www.youtube.com/watch?v=aqmpZocmR8o&amp;amp;list=PLOU2XLYxmsIKL_eEgkKJWDRhYUEvS9eYz&amp;amp;index=23"&gt;developer keynote&lt;/a&gt;, and tune into the &lt;a href="https://io.google/2026/explore/pa-keynote-7"&gt;What’s New in Android tools talk&lt;/a&gt; for more information.&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;p style="color: #333333; font-family: sans-serif; text-align: center;"&gt;&lt;span style="background-color: #fcff01;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXrW3yDK9uH_I8MDyVxgYbPAXfrNTJvlMkXhaZFrM1X9ob0LvQbGe_ZC6anUeO_VNd181iptI_MIuEEpX-9GZdf6ZTJCN-WHpPzDCLOeSblo8vrjliSZ0rRrHwIsERWBjbbosP-M_WvA2pva9mF5FWVygAwQbdiW3SLZgJj9TpRIruG4H-ILsvSq_b4dc/w640-h442/agy-android-cli%20(2).png" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span&gt;&lt;i style="background-color: white;"&gt;You can now easily install Android CLI for use with Google Antigravity 2.0.&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;

  &lt;h3 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;2: Build production-ready apps with ease in Google AI Studio&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;
  Developers and creators can now &lt;a href="http://android-developers.googleblog.com/2026/05/build-android-apps-google-ai-studio.html"&gt;build native Android apps, simply with a prompt in Google AI Studio&lt;/a&gt;. The apps are built with development best practices like Jetpack Compose, Kotlin, and APIs that leverage our recommended developer patterns. Google AI Studio enables developers to prototype, iterate via an embedded emulator, and deploy to physical devices without heavy local installations. Developers are then able to take those apps and share them to Android devices, as well as share them with others for testing through Google Play Console’s internal testing track. If a developer wants to prepare their app for a wider release, they’re able to take it to Android Studio for advanced debugging, testing, and UI polish. Watch the &lt;a href="https://www.youtube.com/watch?v=aqmpZocmR8o&amp;amp;list=PLOU2XLYxmsIKL_eEgkKJWDRhYUEvS9eYz&amp;amp;index=23"&gt;developer keynote&lt;/a&gt;, and tune into the &lt;a href="https://io.google/2026/explore/pa-keynote-7"&gt;What’s New in Android tools talk&lt;/a&gt; for more information.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdRaw1v6rolr4alo0C6AWKdFchsMEQgtOGfmk2Ramb0IoOB7smDcVU3yC7YJMkvVQuCPJ9vQW53tQjaV-5wcgOGzMtFDmb_Jbv40an1kvQdqYburXnsONvLqckKL2MWuShi3XmQEstW761oOLjujOk3FMsh3FyAiy5-Pe7xdTwFdfkWOmEnHhQfUJhtCo/w640-h544/image1.gif" /&gt;&lt;/div&gt;&lt;i&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Use the embedded Android Emulator to create Android apps in Google AI Studio&lt;/i&gt;&lt;/div&gt;&lt;/i&gt;&lt;/div&gt;&lt;h2 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;3: Accelerating AI coding assistance with Android Bench&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;
  &lt;a href="http://d.android.com/bench"&gt;Android Bench&lt;/a&gt; is our LLM leaderboard for Android development challenges. The goal is to accelerate model improvements, so you have more useful options for AI assistance. Many of you have been using open-weight models for AI assistance, so we’re now adding commonly used ones, such as Gemma 4, to the leaderboard, so you can see how LLMs that offer offline access and additional flexibility for power-users measure up. We're continuously working on increasing the difficulty of challenges we’re giving LLMs, to continue encouraging more useful improvements.&amp;nbsp;&lt;h3 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;4: Convert iOS apps to Android with the Migration Assistant in Android Studio&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;
  The Migration Assistant in Android Studio is designed to port apps from platforms like iOS, React Native, or web frameworks to native Android. By simply selecting an existing project, developers can have the agent intelligently map features, convert assets like storyboards and SVGs, and implement Android best practices using Jetpack Compose and our recommended Jetpack libraries. This effectively transforms what used to be weeks of manual porting into a streamlined agentic workflow that only takes hours. We shared a preview of the incoming feature in the &lt;a href="https://www.youtube.com/watch?v=aqmpZocmR8o&amp;amp;list=PLOU2XLYxmsIKL_eEgkKJWDRhYUEvS9eYz&amp;amp;index=23"&gt;developer keynote&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div style="line-height: 1.6;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK7UKI_nzS7gOkDXYONAjCNbQ4eSqlgT8qqMT5D4qf0OjQUNtxj4Urpq-eTROMEDgrqLKGlwMm_lHA7ayG_BC1DkitQI1ZKsF5gYr-mPIxFUsz_8JPcVHFAtnHZoO2CrVjMEvJrqvBz8_WU1I0T1P2diDprR2B47PcA21oS3RLtbgrhmrpiWV-MAw9ks4/w640-h360/image9%20(1).gif" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;A sneak peek of the Migration Assistant converting an iOS app into a native Android app&lt;/i&gt;&lt;/div&gt;

  &lt;h2 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: x-large;"&gt;Building AI Into Your Apps&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;

  &lt;h3 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;5: Building Intelligent Apps with generative AI&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;
  Generative AI enables you to create apps that are more intelligent, personalized, and agentic than ever before. This year, we introduced the latest advancements in on-device intelligence with a preview of Gemini Nano 4 for tasks like data extraction and summarization. We also expanded cloud capabilities via Firebase AI Logic, allowing developers to leverage Gemini models with robust grounding (including URL, Maps, and web search) to build smarter, more capable assistants. Furthermore, we unveiled our hybrid inference approach and the new &lt;a href="https://goo.gle/ADK_IO26"&gt;Agent Development Kit (ADK) for Android&lt;/a&gt;, alongside communication protocols like AG-UI and A2UI that simplify the creation of autonomous, agentic experiences. To start integrating these powerful features, explore the &lt;a href="https://developer.android.com/ai"&gt;developer documentation&lt;/a&gt;, and watch the technical deep dive session where we showcase all these technologies.

  &lt;h3 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;6: Experiment with AppFunctions today&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;
  AppFunctions is an &lt;a href="https://developer.android.com/reference/android/app/appfunctions/package-summary"&gt;Android platform API&lt;/a&gt; with an accompanying &lt;a href="https://developer.android.com/jetpack/androidx/releases/appfunctions"&gt;Jetpack library&lt;/a&gt; to simplify building Android MCP integrations. It empowers your apps to behave like on device MCP servers, contributing functions that act as tools for use by agents and assistants. AppFunctions integration with Gemini is currently in a private preview with trusted testers, and you can begin preparing your apps already. You can sign up for the &lt;a href="http://goo.gle/eap-af"&gt;Early Access Program&lt;/a&gt; and start experimenting using the &lt;a href="http://d.android.com/ai/appfunctions"&gt;API guidance&lt;/a&gt;, &lt;a href="https://github.com/android/appfunctions"&gt;sample&lt;/a&gt;, and &lt;a href="https://github.com/android/skills/blob/main/device-ai/appfunctions/SKILL.md"&gt;skill&lt;/a&gt; today.

  &lt;h2 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: x-large;"&gt;The Future is Adaptive&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;

  &lt;h3 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;7: Android is now Compose First; Views are now in maintenance mode.&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;
  Compose is our standard for UI development, and we are moving to a Compose-first approach for all future guidance and libraries. Building on five years of evolution, the latest releases deliver a more mature toolkit, from the highly customizable Styles API to refined shared element transitions and enhanced input support. These updates allow you to build beautiful, adaptive apps with less code and better performance. Learn more about what Compose-first means for Android Development in &lt;a href="http://android-developers.googleblog.com/2026/05/android-ui-development-is-compose-first.html"&gt;our blog post&lt;/a&gt;.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq9kh5gxOfSdY2w9ZeKdWropXpqP7rj4KtodIZA5B_j7ujQu-blrsQKKC0lI4VEsEycpLEwsZeJhHaNOY1Xe9DrIHDwVszYfQN0GQlwxz8xoVfg1oiIr9zNlUyqqdCl2M7pyHoHgVvC7omKRthmXNaO3GE5Q15XeZ1ALiugszd8qHxpWuHo2Eh79zYW4M/w640-h416/image5.png" /&gt;&lt;/div&gt;&lt;div style="line-height: 1.6;"&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Build Android UI with Compose&lt;/i&gt;&lt;/div&gt;&lt;h3 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;8: Building seamless Android experiences across devices with Jetpack Compose&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;div style="text-align: left;"&gt;The Android ecosystem is now &lt;a href="https://goo.gle/AdaptiveApps_IO26"&gt;Adaptive by Default&lt;/a&gt;, moving fluidly across phones, foldables, tablets, cars, XR, and expanding usages with &lt;a href="https://developer.android.com/googlebook"&gt;Googlebook&lt;/a&gt; and connected displays. With over 580 million large-screen devices, and users on multiple devices spending up to 14x more on apps, the investment in adaptive design presents a massive opportunity. &lt;a href="https://developer.android.com/compose"&gt;Jetpack Compose&lt;/a&gt; is the definitive engine for this transition, offering core tools like our latest &lt;a href="http://goo.gle/nav3"&gt;Jetpack Navigation 3&lt;/a&gt; release, new experimental &lt;a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/grid"&gt;Grid&lt;/a&gt; and &lt;a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox"&gt;FlexBox&lt;/a&gt; layouts, enhanced non-touch input support, and &lt;a href="https://developer.android.com/media/camera/camerax"&gt;CameraX&lt;/a&gt; for correct camera previews across any window size. Furthermore, new &lt;a href="https://developer.android.com/tools/agents/android-skills"&gt;skills&lt;/a&gt; in Android Studio make updating your existing app to adopt these adaptive patterns easier than ever.

  &lt;img src="https://blogger.googleusercontent.com/img/a/AVvXsEi3DD3G6IUrmOwYh7bMq0uieBvGL8li2W48YnUfQfa3ZXy2kD7QvPorNfAyCSmFlBs4q0csXDqmZjhyGf8UHFE2pUNjvqxLaaJhmm6QpSBumq2YkMHI1jyiTNfh5WQhEEY9hP6vWhcbbwflygdTwYzoIdnuIqoht0S6iGKk4pVCnxL2wVXYBMBlcdeneD8" /&gt;&lt;i&gt;Notability’s Android debut sets a new standard for premium productivity apps. Built with Jetpack Compose, Navigation 3, and Kotlin Multiplatform, it delivers an intuitive, adaptive experience across devices.&lt;/i&gt;&lt;/div&gt;&lt;h3 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;9: Create seamless experiences for Googlebook&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;
  Last week we announced &lt;a href="https://developer.android.com/googlebook"&gt;Googlebook&lt;/a&gt;, a high-performance laptop that provides a large-screen canvas for your existing apps. Building with adaptive principles today helps ensure your app will work on Googlebook. Get started by reviewing relevant &lt;a href="https://developer.android.com/design/ui/desktop"&gt;design guidance&lt;/a&gt; and &lt;a href="https://developer.android.com/docs/quality-guidelines/adaptive-app-quality/experiences/desktop"&gt;developer guidelines&lt;/a&gt; for desktop experiences. Try out the new Desktop Emulator available in the Android Studio Canary to to test your apps for this form factor today.&lt;/div&gt;&lt;div style="line-height: 1.6;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtH3cjiXICi8dNCtQTDV9PTyjt4wPQBl1xA9XGKGU6FmqLRuBm9YyH7HNQsydD6H6F2GIPw2TdUsFyeu2xMFUO2Jk36k5QXjuWNdm_VE8AQftq2w2m0RPFyYfyZjTppSOjzuOEpJMzF08t9V0YZr-xI7mu31uvcRItugwvVxPUBouSmOXt1MsqbB1WPC0/w640-h360/image3.png" /&gt;&lt;/div&gt;&lt;div style="line-height: 1.6;"&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;New Desktop Android Emulator&lt;/i&gt;&lt;/div&gt;&lt;h3 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;10: Unified widget development experience with Jetpack Glance&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;
  Android 17 marks a shift toward a single, Compose-based development model for all widgets. By unifying the experience across mobile, Wear OS, and cars through Jetpack Glance, you can soon scale UI components across the ecosystem with a familiar workflow. &lt;br /&gt;&lt;br /&gt;The breakthrough this year is the integration of RemoteCompose. On mobile and cars, it powers high-fidelity animations, while on Wear OS, it allows Wear Widgets (formerly Tiles) to render complex UI logic natively on remote surfaces. This ensures peak performance on low-power hardware while allowing a cohesive user journey—like checking a flight status on your car dashboard and seeing gate change updates on your wrist.&lt;/div&gt;&lt;div style="line-height: 1.6;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 1.6; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiA5s4g4hCW89qdeC2oqrTtxh6q7t9q3-wkOSt3tfVzCT3vhLUd1GMYJrhCjK04O2jyxBGl0R2pclnRq3Kb0f0Td-hV9aukKvZQTfGpGJS6GLK0MqUkpVW_0qiNC1eMGe6NPPhlCHrnQWFYhmbdSzpDnUHh5tjvpmUzZOvY2w_dX1LBnpNctSRmeahXUl4/w640-h320/blog_widgets.gif" /&gt;&lt;/div&gt;&lt;div style="line-height: 1.6; text-align: center;"&gt;&lt;i&gt;Four widgets are shown cycling through in the Android Auto interface. A clock, a contact card, Google Home favorites and a photo.&lt;/i&gt;&lt;/div&gt;&lt;div style="line-height: 1.6; text-align: center;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="line-height: 1.6;"&gt;&lt;strong style="color: #333333;"&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;11: Expand your reach on the road with Android for Cars&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;To help you expand your reach when you build in-car experiences, we're making it easier to build once and deliver your apps to Android Auto and Android Automotive OS. With the latest releases of the Car App Library, you can build customized, distraction-optimized&amp;nbsp;&lt;a href="https://developer.android.com/training/cars/apps/media"&gt;templated media apps&lt;/a&gt;&amp;nbsp;for both platforms. We're introducing new&amp;nbsp;&lt;a href="https://developer.android.com/design/ui/cars/guides/components/overview"&gt;components&lt;/a&gt;&amp;nbsp;and template capabilities to give you increased flexibility and more options for laying out content. Parked experiences are expanding too, with immersive video playback coming to Android Auto for phones running Android 17. You can easily adapt your video apps for these parked experiences;&amp;nbsp;&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSf0z4Nfw8wrloVhlgHDpLgdkg4WXsFj9ni5c1pw0qTvJ3Q4fQ/viewform"&gt;apply now to the early access program&lt;/a&gt;&amp;nbsp;to publish in these beta categories and learn more about the latest updates in our&amp;nbsp;&lt;a href="http://android-developers.googleblog.com/2026/05/android-for-cars-unifying-platforms-premium-experiences.html"&gt;blog&lt;/a&gt;.&lt;h3 style="color: #333333;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;12: Accelerate your development with Android XR Developer Preview 4&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;Inspired by the innovative experiences you’ve built for the platform, we’re continuing to mature our tools with&amp;nbsp;&lt;a href="https://goo.gle/XRSDK_IO26"&gt;Developer Preview 4 of the Android XR SDK&lt;/a&gt;. A key milestone in this journey is the transition of our core libraries, XR Runtime, Jetpack SceneCore, and ARCore for Jetpack XR, moving to Beta soon to provide a more stable and performant foundation. We are also accelerating hardware access through the&amp;nbsp;&lt;a href="https://goo.gle/Catalyst_IO26"&gt;Android XR Developer Catalyst Program&lt;/a&gt;, where you can apply for XREAL’s Project Aura, audio glasses, or display glasses developer kits. Watch The latest in Android XR session or&amp;nbsp;&lt;a href="https://goo.gle/XRSDK_IO26"&gt;read our blog&lt;/a&gt;&amp;nbsp;to see how these updates help you build experiences across the ecosystem.&lt;/div&gt;&lt;div style="line-height: 1.6;"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyjbgGH7RwGkOkQLoXeLd88Vo7cXRjHLBSRokBWkzvYQUrqqbfrTXukM1u_SuGq0-AoXRPoGABpCOF-HMad4-aoNvXjTVyNXgGpbffTlSQMbTaXJva1c2GiUBx1fhC4fCCd0XO9XFzKNzs6edNqo0RAx-p2ZNXy0l-StJh7AxhyphenhyphenrXi-lqe-jXL0n8oprs/w640-h360/Aura%20Geospatial%20Tour%20Demo%20-%20Draft%2001%20(1).gif" /&gt;&lt;/div&gt;&lt;i&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Early preview of the Geospatial API  in ARCore for Jetpack XR, enabling high-precision anchoring of digital content to real-world locations.&lt;/i&gt;&lt;/div&gt;&lt;/i&gt;&lt;h3 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;13: Android is your new home for professional-grade media experiences&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;
  Android 17 streamlines the entire media lifecycle with a production-ready toolkit. High-fidelity capture is now simplified with the CameraXViewfinder Composable, which handles complex scaling and responsiveness on foldables and tablets. For post-production, the new Media3 AI Effects library provides a single interface for premium features like Magic Eraser and Studio Sound, automatically optimizing for the device's hardware. &lt;br /&gt;&lt;br /&gt;The pipeline is completed by CodecDB, offering chipset-specific encoding recommendations to eliminate export noise, and a new Scrubbing Mode in ExoPlayer for ultra-smooth seeking. Whether you’re compositing multi-asset edits with Media3 Transformer or using the streamlined CastPlayer API, these updates ensure a professional-grade experience with significantly less development overhead.&lt;/div&gt;&lt;div style="line-height: 1.6;"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXXvjrWhhRUXdYJyhuu-Vnf0UP2jKcYhAvUggZJi10kndrixZdx4cD8HEhrWVmavlxAUT5N025Fx1kgOLJP5w83LDUSR3E9YzfIJUuZ3WBedFSBtI_oLgIcxSOYg-s53obwX_8HtYqfxSaz95LVzSiMAdrrwgL4T6TVETwtxxkZV2mSkkAfvYA681zNlc/w640-h542/supercharge%20(1).gif" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Low Light Boost and Magic Eraser in action&lt;/i&gt;&lt;/div&gt;&lt;h3 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;14: Increase app discovery and engagement on Google TV&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;
  Pointer remotes, which enable motion-controlled input, will be a future way for users to interact with Google TV as it unlocks faster user navigation. App developers can start &lt;a href="https://developer.android.com/training/tv/get-started/hardware#no-touchscreen"&gt;declaring support for pointing input&lt;/a&gt; to ensure their apps are discoverable on future TVs with pointer remotes. Additionally, the Engage SDK, formerly known as the Video Discovery API, optimizes Resumption, Entitlements, and Recommendations across all Google TV form factors to boost app discovery and engagement. It’s a great time to start onboarding the Engage SDK now, since the legacy Watch Next API, which has been powering your continue watching 1.0 experience, will lose support in the 2nd half of 2027. Get all the details in our &lt;a href="http://android-developers.googleblog.com/2026/05/increase-google-tv-app-discovery.html"&gt;blog&lt;/a&gt;.&lt;/div&gt;&lt;div style="line-height: 1.6;"&gt;&lt;h3 style="color: #333333;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;15: Performance: the foundation of a great app experience&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;To help developers navigate memory limits in Android 17, we've launched a suite of optimization tools. The&amp;nbsp;&lt;a href="https://developer.android.com/r8-analyzer"&gt;R8 Configuration Analyzer&lt;/a&gt;&amp;nbsp;identifies keep rules that are bloating your binary, while&amp;nbsp;&lt;a href="https://developer.android.com/topic/performance/tracing/profiling-manager/how-to-capture"&gt;ProfilingManager&lt;/a&gt;&amp;nbsp;and the integrated LeakCanary in Android Studio streamline memory leak detection. Furthermore, the new&amp;nbsp;&lt;a href="https://developer.android.com/android-performance-analyzer"&gt;Android Performance Analyzer&lt;/a&gt;&amp;nbsp;offers advanced AI integration for complex trace analysis and automated SQL query generation to pinpoint performance bottlenecks.&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;h2 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: x-large;"&gt;And The Latest on Driving Business Growth&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;

  &lt;h3 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;16: What’s new in Google Play&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;Today's &lt;a href="https://goo.gle/play-io26"&gt;updates from Google Play&lt;/a&gt; help expand your reach and scale your business with less complexity. We’re redefining Play Store discovery with an immersive, short-form video format called Play Shorts, while expanding your audience beyond the store with app discovery in the Gemini app on Android and web. Plus, we’re introducing powerful new capabilities like agentic catalog management for seamless bulk price and SKU updates, and using Gemini models to enable Play Console  to pre-populate store listings from imported documents—making global localization effortless. &lt;/div&gt;&lt;div style="line-height: 1.6;"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOB1wGZNYGPgY0ED70X7Dtl2KiFk8kRH4fv3HrXXTWX0-xKkN4Em0mi8QAB0g2w_-4SNcTR4fJazpiQ7XI6-XKeyQniFhULKWNmV8YvyWMuQ9tosvT5ixZ0FOye27DI90R5Tra1eWX3FCX7OrWkgzhvhCD6vtfD8_6-FMfMWDvXoVv3zSTauZwraDGsM4/w640-h360/IO26_BlogInLine_App-discovery-in-Gemini_1920x1080_1605.gif" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Gemini will provide users with app suggestions during a search&lt;/i&gt;&lt;/div&gt;

  &lt;h3 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;17: And of course, Android 17&lt;/span&gt;&lt;/strong&gt;&lt;/h3&gt;
  Android 17 includes new performance &amp;amp; system architecture improvements (in addition to app memory limits) like a lock-free MessageQueue and a GC with more frequent, less intensive young-generation collections to ensure system-wide stability and smoother UIs. The new &lt;a href="https://developer.android.com/about/versions/17/features/contact-picker"&gt;contact picker&lt;/a&gt; and &lt;a href="https://developer.android.com/reference/android/content/Intent#ACTION_OPEN_EYE_DROPPER"&gt;eyedropper API&lt;/a&gt; help minimize the use of sensitive permissions and unnecessary access to user data. &lt;br /&gt;&lt;br /&gt;Review &lt;a href="https://developer.android.com/about/versions/17/behavior-changes-all"&gt;the behavior changes&lt;/a&gt; to make sure your app is ready for Android 17, including &lt;a href="https://developer.android.com/about/versions/17/behavior-changes-all#bg-audio"&gt;background audio hardening&lt;/a&gt; and &lt;a href="https://developer.android.com/about/versions/17/behavior-changes-all#sms-otp-all-apps"&gt;SMS OTP protection&lt;/a&gt;. Get ready to &lt;a href="https://developer.android.com/about/versions/17/behavior-changes-17"&gt;target Android 17&lt;/a&gt; (API 37) with changes such as mandatory large-screen resizability, certificate transparency by default, and restricted local network access. You can start testing today by enrolling your device &lt;a href="https://android-developers.googleblog.com/2026/04/the-fourth-beta-of-android-17.html"&gt;in the Beta&lt;/a&gt; or using the latest 17.0 emulator images. &lt;br /&gt;&lt;br /&gt;One more thing. the third beta of our Android 17 quarterly platform release (QPR1) just came out, and it contains a minor SDK release to support a few features that just couldn't wait for QPR2.

  &lt;h2 style="color: #333333; text-align: left;"&gt;&lt;strong&gt;&lt;span style="font-family: inherit; font-size: x-large;"&gt;Check out all of the Android &amp;amp; Play Content at Google I/O&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/h2&gt;
  &lt;p&gt;&lt;span face="sans-serif" style="color: #333333;"&gt;This was just a preview of some of the updates for Android developers at Google I/O. Tune into &lt;a href="https://io.google/2026/explore/pa-keynote-5"&gt;What’s New in Android&lt;/a&gt; for the latest news and announcements and &lt;a href="https://io.google/2026/"&gt;follow Google I/O&lt;/a&gt; for much more over the following week!&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content><link href="http://android-developers.googleblog.com/feeds/8004021755030502267/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/17-things-android-developers-google-io.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/8004021755030502267" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/8004021755030502267" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/17-things-android-developers-google-io.html" rel="alternate" title="17 Things to know for Android developers at Google I/O" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP7OJeCTRC-RN9j39-rULmU26qB-lZoyIZjjDrq07Z7b5GsfHz3q18ftSgcWReGBgIBkp03B6BVghzWllOC38o4jckzzq-e4a8R23ISeegev98zubhGXbIzhTZaqbCTaPLJC2zkxKYvvNspcM4yXkk94f6PEQHpdyMvlpwogicTWQRn3GEksJHOTQDIG4/s72-c/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-164515295463367798</id><published>2026-05-19T05:45:00.000-07:00</published><updated>2026-05-19T11:08:14.540-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android app development"/><category scheme="http://www.blogger.com/atom/ns#" term="Android Emulator"/><category scheme="http://www.blogger.com/atom/ns#" term="Google AI Studio"/><category scheme="http://www.blogger.com/atom/ns#" term="Jetpack Compose"/><category scheme="http://www.blogger.com/atom/ns#" term="Kotlin"/><category scheme="http://www.blogger.com/atom/ns#" term="Play Console"/><title type="text">Build native Android apps in Google AI Studio </title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd6QUmqCnkvDT9M0IoWA6y_752MRk01nHVQOa644yYkgoMGMDk8Dy6ow6X4SqFzzODP-a1kRaNcuF-1ZyR_lk5fTfdbuEMKDvuX4s7LFaGNuMswzvMCFoYeaQ3RLf2OZPYUWN5BsnqRIsmDub85hpYZNGY7AsaHCsHlfkxLqfqm0PozMhkyqK4i6WfgGM/s2048/GoogleForDevelopers-AndroidCombo2-StrapiMetacard-2048x1323.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd6QUmqCnkvDT9M0IoWA6y_752MRk01nHVQOa644yYkgoMGMDk8Dy6ow6X4SqFzzODP-a1kRaNcuF-1ZyR_lk5fTfdbuEMKDvuX4s7LFaGNuMswzvMCFoYeaQ3RLf2OZPYUWN5BsnqRIsmDub85hpYZNGY7AsaHCsHlfkxLqfqm0PozMhkyqK4i6WfgGM/s2048/GoogleForDevelopers-AndroidCombo2-StrapiMetacard-2048x1323.png" style="display: none;" /&gt;


&lt;div style="line-height: 1.5;"&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;i&gt;Posted by Emma-Louise Leavey, Group Product Manager and Mike Taylor-Cai, Product Manager&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVwPsGVUMbwR9wQP6ABNBXOWboTfwBPXTg-WwhpVo-nJsWJkXeFMUdU5lPsXYc6jh4bnFwI03EG8fIYgmwEkU8hUKHNgSfSYpDLzUgEX1kGLGoTXXfzqcIsh6ZVOHLcripkRitSymdVGwC0Hnwm1H6S-LdsKXLdkefuPp5mtBWC5H1ACTICDI_fNqsdoc/s4209/GoogleForDevelopers-AndroidCombo2-Blogger-4209x1253.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVwPsGVUMbwR9wQP6ABNBXOWboTfwBPXTg-WwhpVo-nJsWJkXeFMUdU5lPsXYc6jh4bnFwI03EG8fIYgmwEkU8hUKHNgSfSYpDLzUgEX1kGLGoTXXfzqcIsh6ZVOHLcripkRitSymdVGwC0Hnwm1H6S-LdsKXLdkefuPp5mtBWC5H1ACTICDI_fNqsdoc/s16000/GoogleForDevelopers-AndroidCombo2-Blogger-4209x1253.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: black; font-family: sans-serif; font-weight: bold; padding: 10px 0px;"&gt;&lt;br /&gt;&lt;/div&gt;

    Starting today &lt;a href="https://ai.dev/apps?features=build_android_app"&gt;Google AI Studio&lt;/a&gt; can build entire Android apps for you in minutes from just a prompt. You don't need to install any software or configure any libraries, which significantly lowers the barrier to development. Whether you’re a seasoned developer looking to prototype at lightning speed or a creator building your first-ever mobile experience, you can now go from a single prompt to a high-quality, Kotlin-based Android app in AI Studio. You can easily install the app on your device, share it with others for testing, or send it to Android Studio for any further development.&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;&lt;h2 style="text-align: left;"&gt;The power of native Android&lt;/h2&gt;While AI has made it easy to generate web-based apps, people want more on their mobile devices. They expect the beautiful and usable modern app design and capabilities that come with native Android user experiences, built with the Kotlin programming language using Jetpack Compose, the official and recommended toolkit for Android development. Native Android apps bring the reliability of offline support, continuous background services, and the deep integration of hardware sensors like GPS, Bluetooth, and NFC. We've brought the technology that enables you to &lt;a href="https://developer.android.com/studio/gemini/create-a-new-project-with-ai"&gt;quickly create new projects with Gemini in Android Studio&lt;/a&gt; directly into the web-based AI Studio. Now, you get the best of both worlds: the ease of a prompt-based interface paired with the power of the Android SDK, all in your browser, no installation required.&lt;br /&gt;&lt;h2 style="color: black;"&gt;&lt;span style="font-family: inherit;"&gt;A seamless, end-to-end workflow&lt;/span&gt;&lt;/h2&gt;
    We have streamlined the entire development lifecycle so you can focus on your idea:&amp;nbsp;&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;&lt;b&gt;1. Create your app and iterate in the cloud:&lt;/b&gt; Use the embedded Android Emulator directly in your browser to preview and interact with your app as it’s being built. No heavy SDKs to download, no local setup required.&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWOTqLBbAXBibOw5wN_-49Q21RuGxwPjhQESK5r3KctKIPz1uV4dg0_LiK0w6xxdvbLECzMHzQk-kQO9h1VdflTPKi3wM9sKrwZvLcPbtISBnL2H4acnG8gpEuPtbxpDHexKi4S8Eg_hcQv1_dZOCh78pFGi27aiWHMYZc1gsDA_Iq7SRbVRUkHhngrgw/w640-h544/AI_Studio_creation_step_v2.gif" /&gt;&lt;/div&gt;&lt;i&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Use the embedded Android Emulator to create and edit Android Apps right in the web browser&lt;/i&gt;&lt;/div&gt;&lt;/i&gt;&lt;div style="line-height: 1.5;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;2.&lt;/b&gt; &lt;b&gt;Install instantly:&amp;nbsp;&lt;/b&gt;Connect your Android phone using a USB cable and install your app directly from AI Studio using the integrated Android Debug Bridge (adb).&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHMqfor305bPNhs_X2ahAxG8QmtpxtLKPrq44Uh4q1OpdsZyDlAuIyKJJDk-2v75-ErSLNp8yCyHQZn-6IQ-mkz8mfedEFtEJuD6VILIhtt8ypGpXmRuqM9LoJDDNnn-xrX3_Cr2MRUUcaEhVpJgCsjrjz-kwHHQeIhq8celQjg5Rt5_S5-j-_eSYpYaU/w640-h544/AI_Studio_Install_v2.gif" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Install the app on your Android device&lt;/i&gt;&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;3. Streamlined Publish to Google Play:&amp;nbsp;&lt;/b&gt;Using your &lt;a href="https://play.google.com/console/signup"&gt;Google Play developer account&lt;/a&gt;, you can now publish your app directly from AI Studio for testing. AI Studio will automatically create your app record, package the bundle, and upload it to an internal testing track in Google Play Developer Console. Your app is available for you to install within minutes, and you can automatically update your app on your device as you develop it further in AI Studio.&amp;nbsp;&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqGamXSrq6MNtz-PUt17netBXi_JiOMVERsoYV2mEArG8x5f-zCbU8WwTTaClpruCTsN4o3xeyMylDJLaWe0yCteqZJghc6sEXLYwoLPbTtnoa7761JVR_XEbm2Fj20IX142L2mGzU39vuNwLVVw0bDiSwICFelQZhxO63sG9N3GCo8Xx8wHY6gPEDj8c/w640-h544/AI_Studio_Play_v3.gif" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Publish the app to an internal test track in Google Play&lt;/i&gt;&lt;/div&gt;

    &lt;br /&gt;&lt;div style="line-height: 1.5;"&gt;&lt;b&gt;Seamless app development handoff&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;As you iterate on your app in AI Studio, you may find you need more advanced Android tools or support for a wider variety of Android device types. To move beyond the browser, you can seamlessly hand off your project to &lt;a href="https://developer.android.com/studio"&gt;Android Studio&lt;/a&gt; by downloading a ZIP file or exporting it directly to GitHub.&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNTwSv8o6QwB9QYZS_OezD7WhWQZiShTEu5aJz6_oGUfOu-2RQWmANs0jgeC1G1jrsZauVbeWzLHkjoZa_Ai_cjKvgbB_-Qzqh8-obzcNf9zKTJSG4AfvXTogb0xsCxcHRS4P-LHFKk1pm8sTdDjIn8A5b9vX8GRRvHrCvN9_xoPm6hPzN1rct5Aph3Zc/w640-h206/AI_Studio_Download.png" /&gt;&lt;/div&gt;&lt;div style="line-height: 1.5; text-align: center;"&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;Download zip file of Android app project files&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="line-height: 1.5; text-align: center;"&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;When transitioning to a team environment or local development, you can leverage any IDE or agent you prefer. For a specialized experience, we recommend &lt;a href="https://developer.android.com/gemini-in-android"&gt;Gemini in Android Studio&lt;/a&gt;, which features models designed with Android in mind, or Antigravity, which integrates &lt;a href="https://developer.android.com/tools/agents/android-cli"&gt;Android CLI&lt;/a&gt; commands into Google’s agentic development platform. This workflow makes building high-quality apps more accessible while giving you total flexibility in how you use AI to scale your project.&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;&lt;h2 style="text-align: left;"&gt;Start building today&lt;/h2&gt;&lt;div style="line-height: 1.5;"&gt;To ensure a safe, high-quality ecosystem from day one, we have focused our initial release on specific capabilities including:&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;Personal utilities and simple social apps: &lt;/b&gt;You can rapidly prototype single or multi-screen apps, such as habit trackers, study quizzes, or event itineraries.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Hardware-enabled experiences:&lt;/b&gt; Because you are building native apps, you can leverage device features like the Camera, GPS/Location, Accelerometer and Bluetooth using the native Android APIs, letting you optimize hardware-level performance.&lt;/li&gt;&lt;li&gt;&lt;b&gt;AI-powered experiences: &lt;/b&gt;You can create apps that feature Gemini API integrations, seamlessly embedding powerful AI capabilities directly into your mobile experience.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h2 style="color: black;"&gt;&lt;span style="font-family: inherit;"&gt;What’s Next?&lt;/span&gt;&lt;/h2&gt;
    &lt;div style="line-height: 1.5;"&gt;We are moving fast to expand what’s possible for creators in AI Studio. Here is a sneak peek at what is coming soon:&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;Managing Google Play Test Tracks:&amp;nbsp;&lt;/b&gt;Coming soon, we will be adding the ability to invite testers to try your app directly from AI Studio.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Firebase integrations: &lt;/b&gt;Out-of-the-box support for Firestore, Firebase Auth, Firebase App Check and other tooling critical for Android developers is coming soon.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;Head over to &lt;a href="https://ai.dev/apps?features=build_android_app"&gt;Google AI Studio&lt;/a&gt; right now to start building. Here is some inspiration to get you started…&amp;nbsp;&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table border="1" style="border-collapse: collapse; color: black; font-family: sans-serif; margin-bottom: 20px; width: 100%;"&gt;
        &lt;tbody&gt;&lt;tr&gt;
            &lt;td colspan="2" style="padding: 10px;"&gt;Turn your Google Pixel Watch into an aviation assistant&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="padding: 10px; width: 60%;"&gt;
                &lt;strong&gt;Prompt:&lt;/strong&gt;&lt;br /&gt;
                &lt;div style="color: #555555;"&gt;Build a small airplane "6-pack" instrument app for Google Pixel Watch. The 6 instruments should include attitude indicator, airspeed indicator, altimeter, turn coordinator, vertical speed indicator, and heading indicator. Use the Google Pixel Watch's sensors to power the instruments and display them clearly. Display one instrument at a time on the display. Swiping to the left or right should cycle through the instruments.&lt;/div&gt;
            &lt;/td&gt;
            &lt;td style="padding: 10px; text-align: center; width: 40%;"&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRi7_vRI0TgaUYUE-g6kX-Gbg5Vf8ZVNY0H5n-2p8Ml32hyphenhyphenFvWAjp5re6AWpFKHLv1-rokBy_qfXexN61uQ9bpeDE_1DKfTrY3CkepiZMkNIEC5UlvBYng_OqersnyVS5Nu_zCuJJQ2w4NBaxWDC8duVnC0ILvWEpeg49N7aoJh1z6o_-BJHfBCnZKpz0/s320/wearOS_ai_studio.gif" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;&lt;/table&gt;

    &lt;br /&gt;&lt;table border="1" style="border-collapse: collapse; color: black; font-family: sans-serif; margin-bottom: 20px; width: 100%;"&gt;
        &lt;tbody&gt;&lt;tr&gt;
            &lt;td colspan="2" style="padding: 10px;"&gt;Interactive Harmonium app on Google Pixel Fold&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="padding: 10px; width: 60%;"&gt;
                &lt;strong&gt;Prompt:&lt;/strong&gt;&lt;br /&gt;
                &lt;div style="color: #555555;"&gt;Build a Harmonium app for Pixel Fold devices, which plays like the instrument based on the hinge angle and touch gestures. The app should simulate the bellows and reeds accurately.&lt;/div&gt;
            &lt;/td&gt;
            &lt;td style="padding: 10px; text-align: center; width: 40%;"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8hUGuJaj76omAAgO2RqZKZ_qGvgThfE0tKA-99BJ82G2UOw8h1qT5H7sM5C7n_k2tN5CD0LpJyOFor3HefsKarRPmWTo35ltnDihv2MsddEUcZN5t5fgeJWuJ60Y3XCEqqLhd7gkGyAbM6vnGau0PLE8BohPat8lQ-63fQLudrFUVRVpkFUJ9wMFX1oc/w179-h200/Tiny%20Harmonica%20demo.gif" /&gt;&lt;/div&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;&lt;/table&gt;

    &lt;br /&gt;&lt;table border="1" style="border-collapse: collapse; color: black; font-family: sans-serif; margin-bottom: 20px; width: 100%;"&gt;
        &lt;tbody&gt;&lt;tr&gt;
            &lt;td colspan="2" style="padding: 10px;"&gt;An Android app for guitarists to become better musicians by jamming to backing tracks&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td style="padding: 10px; width: 60%;"&gt;
                &lt;strong&gt;Prompt:&lt;/strong&gt;&lt;br /&gt;
                &lt;div&gt;&lt;div&gt;&lt;span style="color: #555555;"&gt;Build an Android guitar practice companion app that features a two-tab navigation system: 'Fretboard' and 'Library'.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #555555;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #555555;"&gt;The 'Fretboard' primary screen must contain an interactive guitar neck UI that visually maps out user-selected root notes, musical scales, and chords. Above the fretboard, implement a WebView-based YouTube player configured to play embedded videos inline. Additionally, include an AI generation feature that uses Retrofit to call Gemini Lyria 3 to create custom, 30-second backing tracks based on the user's currently selected key and scale. The generated audio files and their metadata must be saved locally using a database and displayed as a list in the 'Library' tab, where users can delete or play them.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #555555;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: #555555;"&gt;Finally, implement a persistent, globally visible mini audio player at the bottom of the screen, complete with play/pause toggles, a progress slider for seeking, and timestamp text, allowing the user to seamlessly practice on the fretboard tab while listening to their tracks.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #555555;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;
            &lt;/td&gt;
            &lt;td style="padding: 10px; text-align: center; width: 40%;"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2pWobL4G7-4deWwvMpRmtfHG1OuXyc_bHwq6fPszYT1Vztm4g_HaN28PVg6Hwd3_N2Qd82HS1QtpUGKCTUFiCuLBwMpcA-8sMC6dJtSDGKEVAaV1kxumYMZi3kTB9NnUIEf9xQPKyyfvKb8MZUyNGnYNAEHTxyHpWCEvN2xgQsj5X09LW_FHU1n0aJQg/w221-h400/guitar_app_AI_Studio.gif" /&gt;&lt;/div&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;&lt;/table&gt;

    We are looking forward to seeing what you build next!&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="line-height: 1.5;"&gt;Explore this announcement and all Google I/O 2026 updates on &lt;a href="https://io.google/2026/?utm_source=blogpost&amp;amp;utm_medium=pr&amp;amp;utm_campaign=devblogs&amp;amp;utm_content="&gt;io.google&lt;/a&gt;.&lt;/div&gt;</content><link href="http://android-developers.googleblog.com/feeds/164515295463367798/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/build-android-apps-google-ai-studio.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/164515295463367798" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/164515295463367798" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/build-android-apps-google-ai-studio.html" rel="alternate" title="Build native Android apps in Google AI Studio " type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd6QUmqCnkvDT9M0IoWA6y_752MRk01nHVQOa644yYkgoMGMDk8Dy6ow6X4SqFzzODP-a1kRaNcuF-1ZyR_lk5fTfdbuEMKDvuX4s7LFaGNuMswzvMCFoYeaQ3RLf2OZPYUWN5BsnqRIsmDub85hpYZNGY7AsaHCsHlfkxLqfqm0PozMhkyqK4i6WfgGM/s72-c/GoogleForDevelopers-AndroidCombo2-StrapiMetacard-2048x1323.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-6423852527013628226</id><published>2026-05-19T05:00:00.000-07:00</published><updated>2026-05-19T11:07:58.192-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Engage SDK"/><category scheme="http://www.blogger.com/atom/ns#" term="Gemini features"/><category scheme="http://www.blogger.com/atom/ns#" term="Guidance on how to declare support for pointer input"/><title type="text"> Increasing app discovery and engagement on Google TV</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQn4lINBGbNGjb1HQYUpv_Z0-JdltXyHegoQ-Ukl5l9K2ef4BSjX8c_yu0EWlnHSJnia8oXZYWvMtKxCP9t9PlJmI9GFIy34UDVfMBkEIaz3KJegu0j2TsivMZZPHg9tkIlsyK4NWd0vEq5v1MfQUay8zJ9-2QgLDLBlkqYVxnY7BaYa3QBTVRE3NKxxQ/s2048/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQn4lINBGbNGjb1HQYUpv_Z0-JdltXyHegoQ-Ukl5l9K2ef4BSjX8c_yu0EWlnHSJnia8oXZYWvMtKxCP9t9PlJmI9GFIy34UDVfMBkEIaz3KJegu0j2TsivMZZPHg9tkIlsyK4NWd0vEq5v1MfQUay8zJ9-2QgLDLBlkqYVxnY7BaYa3QBTVRE3NKxxQ/s2048/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" style="display: none;" /&gt;


&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;i&gt;Posted by Paul Lammertsma, Developer Relations Engineer&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUUiNUfVyqYWETmRLzZjld7Nbk0wpVVqMlxvLssfmOzHDfOKdKI8vZkXau3HMhjkOKcXpeJ-K-JkXiKTLk9tG2XH-O5xPlj-AVfQBnelPGhzkOJwhmFeB3NqVssPj4Cnq9r1ZkAHh-44z-dq71bQOpjIz_8d1VF1m2nYs6azBGxNBrM2GOXm6uGJymbKk/s4209/GoogleForDevelopers-AndroidText-Blogger-4209x1253.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUUiNUfVyqYWETmRLzZjld7Nbk0wpVVqMlxvLssfmOzHDfOKdKI8vZkXau3HMhjkOKcXpeJ-K-JkXiKTLk9tG2XH-O5xPlj-AVfQBnelPGhzkOJwhmFeB3NqVssPj4Cnq9r1ZkAHh-44z-dq71bQOpjIz_8d1VF1m2nYs6azBGxNBrM2GOXm6uGJymbKk/s16000/GoogleForDevelopers-AndroidText-Blogger-4209x1253.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;p dir="ltr" style="color: red; font-weight: bold; text-align: center;"&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p dir="ltr"&gt;
  With over 300 million monthly active devices across Google TV and Android TV, it’s clear that the living room is a massive, distinct platform for apps to accelerate growth. Today, we’re excited to share Google TV features and developer tools designed to increase the discoverability of your content and prepare your app for future TV experiences.
&lt;/p&gt;

&lt;h2 dir="ltr"&gt;Drive discovery and engagement with Gemini&lt;/h2&gt;

&lt;p dir="ltr"&gt;
  Last year, we brought our AI voice assistant, &lt;a href="https://blog.google/products-and-platforms/platforms/google-tv/gemini-google-tv/"&gt;Gemini&lt;/a&gt;, to our platform, so that people can easily find what to watch, learn something new on the big screen, and get everyday tasks done with just their voice.
&lt;/p&gt;

&lt;p dir="ltr"&gt;
  Since launch, we’ve made &lt;a href="https://blog.google/products-and-platforms/platforms/google-tv/new-gemini-features-march-2026/"&gt;improvements&lt;/a&gt; to how Gemini provides tailored responses to questions. Gemini shares a mix of visuals, videos, and text to help users find what they need, when they need it. For our streaming partners, Gemini is a helpful discovery engine—pulling from your app's metadata to surface your relevant content to viewers.
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN7u9KDZ7L8CIw5cVB_qdWf6PRcm86N8RsrlWPdEYsfwchPZwFBpMaajSqkPwXXAoBP0_v0GpQsWp4_gF_SsBC0DuZlN0qVystQ3fWmHs1qU6dKclljJaea-Phak7qEoGFiu_i3-dj0l7WmA7Tm7T2v8kERsfhKp6BCFs-7y7eSdxVWmFkpIzXYsceaJM/w640-h360/GTV%20Gemini%20-%20GOAT%20overview%20%5B10.8%20MB%5D.gif" /&gt;&lt;/div&gt;

&lt;h2 dir="ltr"&gt;Declare support for pointing modality&lt;/h2&gt;

&lt;p dir="ltr"&gt;
  The TV experience that we once knew is changing. Gemini is changing the way we discover and stream content with voice, but how we use the remote is evolving, too.
&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5hNXf8y8wwFxJAgZ0N4QwO5v6QUe7vn4Qy70-ndmo2iTye1qdhKP5WxKPJVwoPi0qdadX25BUJzxtLQZVAHXASOibVD0y3Xd_gFuOzp5GOIBwtXy_2jFa4lsTi4r1k6OzkTe5HyJGkOK-fNspRoo54mEA5IB8K4f0fVZ9UpgTWlringYByYxw3Bn_X1c/w640-h360/GTV%20Pointer%20Remote%20Demo_SHELL.gif" /&gt;&lt;/div&gt;

&lt;p dir="ltr"&gt;
  Pointer remotes bring motion-controlled input to the big screen, unlocking faster user navigation across the Google TV Home page and within content-heavy apps. To ensure your app is ready for this shift and provides a great experience for all users, now is the time to start thinking about pointing input. Here’s how to get started:
&lt;/p&gt;

&lt;h4 style="text-align: left;"&gt;&lt;span style="font-size: medium;"&gt;1. Adapt your TV app UI Library&lt;/span&gt;&lt;/h4&gt;
&lt;p dir="ltr"&gt;
  You’ll need support for hover states, scrollable containers, and cursor clicks to enable pointer remote interactions for your app on Google TV. While implementation varies by UI stack, Jetpack Compose streamlines this transition, as most core components handle these multi-modal interactions natively out of the box.
&lt;/p&gt;

&lt;ol type="a"&gt;
  &lt;li&gt;&lt;strong&gt;Hover state:&lt;/strong&gt; Every focusable element on your screen (buttons, movie posters, setting toggles) needs a clear visual feedback mechanism for a hover state. This is often subtler than a focus state but critical for feedback.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Scrollable containers:&lt;/strong&gt; Pointer remotes will also have a small circular touchpad for scrolling. Users can use this touchpad to scroll up or down, or left or right in your app. Your app will need to respond to touch events to scroll.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Cursor clicks:&lt;/strong&gt; Many TV apps today expect a simple D-pad OKAY button “click.” With a pointer remote, a user may “click” on an element that’s not the D-pad focus state, but is instead from a hovered state (similar to a mouse click).&lt;/li&gt;
&lt;/ol&gt;

&lt;h4 style="text-align: left;"&gt;&lt;span style="font-family: inherit; font-size: medium;"&gt;2. Test pointing interactions with a mouse today&lt;/span&gt;&lt;/h4&gt;
&lt;p dir="ltr"&gt;
  To see how your app handles hover, scroll, and clicks, simply connect a bluetooth mouse or wired mouse to your Google TV. Keep in mind that a mouse has more precise control, since users are closer to the screen and typically rest the mouse in a stable position. Pointer remotes can often be less precise, since users are sometimes 10 feet away from the screen, making rough gestures with the remote from their couch. As a TV designer or developer, you can mitigate this lack of input precision by having larger hover targets for elements.
&lt;/p&gt;

&lt;h4 style="text-align: left;"&gt;&lt;span style="font-size: medium;"&gt;3. Declare TV app support for pointer remotes on Google Play&lt;/span&gt;&lt;/h4&gt;
&lt;p dir="ltr"&gt;
  Finally, tell Google Play that your TV app is designed to work with a pointer. This ensures that users with pointer remotes will be able to easily find, install, and interact with your app.
&lt;/p&gt;

&lt;p dir="ltr"&gt;
  Within your AndroidManifest.xml, declare the meta-data tag, &lt;span style="color: #188038;"&gt;android.software.leanback.&lt;/span&gt;&lt;span style="color: #9900ff; font-weight: bold;"&gt;supports_touch&lt;/span&gt;. This tag informs the platform that your TV app “spatially supports touch,” since pointer remotes simulate touch events from a distance.
&lt;/p&gt;

&lt;p dir="ltr"&gt;&lt;strong&gt;&lt;em&gt;AndroidManifest.xml&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;pre style="background-color: #f3f3f3; border: 1pt solid rgb(217, 217, 217); overflow-x: auto; padding: 10px;"&gt;&amp;lt;manifest ...&amp;gt;
    &amp;lt;!-- Signal whether the app is adaptive or built just for TV --&amp;gt;
    &amp;lt;uses-feature android:name="android.software.leanback" android:required="true|false" /&amp;gt;

    &amp;lt;!-- Ensure the app can be installed on conventional TVs --&amp;gt;
    &amp;lt;uses-feature android:name="android.hardware.touchscreen" android:required="false" /&amp;gt;

    &amp;lt;!-- Signal whether the app supports pointer remotes --&amp;gt;
    &amp;lt;meta-data android:name="android.software.leanback.supports_touch" android:value="true|false"/&amp;gt;

    &amp;lt;application ...&amp;gt;
        ...
    &amp;lt;/application&amp;gt;
&amp;lt;/manifest&amp;gt;
&lt;/pre&gt;

&lt;p dir="ltr"&gt;&lt;strong&gt;Tips:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;
  &lt;li&gt;The &lt;span style="color: #188038;"&gt;android.&lt;strong&gt;software&lt;/strong&gt;.&lt;strong&gt;leanback&lt;/strong&gt;&lt;/span&gt; feature declaration indicates that your app supports D-pad navigation and is intended for distribution only on TV devices via Google Play.&lt;/li&gt;
  &lt;li&gt;The new software attribute of &lt;span style="color: #188038;"&gt;android.software.leanback.&lt;/span&gt;&lt;span style="color: #9900ff; font-weight: bold;"&gt;supports_touch&lt;/span&gt; declares that in addition to D-pad, you have ensured that your TV app works well for pointer/cursor experiences via mouse (of today) and pointer remotes (of future).&lt;/li&gt;
  &lt;li&gt;If you haven't already, now is the time to adopt &lt;a href="https://developer.android.com/compose"&gt;Jetpack Compose&lt;/a&gt;. Hover, scroll, and clicks are common input modalities that are supported on various form factors, and building your app with an adaptive UI framework enables code reusability and reduced maintenance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 dir="ltr"&gt;Onboard the Engage SDK&lt;/h2&gt;
&lt;p dir="ltr"&gt;
  The Engage SDK, formerly known as the Video Discovery API, optimizes Resumption, Entitlements, and Recommendations across all Google TV form factors to boost app discovery and engagement.
&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Resumption:&lt;/strong&gt; Partners can easily display a user's paused video within the 'Continue Watching' row from the Home page.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Entitlements:&lt;/strong&gt; The Engage SDK streamlines entitlement management, which matches app content to user eligibility. Users appreciate this because they can enjoy personalized recommendations without needing to manually update all their subscription details. This allows partners to connect with users across multiple discovery points on Google TV.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Recommendations:&lt;/strong&gt; The Engage SDK even highlights personalized recommendations based on content that users watched inside apps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p dir="ltr"&gt;
  It’s a great time to start onboarding the Engage SDK now, since the legacy Watch Next API, which has been powering your continue watching 1.0 experience, will lose support in the 2nd half of 2027. To get started, head to &lt;a href="https://goo.gle/engage-tv"&gt;goo.gle/engage-tv&lt;/a&gt; to learn more.
&lt;/p&gt;

&lt;p dir="ltr"&gt;
  We're excited to see how our latest Gemini experience and developer tools will optimize your discovery and drive user engagement on our platform.
&lt;/p&gt;Explore this announcement and all Google I/O 2026 updates on &lt;a href="https://io.google/2026/?utm_source=blogpost&amp;amp;utm_medium=pr&amp;amp;utm_campaign=devblogs&amp;amp;utm_content="&gt;io.google&lt;/a&gt;.&lt;/div&gt;</content><link href="http://android-developers.googleblog.com/feeds/6423852527013628226/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/increase-google-tv-app-discovery.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/6423852527013628226" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/6423852527013628226" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/increase-google-tv-app-discovery.html" rel="alternate" title=" Increasing app discovery and engagement on Google TV" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQn4lINBGbNGjb1HQYUpv_Z0-JdltXyHegoQ-Ukl5l9K2ef4BSjX8c_yu0EWlnHSJnia8oXZYWvMtKxCP9t9PlJmI9GFIy34UDVfMBkEIaz3KJegu0j2TsivMZZPHg9tkIlsyK4NWd0vEq5v1MfQUay8zJ9-2QgLDLBlkqYVxnY7BaYa3QBTVRE3NKxxQ/s72-c/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-7947913907519760349</id><published>2026-05-19T04:45:00.000-07:00</published><updated>2026-05-19T11:07:45.463-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android CLI"/><category scheme="http://www.blogger.com/atom/ns#" term="Android skills"/><category scheme="http://www.blogger.com/atom/ns#" term="Stable 1.0"/><title type="text">Android CLI Now Stable 1.0: Accelerate developing for Android using any agent</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVLU7gkfsf4axphzvtOKcqEkI3MLKZqX6Y9jGVReW6Ximz61c8klVVc0_Xs5Fw_aqk5yjl3K-Mit6cyKq0SLOJbUhUZ7R3dZZcwShqn5jYp-DuHY8hNoBWHJkicoIJ9DKRINQt6seAB3s2mcwANFYX9k0scYyCgfIYQrof7ImxOvzEW7BNj0ZPwEGB5FI/s2048/GoogleForDevelopers-AndroidCombo3-StrapiMetacard-2048x1323%20(1).png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVLU7gkfsf4axphzvtOKcqEkI3MLKZqX6Y9jGVReW6Ximz61c8klVVc0_Xs5Fw_aqk5yjl3K-Mit6cyKq0SLOJbUhUZ7R3dZZcwShqn5jYp-DuHY8hNoBWHJkicoIJ9DKRINQt6seAB3s2mcwANFYX9k0scYyCgfIYQrof7ImxOvzEW7BNj0ZPwEGB5FI/s2048/GoogleForDevelopers-AndroidCombo3-StrapiMetacard-2048x1323%20(1).png" style="display: none;" /&gt;





&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;i&gt;Posted by Simona Milanovic and Ben Trengrove, Developer Relations Engineers&lt;/i&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-DNQCYynOZTPwB7Two8HSejPtcinJWir0-t4Wseo9MFHwLNeluQqIbf-9XDJXcSTaHBoX7NJ6oTFRUczPaokekC-oFEFgdZwxngaskLaxyqCGy5-ZbT0QAnmRafTvx3PKPaMo-npHZuwUAi84AW-28rWw6_2BTWHnXoXqbSrX6Kboz0fy5lz9YogDFf0/s4209/GoogleForDevelopers-AndroidCombo3-Blogger-4209x1253.png" style="clear: left; display: inline; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-DNQCYynOZTPwB7Two8HSejPtcinJWir0-t4Wseo9MFHwLNeluQqIbf-9XDJXcSTaHBoX7NJ6oTFRUczPaokekC-oFEFgdZwxngaskLaxyqCGy5-ZbT0QAnmRafTvx3PKPaMo-npHZuwUAi84AW-28rWw6_2BTWHnXoXqbSrX6Kboz0fy5lz9YogDFf0/s16000/GoogleForDevelopers-AndroidCombo3-Blogger-4209x1253.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;
As Android developers, you have many choices when it comes to the agents, tools, command-line interfaces (CLI), and LLMs you use for app development. Whether you use Gemini in Android Studio,  Antigravity 2.0, Antigravity CLI, or third-party agents like Anthropic's Claude Code or OpenAI'sCodex, our mission remains the same: to ensure that high-quality Android development is possible everywhere.

  &lt;p style="text-align: center;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
    &lt;div style="height: 0px; max-width: 100%; overflow: hidden; padding-bottom: 56.25%; position: relative;"&gt;
        &lt;iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/aqmpZocmR8o?autoplay=1&amp;amp;mute=1&amp;amp;loop=1&amp;amp;playlist=aqmpZocmR8o&amp;amp;modestbranding=1&amp;amp;rel=0" style="border: 0; height: 100%; left: 0; position: absolute; top: 0; width: 100%;" width="320" youtube-src-id="aqmpZocmR8o"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;

  &lt;p&gt;At &lt;b&gt;Google I/O ‘26&lt;/b&gt;, we shared the latest leaps forward in agentic development, and showcased some of the newest capabilities of &lt;a href="https://developer.android.com/tools/agents/android-cli"&gt;Android CLI&lt;/a&gt;—now stable at version 1.0 and ready for all Android developers to use. From new skills to enabling agent access to powerful Android Studio capabilities, we’re giving your agents the right tools to build alongside you.&lt;/p&gt;

  &lt;div style="text-align: left;"&gt;If you’re already using Android CLI and want to jump into using all the new features, just run &lt;span style="font-family: inherit;"&gt;&lt;code&gt;android update&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/span&gt;. Otherwise, read further to learn more about how we’re making the agents you choose be better at building for Android.&lt;/div&gt;

  &lt;h3&gt;Android development unlocked for Antigravity&lt;/h3&gt;
  &lt;p&gt;&lt;a href="https://antigravity.google/"&gt;Google Antigravity&lt;/a&gt; now includes an optional bundle of Android resources—including the Android CLI and skills—that you can install. You can either install the bundle during onboarding after installation, or later from the &lt;b&gt;Settings &amp;gt; Customizations &amp;gt; Build With Google Plugins&lt;/b&gt; menu.&lt;/p&gt;&lt;p&gt;This provides Antigravity with all the powerful tools and knowledge of Android CLI, enabling it to perform the core tasks necessary for Android app development more easily and efficiently—from creating projects to deploying your app on a new Android virtual device.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivI2fhgZRJRpz8TXcX4OC2CALzgOfHhKyVmVG0IaMsibqaAUVbZORx-5fbVrYUKlp0Fl1qk1wZ02jbrYSfFGRCtOvnOzWWYdw8G3or9ul_QY2yvT6Wm-kEIjAJtfj75kNWlSswAqoUCLvSefnFY3JMw7NQOA8hkDn3nc232oyEK1VN5ZM_UHbAEJWolWE/s16000/agy-android-cli%20(1).png" /&gt;&lt;/div&gt;&lt;i&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;You can now easily install Android CLI for use with Google Antigravity 2.0.&lt;/i&gt;&lt;/div&gt;&lt;/i&gt;&lt;h3 style="text-align: left;"&gt;Unlocking Android Studio capabilities for any agent&lt;/h3&gt;&lt;p&gt;Android CLI provides a lightweight interface for AI Agents to perform tasks and retrieve knowledge about Android development. However, there's benefits to specialization — Android Studio contains over a decade of Android expertise, built to handle even the most complex Android projects. This includes Android Studio's powerful static analysis engine, refactoring tools, dependency management, UI design and rendering libraries, and more. AI Agents can now tap into Android Studio's tools to gain many of these same capabilities.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRp6RfqiD9adFdIQS9Fm_a3p_5X6K5Fjo5rEQhOeOqFpvjlQ-04DHav5atkLF7IZvnpdMaQqG_oBAhmcvCPRtAvsW7AH0Q3VF18y-TBUITLXBglNbR2o99sC-hJgj_D-OhF51rLO_OYi1RXdm6GBfgZqfsTdQa1CY6_g10D2LwLun3S1CjfqOY2pqp02Y/s16000/agy-android-studio%20(1).png" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Your agents can now use Android CLI to access powerful capabilities of Android Studio.&lt;/i&gt;&lt;/div&gt;&lt;p&gt;The latest version of Android CLI introduces the new &lt;code&gt;android studio&lt;/code&gt; command. This enables the agent of your choice to leverage the deep, contextual capabilities of Android Studio to better understand and perform actions on an open Android project. By running Android Studio alongside your preferred agent with Android CLI, your agent’s tasks can more efficiently navigate the codebase to produce more precise code changes. And, when you use Android CLI to create and iterate on your project, transitioning to Android Studio is much easier, so that you can use the purpose built tools—such as, performance profilers, Compose Previews, and Android Device Streaming—to get that production-grade polish.&lt;/p&gt;

  &lt;p&gt;When you have a project open in the latest &lt;a href="https://developer.android.com/studio/preview"&gt;preview version&lt;/a&gt; of Android Studio Quail, you (or your agent) can run the following command to check whether Android CLI has a connection established with your open project:&lt;/p&gt;

&lt;pre&gt;&lt;span id="docs-internal-guid-dae0cd34-7fff-1f39-ceb6-adffcef2b792"&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;$ android studio check&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;pid: &lt;/span&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;32942&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;version: &lt;/span&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;Android Studio&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;Projects:&lt;/span&gt;&lt;/p&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;READY&lt;/span&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; &amp;nbsp; &amp;nbsp; JetSet /Users/adarshf/AndroidStudioProjects/jetset-main&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;p&gt;From there, the agents can use the &lt;code&gt;android studio&lt;/code&gt; command to access powerful IDE tools to interact with projects more efficiently. Key commands include:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;analyze-file:&lt;/b&gt; Analyzes a file for errors and warnings using the editor's built-in inspections.&lt;/li&gt;&lt;li&gt;&lt;b&gt;find-declaration:&lt;/b&gt; Finds the exact definition site of a symbol (class, method, variable, field, constant, or Android resource/color) across the project using semantic resolution.&lt;/li&gt;&lt;li&gt;&lt;b&gt;find-usages: &lt;/b&gt;Finds all references and declarations of a symbol (class, method, variable, or Android resource) across the entire project using semantic analysis.&lt;/li&gt;&lt;li&gt;&lt;b&gt;render-compose-preview: &lt;/b&gt;Renders a Jetpack Compose UI Preview and returns a path to the image and UI hierarchy if successful.&lt;/li&gt;&lt;li&gt;&lt;b&gt;version-lookup:&lt;/b&gt; Get the latest information about which versions for specified app dependencies are available in common repositories, such as the Google Maven repository. By providing a programmatic solution, dependency management is less tedious and much less prone to flakiness.&lt;/li&gt;&lt;li&gt;&lt;b&gt;open-file: &lt;/b&gt;Opens a file directly in Android Studio. This is useful if the agent wants to direct your attention to view Compose Previews, performance traces, or other specific files in the IDE.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;
  &lt;/ul&gt;

  &lt;p&gt;For example, agents can now run the following commands to render a Compose preview for a new layout for your Android app, and then open the previews in Android Studio for you to take advantage of seeing multiple Compose Previews side by side and make AI-assisted edits right from the IDE.&lt;/p&gt;

&lt;pre&gt;&lt;span id="docs-internal-guid-e7668cd3-7fff-aabf-baa3-bfe1ea7196b7"&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;$ android studio &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;find-declaration&lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; HotelDetailScreen&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;$ android studio &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;analyze-file&lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; .../JetPacker/feature/detail/src/main/java/com/example/jetset/feature/detail/HotelDetailScreen.kt&lt;/span&gt;&lt;/p&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;$ android studio &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;open-file&lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; feature/detail/src/main/java/com/example/jetset/feature/detail/HotelDetailScreen.kt&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;p&gt;To learn more about how to use these commands, run &lt;code&gt;android help&lt;/code&gt;. And, to make sure your agents understand how to work with this tool, make sure to update the Android CLI skill by running &lt;code&gt;android init&lt;/code&gt;.&lt;/p&gt;

  &lt;h3&gt;More ways to get started&lt;/h3&gt;
  &lt;p&gt;To make integrating Android CLI into your environments as seamless as possible, we’re making it available in more ways. You can now download and install Android CLI using more package managers: apt-get, winget, and homebrew. For example, you can run the following to install Android CLI using winget:&lt;/p&gt;

  &lt;pre&gt;winget install -e --id Google.AndroidCLI&lt;/pre&gt;

  &lt;p&gt;We’ve also updated the installation to a user-local directory, by default. You can find the commands for all supported operating systems plus additional download options on the &lt;a href="https://developer.android.com/tools/agents/android-cli/archive"&gt;Android CLI page&lt;/a&gt;.&lt;/p&gt;

  &lt;h3&gt;Support for Journeys&lt;/h3&gt;
  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEip7lO5BVjTIeJXDWyrGOdl4KpPTo8_oEcf0qLFUBRfPgOazlG7C9eLWDLdnNYb68-rlon4uOE4qo62WC_U7SaAOYwLG3Vbr0v_lRsh-iNoPzVMmFbAgKXXN1hz9Qj7rMImyybqHCU34ryMlml2fCquAyfNgp1yWiZu-CsP1Jowx4o0z69_wkNtYR0GQIM/s16000/android-cli-write-journey.png" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Journeys are natural language descriptions of core user experiences.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" data-original-height="576" data-original-width="960" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeAW4kjqfV1t_mAw_iYwgWSczw3q-h3VEOAuDAe12uBel0niX6M2KAoGrs6M2UHhT3t1GvBZs-c3w0R87W6HgCAzHQZOdFjixUHyYCZRzhOgB_RtOkVh0Ph8cDFki0sWI8i5CFNXxGxBHai0uh0RZw5E9kcJUvl8DJtPT3tnkaQm5r8UHuWMstopnTnnI/s16000/android-cli-journey-run.gif" /&gt;&lt;/div&gt;&lt;p style="text-align: center;"&gt;&lt;i&gt;(sped up) An agent running a Journey it generated for an app.&lt;/i&gt;&lt;/p&gt;Agents can run these journeys using the Android CLI to navigate your app exactly like a user would. This unlocks entirely new ways to test, validate, or collect data across the critical experiences of your app, all driven by natural language and executed by your agent.
  
  &lt;h3&gt;Expanding Android skills&lt;/h3&gt;
  &lt;p&gt;To help models better understand and execute specific patterns that follow our best practices, we are continuing to expand our &lt;a href="https://github.com/android/skills"&gt;library of Android skills&lt;/a&gt;. We’re shipping new skills that make Android development everywhere more capable, efficient, and productive:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;Display Glasses and Jetpack Compose Glimmer for XR: &lt;/b&gt;Provides guidelines for developing projected applications for Android Display Glasses using the Jetpack Compose Glimmer UI toolkit.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Migration to CameraX:&lt;/b&gt; Helps you migrate legacy Android camera implementations (Camera1 or raw Camera2 APIs) to CameraX.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Perfetto SQL:&lt;/b&gt; Translates natural language data prompts into Perfetto SQL queries and executes them against a local trace file.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Adaptive UI:&lt;/b&gt; Instructions to make or update an app's UI so that it adapts to different Android devices&lt;/li&gt;&lt;li&gt;&lt;b&gt;Testing setup: &lt;/b&gt;Creates a basic testing strategy.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Styles:&lt;/b&gt; Helps with adoption of the new Jetpack Compose Style API for new components, and supports migration to Styles API.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;b&gt;AppFunctions: &lt;/b&gt;Analyzes Android codebases to recommend and implement new AppFunctions, and refines KDoc documentation for Model Context Protocol optimization.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;You can add these new skills to your workflow directly from the command line. To help your agents understand and use Android CLI right away, you can initialize your environment and install the base android-cli skill by running:&lt;/p&gt;
&lt;pre&gt;android init
&lt;/pre&gt;
  &lt;p&gt;From there, you can browse and set up your agent workflow by searching for the exact capabilities your agent needs:&lt;/p&gt;
&lt;pre&gt;android skills list
&lt;/pre&gt;
  &lt;p&gt;Once you've found the right skill, install it to your environment by running:&lt;/p&gt;
&lt;pre&gt;android skills add –skill=&amp;lt;skill-name&amp;gt;
&lt;/pre&gt;
  
  &lt;h3&gt;Get started today&lt;/h3&gt;
  &lt;p&gt;To download the stable 1.0 release of the Android CLI, explore the new tools, and browse the complete documentation, head over to &lt;a href="https://d.android.com/tools/agents"&gt;d.android.com/tools/agents&lt;/a&gt; today!&amp;nbsp; Also, make sure you update to the &lt;a href="https://developer.android.com/studio/preview"&gt;latest preview version of Android Studio&lt;/a&gt; to unlock the latest features that Android CLI offers. We can't wait to see what you build with Android CLI 1.0 and how these new features supercharge your daily workflows. Join our vibrant community on &lt;a href="https://www.linkedin.com/showcase/androiddev/posts/?feedView=all"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://medium.com/androiddevelopers"&gt;Medium&lt;/a&gt;, &lt;a href="https://www.youtube.com/c/AndroidDevelopers/videos"&gt;YouTube&lt;/a&gt;, or &lt;a href="https://twitter.com/androidstudio"&gt;X&lt;/a&gt; and&amp;nbsp; share your feedback.&lt;/p&gt;&lt;p&gt;Explore this announcement and all Google I/O 2026 updates on &lt;a href="https://io.google/2026/?utm_source=blogpost&amp;amp;utm_medium=pr&amp;amp;utm_campaign=devblogs&amp;amp;utm_content="&gt;io.google.&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link href="http://android-developers.googleblog.com/feeds/7947913907519760349/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/android-cli-stable-1-0-agent-development.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/7947913907519760349" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/7947913907519760349" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/android-cli-stable-1-0-agent-development.html" rel="alternate" title="Android CLI Now Stable 1.0: Accelerate developing for Android using any agent" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVLU7gkfsf4axphzvtOKcqEkI3MLKZqX6Y9jGVReW6Ximz61c8klVVc0_Xs5Fw_aqk5yjl3K-Mit6cyKq0SLOJbUhUZ7R3dZZcwShqn5jYp-DuHY8hNoBWHJkicoIJ9DKRINQt6seAB3s2mcwANFYX9k0scYyCgfIYQrof7ImxOvzEW7BNj0ZPwEGB5FI/s72-c/GoogleForDevelopers-AndroidCombo3-StrapiMetacard-2048x1323%20(1).png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-9087147301757384136</id><published>2026-05-19T04:15:00.000-07:00</published><updated>2026-05-19T11:14:13.068-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI glasses"/><category scheme="http://www.blogger.com/atom/ns#" term="Programs"/><category scheme="http://www.blogger.com/atom/ns#" term="Wired XR glasses"/><category scheme="http://www.blogger.com/atom/ns#" term="XR"/><title type="text">Build for the future with the Android XR Developer Catalyst Program — Apply now!</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY7FqaPopxHI3Dq1hBDIMB81rZ59f1qF4MjvryAoYitMFpbQNgi6PElj8QSUNHHIZSmv1aX4Dt-UMAmoGtmowcpd4gf-TWNdKEPk_eeCErg7O5X3GwIKw4GZ4x06iJERPYHik0QPuO50LiMyiLxzCVgm-gFUJfUBAjFqRlrUnJgNV7NwnYZYyrr7_t0M0/s2048/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY7FqaPopxHI3Dq1hBDIMB81rZ59f1qF4MjvryAoYitMFpbQNgi6PElj8QSUNHHIZSmv1aX4Dt-UMAmoGtmowcpd4gf-TWNdKEPk_eeCErg7O5X3GwIKw4GZ4x06iJERPYHik0QPuO50LiMyiLxzCVgm-gFUJfUBAjFqRlrUnJgNV7NwnYZYyrr7_t0M0/s2048/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" style="display: none;" /&gt;




&lt;div class="separator" style="clear: both; text-align: left;"&gt;Posted by Android XR Team&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK-8uaBuG-Xdug5wfik0xw8C-Nhyphenhyphenj5-Z7tHoQjxeFwH-5qqg2OB2DSGMHgHFd_372Fx_tREZxL51mDBFJEGMpc5eH9bH-7461bXKEXZgefVhPAmAU8Ehvk8_zpnkhODFFI51tyrJMnoudf3a6b9sCfEqcJoZ-idYpBVVUet8Ehc2gUR30R2D8ADSS-RdE/s4209/GoogleForDevelopers-AndroidText-Blogger-4209x1253.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK-8uaBuG-Xdug5wfik0xw8C-Nhyphenhyphenj5-Z7tHoQjxeFwH-5qqg2OB2DSGMHgHFd_372Fx_tREZxL51mDBFJEGMpc5eH9bH-7461bXKEXZgefVhPAmAU8Ehvk8_zpnkhODFFI51tyrJMnoudf3a6b9sCfEqcJoZ-idYpBVVUet8Ehc2gUR30R2D8ADSS-RdE/s16000/GoogleForDevelopers-AndroidText-Blogger-4209x1253.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;p dir="ltr"&gt;The Android XR ecosystem is expanding, and we’re committed to supporting developers who will build its next great experiences. Today, we’re opening applications for the &lt;a href="http://developer.android.com/develop/xr/catalyst"&gt;Android XR Developer Catalyst Program&lt;/a&gt;, a dedicated initiative to accelerate the development of Android XR apps ready to launch within the next year.&lt;/p&gt;
  
  &lt;p dir="ltr"&gt;This program is designed to provide the resources, hardware, and grants to help you build and scale innovative experiences across &lt;a href="https://developer.android.com/develop/xr/devices#xr-glasses"&gt;wired XR glasses&lt;/a&gt;, like &lt;a href="https://www.xreal.com/us/aura"&gt;XREAL’s Project Aura&lt;/a&gt;, and &lt;a href="https://developer.android.com/develop/xr/devices#audio-display"&gt;intelligent eyewear&lt;/a&gt;&amp;nbsp;(audio and display glasses). We are especially interested in seeing innovative experiences across media, gaming, productivity, and health, but we welcome any unique use case that helps users expand what's possible.&lt;/p&gt;
  
  &lt;h3 dir="ltr"&gt;Why join the catalyst program?&lt;/h3&gt;
  
  &lt;p dir="ltr"&gt;We want to help developers navigate common barriers to entry for XR development by providing:&lt;/p&gt;
  
  &lt;ul&gt;
    &lt;li dir="ltr"&gt;
      &lt;p dir="ltr"&gt;&lt;strong&gt;Development Kits:&lt;/strong&gt; Get early access to hardware development kits for wired XR glasses (XREAL’s Project Aura) and / or intelligent eyewear (audio and display glasses).&lt;/p&gt;
    &lt;/li&gt;
    &lt;li dir="ltr"&gt;
      &lt;p dir="ltr"&gt;&lt;strong&gt;Technical support:&lt;/strong&gt; Gain access to specialized technical resources and support forums specifically designed to help you prepare your app for Google Play.&lt;/p&gt;
    &lt;/li&gt;
    &lt;li dir="ltr"&gt;
      &lt;p dir="ltr"&gt;&lt;strong&gt;Grant Opportunities:&lt;/strong&gt; Submit a request and you may be eligible to receive a non-recoupable grant to accelerate your development.&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ul&gt;
  
  &lt;h3 dir="ltr"&gt;Ready to start building?&lt;/h3&gt;
  
  &lt;p dir="ltr"&gt;Applications are open to developers looking to publish apps for the Android XR ecosystem in the next 6-12 months. You can build with Kotlin and the &lt;a href="https://developer.android.com/develop/xr/jetpack-xr-sdk"&gt;Jetpack XR SDK&lt;/a&gt;, or with &lt;a href="https://developer.android.com/develop/xr/unity"&gt;Unity&lt;/a&gt;, &lt;a href="https://developer.android.com/develop/xr/unreal"&gt;Unreal Engine&lt;/a&gt; or &lt;a href="https://developer.android.com/develop/xr/godot"&gt;Godot&lt;/a&gt;. If you need a spark of inspiration, you can check out existing XR &lt;a href="https://developer.android.com/develop/xr/experiments"&gt;Experiments&lt;/a&gt; and &lt;a href="https://developer.android.com/develop/xr/samples"&gt;Samples&lt;/a&gt; to see how you can use the SDK for everything from spatial music to navigation.&lt;/p&gt;
  
  &lt;p dir="ltr"&gt;Once you have your concept ready, be sure to &lt;a href="http://developer.android.com/develop/xr/catalyst"&gt;submit your application&lt;/a&gt; by June 30th by 11:59PM PDT. We can’t wait to see what you build.&lt;/p&gt;
  
  &lt;p dir="ltr"&gt;&lt;strong&gt;&lt;a href="http://developer.android.com/develop/xr/catalyst"&gt;Start Your Application&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;Explore this announcement and all Google I/O 2026 updates on&amp;nbsp;&lt;span style="display: none;"&gt;&lt;/span&gt;&lt;a href="https://io.google/2026/?utm_source=blogpost&amp;amp;utm_medium=pr&amp;amp;utm_campaign=devblogs&amp;amp;utm_content=" rel="noopener nofollow noreferrer" target="_blank"&gt;io.google&lt;span style="display: none;"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;</content><link href="http://android-developers.googleblog.com/feeds/9087147301757384136/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/apply-android-xr-developer-catalyst.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/9087147301757384136" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/9087147301757384136" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/apply-android-xr-developer-catalyst.html" rel="alternate" title="Build for the future with the Android XR Developer Catalyst Program — Apply now!" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY7FqaPopxHI3Dq1hBDIMB81rZ59f1qF4MjvryAoYitMFpbQNgi6PElj8QSUNHHIZSmv1aX4Dt-UMAmoGtmowcpd4gf-TWNdKEPk_eeCErg7O5X3GwIKw4GZ4x06iJERPYHik0QPuO50LiMyiLxzCVgm-gFUJfUBAjFqRlrUnJgNV7NwnYZYyrr7_t0M0/s72-c/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-9025839999570284602</id><published>2026-05-19T04:00:00.000-07:00</published><updated>2026-05-19T11:07:17.914-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Adaptive development"/><title type="text">Adaptive development for the expanding Android ecosystem</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdDsacfyGtp3onpFDB8MfwDNaY70RiTJpN0e_M0NK9W7au1Ex8ghyphenhyphenGNrIq0sqqc1eb-g2fUPUYL1sS7Fhk5r7GTDZm3p-3gRDulDyPa0RqLcDXk6uV3TjBpLMDU5RMnvySqazjwL-8dKrrjkfqkgM_ODlmZVgGNnX5e067nNgWL146AHbsejj6KtLrtIs/s2048/GoogleForDevelopers-ComboIO-StrapiMetacard-2048x1323%20(1).png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdDsacfyGtp3onpFDB8MfwDNaY70RiTJpN0e_M0NK9W7au1Ex8ghyphenhyphenGNrIq0sqqc1eb-g2fUPUYL1sS7Fhk5r7GTDZm3p-3gRDulDyPa0RqLcDXk6uV3TjBpLMDU5RMnvySqazjwL-8dKrrjkfqkgM_ODlmZVgGNnX5e067nNgWL146AHbsejj6KtLrtIs/s2048/GoogleForDevelopers-ComboIO-StrapiMetacard-2048x1323%20(1).png" style="display: none;" /&gt;


&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;i&gt;Posted Fahd Imtiaz, Senior Product Manager, Adaptive Apps&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieeKKXz0dxJIT708pHha_v_9k68Z78o4aDP1ZXktjSjhOKOe64zs5x0iL07nab5_X2EYWLsxGYgVFu-SAS_U4BFkHUOudIj_GeIllKeNFiZys_5wFVh52UXvI2NPz1RmCvaIHsSqJCT0pd2-LhUFig1Xcn6n7Bl9nTb0P-jjpSXBkOR3fM5zzv_H8ljIM/s4209/GoogleForDevelopers-ComboIO-Blogger-4209x1253.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieeKKXz0dxJIT708pHha_v_9k68Z78o4aDP1ZXktjSjhOKOe64zs5x0iL07nab5_X2EYWLsxGYgVFu-SAS_U4BFkHUOudIj_GeIllKeNFiZys_5wFVh52UXvI2NPz1RmCvaIHsSqJCT0pd2-LhUFig1Xcn6n7Bl9nTb0P-jjpSXBkOR3fM5zzv_H8ljIM/s16000/GoogleForDevelopers-ComboIO-Blogger-4209x1253.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;div&gt;With the release of Android 17, we are transitioning into an &lt;a href="https://developer.android.com/adaptive-apps"&gt;adaptive first development&lt;/a&gt; standard. Your users no longer rely on a single form factor; they transition between phones, foldables, tablets, laptops, automotive displays, and immersive XR environments throughout their day.
  
  &lt;p dir="ltr"&gt;Now, with over &lt;strong&gt;580 million large screen devices&lt;/strong&gt; in the hands of users, adaptive is no longer just a technical goal. It’s a massive opportunity to reach highly engaged users. To thrive in this multi-device ecosystem, your app must be resilient, responsive, and ready for virtually any surface.&lt;/p&gt;

  &lt;h3 style="text-align: left;"&gt;The multi-device opportunity&lt;/h3&gt;&lt;p dir="ltr"&gt;The Android device universe is now a multi device reality. Users are buying into entire ecosystems, moving from handhelds to foldables, tablets, and cars. And the data is clear: users with multiple devices often spend more than users with only a phone.&lt;/p&gt;

  &lt;ul&gt;
    &lt;li dir="ltr"&gt;
      &lt;p dir="ltr"&gt;&lt;strong&gt;Drive higher revenue:&lt;/strong&gt; Multi-device users spend &lt;strong&gt;9x more&lt;/strong&gt; on average than phone only users. On foldables, that engagement multiplier can reach 14x. &lt;i&gt;(Source: Google Internal Data, 2026)&lt;/i&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li dir="ltr"&gt;
      &lt;p dir="ltr"&gt;&lt;strong&gt;Capture high-value segments:&lt;/strong&gt; Large-screen users (tablets, foldables, and Chromebooks) typically spend roughly &lt;strong&gt;5x more&lt;/strong&gt; than phone-only users.&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ul&gt;

  &lt;p dir="ltr"&gt;To help amplify your reach with these users, we've rolled out a new badge in Google Play. Apps meeting adaptive quality standards now earn an "Optimized for large screens" badge, making it easier for users to discover high quality experiences.&lt;/p&gt;

  &lt;p dir="ltr" style="text-align: center;"&gt;
    &lt;img src="https://blogger.googleusercontent.com/img/a/AVvXsEj8tcHEiqfZumSLdhBppKYl9Ue3umyMqjU5efDFWp0Tz2W6Ng_-gZQd8VHD6Vekv1MqR5W741NdcMOLS-Mdpe8LAYurPGl429pHRY99vTyAYWI2h6NZP4QCi8mT4_d7GJZcExwJFSQ2e7Iyyw_YS4t297I4eNyIIreH2tu0kgr2LxBPB1LyBDDMZ8pUJzQ" style="height: auto; max-width: 100%;" title="Frame 2134283034 (2).png" /&gt;
  &lt;/p&gt;

  &lt;h3 style="text-align: left;"&gt;Latest in adaptive Android development from Google I/O&lt;/h3&gt;&lt;p dir="ltr"&gt;Android 17, new Jetpack updates and advanced tools help you build apps that feel native across diverse surfaces, from pocket-sized foldables to &lt;a href="https://developer.android.com/googlebook"&gt;Googlebooks&lt;/a&gt;.&lt;/p&gt;

  &lt;b&gt;Adaptive by default: Android 17 updates&lt;/b&gt;
  
  &lt;p dir="ltr"&gt;In Android 16, we &lt;a href="https://android-developers.googleblog.com/2025/01/orientation-and-resizability-changes-in-android-16.html"&gt;introduced significant changes&lt;/a&gt; to orientation and resizability APIs to facilitate adaptive behavior, while providing a temporary opt-out to help you make the transition. Android 17 (API level 37) sets a new quality baseline by removing that developer opt-out for orientation and resizability restrictions on large screen devices (sw &amp;gt; 600 dp). When you target API level 37, your app must be capable of adapting to a variety of display sizes. This helps your app deliver an experience that matches the users’ expectations.&lt;/p&gt;

  &lt;p dir="ltr" style="text-align: center;"&gt;
    &lt;img alt="Apps that were previously letterboxed on large screen devices will now be stretched to landscape" src="https://blogger.googleusercontent.com/img/a/AVvXsEhpP-QNEuXvCQhSF7XX_HDsnbStMuQLxFNDrSd_k2mQB-cjs494xAMZg3yO6l3zCt6N9q34tekmQ7ILIa8JuKbI-QgkDm0XDfyuajeM2q32QtzieneZG7vedfQoythMS-Di9V0g3ung6BDTD3UPZMANMpifh5Vpwi049Uhqr-Gyx6D6gO6QUjtVd8MemlQ" style="height: auto; max-width: 100%;" /&gt;
  &lt;/p&gt;

  &lt;p dir="ltr"&gt;&lt;i&gt;Tip: You can start testing these behaviors by enabling the UNIVERSAL_RESIZABLE_BY_DEFAULT flag in App Compatibility Changes under Developer Options under SDK 36.&lt;/i&gt;&lt;/p&gt;

  &lt;b&gt;Your app on even more surfaces&lt;/b&gt;
  
  &lt;p dir="ltr"&gt;In addition to your mobile app running on large screens devices including foldables, tablets, Chromebooks and XR, we are also expanding the Android surface area for your mobile apps:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li dir="ltr"&gt;
      &lt;p dir="ltr"&gt;&lt;strong&gt;Connected Displays:&lt;/strong&gt; Now in stable as of Android 16 QPR3, Connected Displays support enables supported Pixel and Samsung mobile devices to transform into a desktop environment via external display support.&lt;/p&gt;
    &lt;/li&gt;
    &lt;li dir="ltr"&gt;
      &lt;p dir="ltr"&gt;&lt;strong&gt;Automotive &amp;amp; TV:&lt;/strong&gt; With the &lt;a href="https://developer.android.com/training/cars/car-ready-mobile-apps"&gt;Car Ready Mobile Apps program&lt;/a&gt; and enhanced &lt;a href="http://android-developers.googleblog.com/2026/05/increase-google-tv-app-discovery.html"&gt;pointer support for Android TV&lt;/a&gt;, your adaptive app can now benefit from engagement on the infotainment system and the living room with ease.&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ul&gt;

  &lt;p dir="ltr" style="text-align: center;"&gt;
    &lt;img src="https://blogger.googleusercontent.com/img/a/AVvXsEjKyoQ_8VV6z8raeEbcAx_imJtuRs6I7wKHkAhG7JieTpewDH1eoiPp6UIfSZSzdtsMbO9_UfSHhUOcK3vJBePxxoBzkwUwl0QaUQ9wFtZIfhtdVLwBlIzCzM8FzOqoZAyI0jEHmhj6esXqZICOQsT5SXZcG2kLL6DVFv1_hzz_F7xZ70eXsEZVEZGzeNc" style="height: auto; max-width: 100%;" /&gt;
  &lt;/p&gt;

  &lt;b&gt;Googlebook: Evolving desktop computing&lt;/b&gt;
  
  &lt;p dir="ltr"&gt;Talking about more surfaces, we’re evolving our work in the desktop space with Googlebook, the next generation of ChromeOS. Built with parts of the Android stack, we are enabling your apps to achieve a "laptop-class" feel with native level performance.&lt;/p&gt;

  &lt;p dir="ltr"&gt;Building with adaptive principles today helps ensure your app is ready for this new generation of high performance hardware.&lt;/p&gt;

  &lt;p dir="ltr"&gt;To help you prepare for this new generation of devices, we’ve released comprehensive new documentation including comprehensive &lt;a href="https://developer.android.com/design/ui/desktop"&gt;design guidance&lt;/a&gt; and &lt;a href="https://developer.android.com/docs/quality-guidelines/adaptive-app-quality/experiences/desktop"&gt;developer guidelines&lt;/a&gt;. Built on the principles of adaptive, these guidelines offer a playbook for transitioning your mobile apps to offer a premium desktop class experience.&lt;/p&gt;

  &lt;p dir="ltr"&gt;Try out the new Desktop Emulator, available now in the Android Studio Canary to get started today.&lt;/p&gt;

  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgdC6ILILt8u8MeVRwqEd137F8RbiSYJUgE68W7mrgRkm5T2biCFrSfsEA4yUu45yUqvy3MCw22r4lcxqwXe1KTnLzbFO0i7QyvYSstKAHObGzBT4cUmIIzYqIyV2lt45Cn1FCQ4KYl-QgOx0XH2fyFVOq8B_vVnvbLKnJ8AzXFEzaXAEcCFybdNHlGMI/w400-h400/google_aluminium_hype_film_hp_sh18019_main_design_v04_00068.png" /&gt;&lt;/div&gt;

  &lt;b&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;Building adaptive layouts with Jetpack Compose&lt;/b&gt;
  
  &lt;p dir="ltr"&gt;We are now &lt;a href="https://goo.gle/Compose_IO26"&gt;Compose first&lt;/a&gt; and Jetpack Compose is our recommended way to build modern, adaptive UIs to help you manage layout complexity efficiently.&lt;/p&gt;

  &lt;ul&gt;
    &lt;li dir="ltr"&gt;
      &lt;p dir="ltr"&gt;&lt;strong&gt;New layout primitives:&lt;/strong&gt; We’re introducing &lt;a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/grid"&gt;Grid&lt;/a&gt; and &lt;a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox"&gt;FlexBox&lt;/a&gt; layouts, bringing powerful, CSS-inspired capabilities to Compose for both 1D and 2D layouts.&lt;/p&gt;
    &lt;/li&gt;
    &lt;li dir="ltr"&gt;
      &lt;p dir="ltr"&gt;&lt;strong&gt;Navigation 3:&lt;/strong&gt; The &lt;a href="https://developer.android.com/jetpack/androidx/releases/navigation3"&gt;1.1 release&lt;/a&gt; for compose-navigation3 introduces &lt;a href="https://developer.android.com/guide/navigation/navigation-3/scenes/scene-decorators"&gt;Scene Decorators&lt;/a&gt;, allowing you to wrap your screens with other content, such as bars, rails and dialogs.&lt;/p&gt;
    &lt;/li&gt;
    &lt;li dir="ltr"&gt;
      &lt;p dir="ltr"&gt;&lt;strong&gt;MediaQuery API:&lt;/strong&gt; The new experimental &lt;a href="https://developer.android.com/reference/kotlin/androidx/compose/ui/mediaQuery.composable?hl=en"&gt;MediaQuery API&lt;/a&gt; provides observable device UI capabilities, such as window size and pointer precision, that allow you to adapt and optimize your app's UI for the current device configuration.&lt;/p&gt;
    &lt;/li&gt;
    &lt;li dir="ltr"&gt;
      &lt;p dir="ltr"&gt;&lt;strong&gt;Styles API:&lt;/strong&gt; Dynamically evolve the visual properties of your app using the new state-based experimental &lt;a href="https://developer.android.com/develop/ui/compose/styles"&gt;Styles API&lt;/a&gt;.&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ul&gt;

  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWrhxL-9SuZTgfd5LS2TeEU5NS_F0h4U_zzK59koOU-CenOLFpCrFs80-RHP1mC_qfAzLeqgYkgVhfOeZpMtNTAvivGR8DpYLL61oVsuhAjI-pTYrXw21pW2Ec8JAmG9vIwDks70XpSSv8wiJiGaK95PQ1Kn_kEdmUbW401-XAsLBEIDlG_k5c5BTtzU4/w640-h414/morph-to-tablet%20(1).gif" /&gt;&lt;/div&gt;

  &lt;b&gt;Beyond layouts: non-touch input&lt;/b&gt;
  
  &lt;p dir="ltr"&gt;Adaptive app quality goes beyond window dimensions, including handling non-touch input paradigms e.g. keyboard, trackpad, mouse, stylus that are primary input methods on large screens.&lt;/p&gt;

  &lt;ul&gt;
    &lt;li dir="ltr"&gt;
      &lt;p dir="ltr"&gt;&lt;strong&gt;Trackpad support:&lt;/strong&gt; &lt;a href="https://developer.android.com/blog/posts/whats-new-in-the-jetpack-compose-april-26-release"&gt;Compose 1.11&lt;/a&gt; now brings trackpad support on par with mouse, and provides new APIs to automate non-touch input testing including &lt;code&gt;TrackpadInjectionScope&lt;/code&gt; and &lt;code&gt;performTrackpadInput&lt;/code&gt;.&lt;/p&gt;
    &lt;/li&gt;
    &lt;li dir="ltr"&gt;
      &lt;p dir="ltr"&gt;&lt;strong&gt;Focus indicators:&lt;/strong&gt; Enhance accessibility with built-in support for standard focus rings in Compose.&lt;/p&gt;&lt;/li&gt;
  &lt;/ul&gt;

  &lt;b&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;AI-Powered developer tools&lt;/b&gt;
  
  &lt;p dir="ltr"&gt;Android Studio and &lt;a href="https://developer.android.com/tools/agents/android-cli"&gt;Android CLI&lt;/a&gt; are evolving to help you architect adaptive apps faster than ever.&lt;/p&gt;

  &lt;ul&gt;
    &lt;li dir="ltr"&gt;
      &lt;p dir="ltr"&gt;&lt;strong&gt;Android Skills:&lt;/strong&gt; These modular AI instructions are designed to assist any LLM through complex architectural tasks, including helping you with View-to-Compose migrations, implementing adaptive layouts, Navigation 2 to Navigation 3 transformation, and migrating off of legacy camera libraries to CameraX. Get started with these latest skills on the Android Skills &lt;a href="https://github.com/android/skills"&gt;Github repo&lt;/a&gt; and &lt;a href="https://developer.android.com/tools/agents/android-cli#skills-add"&gt;via Android CLI.&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li dir="ltr"&gt;
      &lt;p dir="ltr"&gt;&lt;strong&gt;New Project Agent:&lt;/strong&gt; Available in Android Studio Panda 2, this agent initializes new projects with adaptive best practices by default.&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ul&gt;

  &lt;br /&gt;

  &lt;p dir="ltr"&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK9P3KbiU-qqzVx45wLUsYxGySpAeBaEiaxH6fJawNowXhJd8jdcMvBQ-62ejoHOz9de-MAdCEsmISI4ntqUI8ANeZjm0TqFNu0bEKyBsCbrsdPhVwupTEVfMasvegiyDrz4hSH3cxte-EMIWY0lpxFfg9OBqLhImBLlmZ8jXa3VOwvbo7_TG9gRUXXf0/s16000/Copy%20of%20IO26_315_PKLS%20-%20Adaptive%20development%20for%20the%20expanding%20Android%20ecosystem%20-%20Deck%20(1).png" /&gt;&lt;/div&gt;For developers working with cross-platform frameworks, we continue to provide full support for Web, Qt, and Unity. Whether you are building from scratch or modernizing a legacy codebase, these tools are designed to meet your users exactly where they are.&lt;p&gt;&lt;/p&gt;

  &lt;p dir="ltr"&gt;We’re excited to see how you bring these new adaptive capabilities to your apps. By moving to an adaptive first approach, you’re not just reaching more users but you’re delivering the seamless, high quality experiences they expect across the entire Android device landscape.&lt;/p&gt;

  &lt;p dir="ltr"&gt;Get started with &lt;a href="https://developer.android.com/adaptive-apps"&gt;adaptive development&lt;/a&gt; and start shaping the future of your apps.&lt;/p&gt;&lt;p dir="ltr"&gt;Explore this announcement and all Google I/O 2026 updates on &lt;a href="https://io.google/2026/?utm_source=blogpost&amp;amp;utm_medium=pr&amp;amp;utm_campaign=devblogs&amp;amp;utm_content="&gt;io.google&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link href="http://android-developers.googleblog.com/feeds/9025839999570284602/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/android-adaptive-development-ecosystem.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/9025839999570284602" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/9025839999570284602" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/android-adaptive-development-ecosystem.html" rel="alternate" title="Adaptive development for the expanding Android ecosystem" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdDsacfyGtp3onpFDB8MfwDNaY70RiTJpN0e_M0NK9W7au1Ex8ghyphenhyphenGNrIq0sqqc1eb-g2fUPUYL1sS7Fhk5r7GTDZm3p-3gRDulDyPa0RqLcDXk6uV3TjBpLMDU5RMnvySqazjwL-8dKrrjkfqkgM_ODlmZVgGNnX5e067nNgWL146AHbsejj6KtLrtIs/s72-c/GoogleForDevelopers-ComboIO-StrapiMetacard-2048x1323%20(1).png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-6641411023540730343</id><published>2026-05-19T03:45:00.000-07:00</published><updated>2026-05-19T12:07:06.497-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android XR"/><category scheme="http://www.blogger.com/atom/ns#" term="Developer Preview 4"/><category scheme="http://www.blogger.com/atom/ns#" term="Google I/O 26"/><title type="text">Updates to the Android XR SDK: Introducing Developer Preview 4</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9qKZCLcJmsSe9qRHpaIOBfW0rlMCfVdFM_-_fwyfW5IlhU11azXpGtWNnrFnrylqm6cDN-gyXQ2A9Tj5WDTbHj_YJF7u024pWDhkn9Wwe47WTdkDIib-wyjMWRoSnbN-bB5zLJjizVAy5-NlFP_A61wTWggOvLZkQu1WxIZGeMsc0LtFOhzd7DkAiVvY/s2048/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9qKZCLcJmsSe9qRHpaIOBfW0rlMCfVdFM_-_fwyfW5IlhU11azXpGtWNnrFnrylqm6cDN-gyXQ2A9Tj5WDTbHj_YJF7u024pWDhkn9Wwe47WTdkDIib-wyjMWRoSnbN-bB5zLJjizVAy5-NlFP_A61wTWggOvLZkQu1WxIZGeMsc0LtFOhzd7DkAiVvY/s2048/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" style="display: none;" /&gt;



&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;i&gt;Posted by Stevan Silva, Group Product Manager and Amy Zeppenfeld, Developer Relations Engineer&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2c0ihA3gGLvIsVHFAW4TuJWUOmDEuotU6v7-9Jhcx4Soff-W_ZMTF35n046dcKu2NGjwBDA4R9n08g95W3e1TMfwoRrap0Y9agKZ7nbFO2dmwHoV7cSPopjngCnVajA-bS5XsDMeqaiGg1cfvAmQsSTfvxpx-ibR5DF3rnNIlBy9vE93UjjQMpGNVjhA/s4209/GoogleForDevelopers-AndroidText-Blogger-4209x1253.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2c0ihA3gGLvIsVHFAW4TuJWUOmDEuotU6v7-9Jhcx4Soff-W_ZMTF35n046dcKu2NGjwBDA4R9n08g95W3e1TMfwoRrap0Y9agKZ7nbFO2dmwHoV7cSPopjngCnVajA-bS5XsDMeqaiGg1cfvAmQsSTfvxpx-ibR5DF3rnNIlBy9vE93UjjQMpGNVjhA/s16000/GoogleForDevelopers-AndroidText-Blogger-4209x1253.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p dir="ltr"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;Today we're excited to launch Developer Preview 4 of the Android XR SDK, continuing our focus on unifying cross-device development for headsets, wired XR glasses, and &lt;a href="https://blog.google/products-and-platforms/platforms/android/android-xr-io-2026"&gt;intelligent eyewear&lt;/a&gt;. To keep our platform intuitive, we are adopting more descriptive naming for our form factors, where AI glasses are now audio glasses and display AI glasses are now display glasses, with these changes appearing in our documentation starting today.&lt;/p&gt;
  
  &lt;p dir="ltr"&gt;This release is packed with updates that help you build incredible experiences for XR devices, enable deeper immersive experiences on XR headsets, and streamline the path for creating augmented experiences on audio and display glasses. Also, our core libraries—including XR Runtime, Jetpack SceneCore, and ARCore for Jetpack XR— will be officially moving to Beta soon!&lt;/p&gt;
  
  &lt;p dir="ltr"&gt;To give you early access to hardware and resources for building immersive and augmented experiences on upcoming devices—like&amp;nbsp;display and audio glasses&amp;nbsp;and XREAL’s Project Aura — we’re announcing the &lt;a href="https://goo.gle/Catalyst_IO26"&gt;Android XR Developer Catalyst Program&lt;/a&gt;. Learn more and &lt;a href="http://g.co/dev/catalyst"&gt;start your application&lt;/a&gt; today.&lt;/p&gt;

  &lt;h3 style="text-align: left;"&gt;Building Augmented Experiences for Audio and Display Glasses&lt;/h3&gt;
  
  &lt;p dir="ltr"&gt;Starting out with our libraries for augmented experiences, Developer Preview 4 introduces new APIs that help you create and test your apps.&lt;/p&gt;

  &lt;b&gt;&lt;span style="font-size: medium;"&gt;Jetpack Projected: Device Availability and ProjectedTestRule APIs&lt;/span&gt;&lt;/b&gt;
  
  &lt;p dir="ltr"&gt;The Jetpack Projected library helps bridge app experiences from the phone to the user's field of view. We've added the &lt;a href="https://developer.android.com/develop/xr/jetpack-xr-sdk/ai-glasses/check-availability"&gt;Device Availability API&lt;/a&gt;, which consolidates wear state and connectivity signals into standard Android &lt;a href="https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle.State"&gt;Lifecycle.State&lt;/a&gt; values. This lets you adjust your applications behavior based on whether the device is worn.&lt;/p&gt;

  &lt;pre&gt;val xrDevice = XrDevice.getCurrentDevice(projectedContext)

// Observe the device lifecycle flow
xrDevice.getLifecycle().currentStateFlow
    .collect { state -&amp;gt;
        when (state) {
            Lifecycle.State.STARTED -&amp;gt; { /* Device is available (worn) */ }
            Lifecycle.State.CREATED -&amp;gt; { /* Device is unavailable (not worn) */ }
            Lifecycle.State.DESTROYED -&amp;gt; { /* Device is DISCONNECTED */ }
        }
    }
  &lt;/pre&gt;

  &lt;p dir="ltr"&gt;To simplify testing, the new &lt;code&gt;&lt;a href="https://developer.android.com/reference/kotlin/androidx/xr/projected/testing/ProjectedTestRule"&gt;ProjectedTestRule&lt;/a&gt;&lt;/code&gt; API in the &lt;code&gt;projected-testing&lt;/code&gt; artifact automates the setup of projected test environments. This helps you write clean, reliable unit tests without the boilerplate code.&lt;/p&gt;

  &lt;pre&gt;// from the 'androidx.xr.projected:projected-testing:1.0.0-alpha07' artifact
@get:Rule
val projectedTestRule = ProjectedTestRule()

@Test
fun testProjectedContextInitialization() {
    // by default, ProjectedTestRule automatically creates and connects
    // a projected device before each test
    val projectedContext = ProjectedContext.createProjectedDeviceContext(context)

    // assert the projected context is successfully initialized
    assertThat(projectedContext).isNotNull()
}
  &lt;/pre&gt;

  &lt;b&gt;&lt;span style="font-size: medium;"&gt;Jetpack Compose Glimmer: Google Sans Flex and new components&lt;/span&gt;&lt;/b&gt;
  
  &lt;p dir="ltr"&gt;Our UI library for display glasses, Jetpack Compose Glimmer, now includes &lt;a href="https://fonts.google.com/specimen/Google+Sans+Flex"&gt;Google Sans Flex&lt;/a&gt; for improved legibility on optical see-through displays. We’ve also added several interactive components:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;&lt;a href="https://developer.android.com/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/vertical-stacks"&gt;Stacks&lt;/a&gt;: Designed for touchpad-optimized groups, showing one item at a time.&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://developer.android.com/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/title-chips"&gt;Title Chips&lt;/a&gt;: Provides categorization and context for content cards.&lt;/li&gt;
  &lt;/ul&gt;

  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjURjqIjRqx4w887_z6WFLsKAuBhvNmzYshrqVno0lO9-MBzLh087wOBCvYEL30LBpi62QIfDXB23X_1cz_v3VbAdQ0VvjZ-jQq48QPOs2f41WmveveW8OgndqoKg_bc4fHQVWUHfPiExBnEmCXhyphenhyphentkXDh53GBE4RqUvVvbQvtQbTRBuT2rqAVtR6y3gPs/s16000/glimmer.gif" /&gt;&lt;/div&gt;

  &lt;h3 style="text-align: left;"&gt;Building Immersive Experiences for XR Headsets and Wired XR Glasses&lt;/h3&gt;
  
  &lt;p dir="ltr"&gt;If you're looking to build fully immersive experiences for XR Headsets and wired XR Glasses, we have several big updates.&lt;/p&gt;

  &lt;b&gt;&lt;span style="font-size: medium;"&gt;Beta Transition &amp;amp; Modern Architecture&lt;/span&gt;&lt;/b&gt;
  
  &lt;p dir="ltr"&gt;XR Runtime, Jetpack SceneCore, and the ARCore for Jetpack XR perception features (&lt;a href="https://developer.android.com/develop/xr/jetpack-xr-sdk/arcore/depth"&gt;Depth Maps&lt;/a&gt;, &lt;a href="https://developer.android.com/develop/xr/jetpack-xr-sdk/arcore/face"&gt;Eye/Hand Tracking&lt;/a&gt;, Hit Testing, and &lt;a href="https://developer.android.com/develop/xr/jetpack-xr-sdk/arcore/anchors"&gt;Spatial Anchors&lt;/a&gt;) will soon move to Beta, so we’ve streamlined the Jetpack XR APIs. We've removed legacy Guava and RxJava3 packages in favor of a modern, Kotlin-first architecture.&lt;/p&gt;

  &lt;b&gt;&lt;span style="font-size: medium;"&gt;Jetpack SceneCore: glTF and Custom Meshes&lt;/span&gt;&lt;/b&gt;&lt;p dir="ltr"&gt;We're expanding 3D model capabilities by adding the ability to fine tune 3D models and access specific nodes with a 3D model. Using &lt;a href="https://developer.android.com/reference/androidx/xr/scenecore/GltfModelNode"&gt;GltfModelNode&lt;/a&gt;, you can modify properties like pose, materials, and textures, and even run &lt;a href="https://developer.android.com/reference/kotlin/androidx/xr/scenecore/GltfAnimation"&gt;animations&lt;/a&gt; for specific nodes.&lt;/p&gt;

  &lt;pre&gt;// Create a new PBR material
pbrMaterial = KhronosPbrMaterial.create(
    session = xrSession,
    alphaMode = AlphaMode.OPAQUE
)

// Load a texture.
val texture = Texture.create(
    session = xrSession,
    path = Path("textures/texture_name.png")
)

// Apply the texture and configure occlusion
pbrMaterial.setOcclusionTexture(
    texture = texture,
    strength = 0.5f
)

// Access the hierarchy of nodes
val entityNodes = entity.nodes

// Find the specific node
val myEntityNode = entityNodes.find { it.name == "node_name" }

// Apply the PBR material override
myEntityNode?.setMaterialOverride(
   material = newMaterial
)
  &lt;/pre&gt;

  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD-R-O2D-AHZ_E-_VoYSIIAaU0Jfd2UdKZO3ySh1LrfIj-TC3L0GyhkmIo0TgCatKvwB4aarmdUx5GvwXxyOTReuijHhQJlj5n0ZSZsRKxP7GRnwifuajP21FDYe5vqa-LWHW9C4cAyozx_JYFqEix4Si6-R5nZ6-qXQ5ccnZnyf7fzUJLT0aBnHkQDxU/s16000/custom_material.gif" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;We're also bringing Custom Meshes to SceneCore. Custom meshes let you build geometry on the fly programmatically, which is ideal for creating custom 3D models. This feature will launch as experimental, so try it out and let us know what you think!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&amp;nbsp;

  &lt;pre&gt;// Create the mesh&lt;span id="docs-internal-guid-36ead301-7fff-7572-d2a7-be7691750a75"&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;val roadMesh =&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CustomMesh.BuilderFromMeshData(session, roadVertexLayout)&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.addVertexData(ByteBufferRegion(roadDataBuffer, 0, vertexDataSize))&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.setIndexData(ByteBufferRegion(roadDataBuffer, vertexDataSize, indexDataSize))&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.setTopology(MeshSubsetTopology.TRIANGLES)&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.build()&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;// Define the material&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;val roadMaterial = KhronosPbrMaterial.create(session, AlphaMode.OPAQUE)&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;// Instantiate the entity using the custom mesh and material&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;val roadEntity =&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MeshEntity.create(&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;session,&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;roadMesh,&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listOf(roadMaterial),&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pose = roadPose,&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;)&lt;br /&gt;&lt;/pre&gt;

  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaZ_4o2joX1mfFhSoQzrEmLPItDnayQviaz43vthTtDPe-zbCUQT-nZTvRcCca3L2XBo2iLDHA91xRty-HqClNvPQoOEZHzAnYWzZnJvhBL1-3KuJrm_3HluzazcmmNWYW_zBhMD-GGSnp039rREaJ9dH3AO9U2if1uSJ0FR8RGjKJuAW5gjaafY3R0kA/s16000/custom_mesh.gif" /&gt;&lt;/div&gt;

  &lt;b&gt;&lt;span style="font-size: medium;"&gt;&lt;div&gt;&lt;b&gt;&lt;span style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;Compose for XR: Native glTF Support&lt;/span&gt;&lt;/b&gt;
  
  &lt;p dir="ltr"&gt;We now have native glTF support directly in Compose for XR with &lt;a href="https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SpatialGltfModel.composable"&gt;SpatialGltfModel&lt;/a&gt;. Use this along with &lt;a href="https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SpatialGltfModelState#SpatialGltfModelState(androidx.xr.compose.subspace.SpatialGltfModelSource)"&gt;SpatialGltfModelState&lt;/a&gt; to access &lt;a href="https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SpatialGltfModelState#nodes()"&gt;nodes&lt;/a&gt; and &lt;a href="https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SpatialGltfModelState#animations()"&gt;animations&lt;/a&gt; in the glTF model,&amp;nbsp;or use them to add textures and materials to your 3D models.&lt;/p&gt;

  &lt;pre&gt;   val myGltfModelState = rememberSpatialGltfModelState(
        source = SpatialGltfModelSource.fromPath(
            Paths.get("models/my_animated_model.glb")
        )
    )

    val myGltfAnimation =
        myGltfModelState.animations.find { it.name == "animation_name" }

    DisposableEffect(myGltfAnimation) {
        myGltfAnimation?.loop()

        onDispose {
            myGltfAnimation?.stop()
        }
    }

    SpatialGltfModel(state = myGltfModelState, modifier = modifier)
  &lt;/pre&gt;

  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiV_PBd_vb1mDF0GbmR44I7E-2VMK2kQFhDK5_MW4dLGWyH-kXdpMKUmDf_7PzprxwMaNpUQgtMTHkJ3-CjEumK-Zd_Y4XiMqK78dxwk78eZel-wh3udnwCEtBFdgfxvX0oY-JyMK_gDAtc-4tKH5ZgXAIs4NaNT6eqZBu9n4Fl37tK8vYk8iKwPD_5VUo/s16000/animated_tiger.gif" /&gt;&lt;/div&gt;

  &lt;b&gt;&lt;span style="font-size: medium;"&gt;&lt;div&gt;&lt;b&gt;&lt;span style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;ARCore for Jetpack XR: Geospatial API Preview for Wired XR Glasses&lt;/span&gt;&lt;/b&gt;
  
  &lt;p dir="ltr"&gt;We’re also providing an early preview of the Geospatial API for wired XR Glasses in ARCore for Jetpack XR. This update enables high-precision anchoring of digital content tied to real-world locations in over 87 countries.&lt;/p&gt;
  
  &lt;p dir="ltr"&gt;By combining ARCore’s Visual Positioning System (VPS) with the reasoning and audio capabilities of the Gemini Live API, you can create contextually aware experiences that understand both the location and position of your user. Imagine building an immersive, AI-guided walking tour that provides real-time audio descriptions of nearby places, seamlessly blending digital information with the physical environment.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEwhzig0cd_Ku_6ge9WjDQLaMyKNwnSO5791yXlhEYx68mYW3joOpt8DC0juWbW13HwNP_sS-SUFENSjpW9CWpPCdFUTL8a-jBSsYtHMkouhuCWvHnJ18P0lTwmUXGFwRatXeGiTt_RVn46fbWOgCag0iEz8gApm5A6QudGKpo7xc3ieqOte-8-c0uMS8/s16000/Aura%20Geospatial%20Tour%20Demo%20-%20Draft%2001.gif" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3 style="text-align: left;"&gt;Start Building the Future Today&lt;/h3&gt;&lt;p dir="ltr"&gt;It's an amazing time to develop for Android XR. With the Jetpack XR SDK moving to Beta soon and a robust set of new tools at your fingertips, explore each of the following areas to get your app's experiences ready for XR!&lt;/p&gt;

  &lt;b&gt;&lt;span style="font-size: medium;"&gt;Read the documentation, explore the samples, and check out the XR experiments&lt;/span&gt;&lt;/b&gt;
  
  &lt;p dir="ltr"&gt;Head to the &lt;a href="http://developer.android.com/xr"&gt;official Android Developer site&lt;/a&gt; for full technical guides, API reference, and instructions on setting up the new emulator. Get inspired with our samples and experiments. See how we've used these APIs to build immersive spatial layouts, load 3D models, explore spatial audio, and more!&lt;/p&gt;

  &lt;ul style="text-align: left;"&gt;&lt;li&gt;Visit &lt;a href="http://developer.android.com/xr"&gt;the Android XR webpage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://developer.android.com/develop/xr/samples"&gt;Explore XR examples&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://developer.android.com/develop/xr/experiments"&gt;Explore XR experiments&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style="font-size: medium;"&gt;&lt;div&gt;&lt;b&gt;&lt;span style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;Check out what's new for game engines&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;p dir="ltr"&gt;We've added official support for &lt;a href="https://www.unrealengine.com/"&gt;Unreal Engine&lt;/a&gt; and &lt;a href="https://godotengine.org/"&gt;Godot&lt;/a&gt;, and we've launched two new tools to accelerate development&amp;nbsp;for Android XR with Unity and the &lt;a href="https://developer.android.com/xr/axrif"&gt;Android XR Interaction Framework&lt;/a&gt;.&amp;nbsp;And, based on your feedback, we are introducing the &lt;a href="https://developer.android.com/xr/engine-hub"&gt;Android XR Engine Hub&lt;/a&gt; to allow you to run your experiences directly from your preferred engine,&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;&lt;a href="https://android-developers.googleblog.com/2026/05/android-xr-updates-unity-unreal-godot.html"&gt;Read the blog post about what's new for game engines&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;

  &lt;b&gt;&lt;span style="font-size: medium;"&gt;&lt;div&gt;&lt;b&gt;&lt;span style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;Apply for the &lt;a href="http://g.co/dev/catalyst"&gt;Android XR Developer Catalyst Program&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;
  
  &lt;p dir="ltr"&gt;Don’t miss your chance to build for the latest Android XR hardware. Apply today for the opportunity to gain access to pre-release hardware, including our audio and display glasses prototype and XREAL’s Project Aura.&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;&lt;a href="http://g.co/dev/catalyst"&gt;Learn more and apply today.&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p dir="ltr"&gt;We look forward to seeing the amazing XR experiences you build as we move toward the launch of more Android XR devices later this year!&lt;br /&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;Explore this announcement and all Google I/O 2026 updates on&amp;nbsp;&lt;span style="display: none;"&gt;&lt;/span&gt;&lt;a href="https://io.google/2026/?utm_source=blogpost&amp;amp;utm_medium=pr&amp;amp;utm_campaign=devblogs&amp;amp;utm_content=" rel="noopener nofollow noreferrer" target="_blank"&gt;io.google&lt;span style="display: none;"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;</content><link href="http://android-developers.googleblog.com/feeds/6641411023540730343/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/android-xr-sdk-developer-preview-4-updates.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/6641411023540730343" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/6641411023540730343" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/android-xr-sdk-developer-preview-4-updates.html" rel="alternate" title="Updates to the Android XR SDK: Introducing Developer Preview 4" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9qKZCLcJmsSe9qRHpaIOBfW0rlMCfVdFM_-_fwyfW5IlhU11azXpGtWNnrFnrylqm6cDN-gyXQ2A9Tj5WDTbHj_YJF7u024pWDhkn9Wwe47WTdkDIib-wyjMWRoSnbN-bB5zLJjizVAy5-NlFP_A61wTWggOvLZkQu1WxIZGeMsc0LtFOhzd7DkAiVvY/s72-c/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-6786591945470664438</id><published>2026-05-19T03:30:00.000-07:00</published><updated>2026-05-19T11:06:39.669-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android XR"/><category scheme="http://www.blogger.com/atom/ns#" term="Game engine development"/><category scheme="http://www.blogger.com/atom/ns#" term="Product News"/><title type="text">Android XR Updates for Unity, Unreal, and Godot</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9sRZp34Nz9OvtdjQgkUqBOCiB7snnY3tG2Q5zJUokTcmW8uY0lcpDP3oE23kXFlnxzLW2HkraebaXMENlUJ5s6-YabMq7_U7XT_hOhHbIfCJBuqD1SZm-l4Mi7lJ9sTSwa7httwdtvf1iYJHCIHwYV7UOZdiHME8DXGoCGZ3ocyx31WRtWPCtuA_rDdc/s2048/GoogleForDevelopers-AndroidCombo3-StrapiMetacard-2048x1323%20(1).png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9sRZp34Nz9OvtdjQgkUqBOCiB7snnY3tG2Q5zJUokTcmW8uY0lcpDP3oE23kXFlnxzLW2HkraebaXMENlUJ5s6-YabMq7_U7XT_hOhHbIfCJBuqD1SZm-l4Mi7lJ9sTSwa7httwdtvf1iYJHCIHwYV7UOZdiHME8DXGoCGZ3ocyx31WRtWPCtuA_rDdc/s2048/GoogleForDevelopers-AndroidCombo3-StrapiMetacard-2048x1323%20(1).png" style="display: none;" /&gt;


&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;i&gt;Posted by Luke Hopkins, Android Developer Relations Engineer for OpenXR &amp;amp; Ryan Bartley, Android XR Product Manager&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXNALkAWpqYWv2OThv_drVHbPQCX7f0fYfiMip7aRBL6ASb878EyoGtsZ7WZwuzdCYfHsPWuEqqQ6-3WI3XFFX41PByg4WgXZ7UrOGD6rE9eId6EN61X6NnlppLotFTDgPkX1uqYVoLrac9h4Zj06lNRLO4YRMK3vcO8h6-03MKIlc5pGZxfJ4UtbuWUA/s4209/GoogleForDevelopers-AndroidCombo3-Blogger-4209x1253.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXNALkAWpqYWv2OThv_drVHbPQCX7f0fYfiMip7aRBL6ASb878EyoGtsZ7WZwuzdCYfHsPWuEqqQ6-3WI3XFFX41PByg4WgXZ7UrOGD6rE9eId6EN61X6NnlppLotFTDgPkX1uqYVoLrac9h4Zj06lNRLO4YRMK3vcO8h6-03MKIlc5pGZxfJ4UtbuWUA/s16000/GoogleForDevelopers-AndroidCombo3-Blogger-4209x1253.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Today, we are excited to announce that official support for &lt;a href="https://www.unrealengine.com/"&gt;Unreal Engine&lt;/a&gt; and &lt;a href="https://godotengine.org/"&gt;Godot&lt;/a&gt; has arrived for Android XR. Alongside these engine expansions, we are also launching new tools designed to boost your productivity and enable new XR capabilities: the &lt;b&gt;Android XR Engine Hub &lt;/b&gt;and&amp;nbsp;the &lt;b&gt;Android XR Interaction Framework&lt;/b&gt;.&lt;/p&gt;

  &lt;h2&gt;Android XR Engine Hub&lt;/h2&gt;
  &lt;p&gt;The &lt;a href="https://developer.android.com/xr/engine-hub"&gt;Android XR Engine Hub&lt;/a&gt; is currently available for Windows and is your mission control for development. It unifies your workflow across Unity, Unreal Engine, and Godot by serving as a high-speed bridge that streams device-created perception data straight from your device into the engine of your choice.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivaoLNBD-WKlpnJ-r_cc-z0yaYWtr_CVmZfooRh9ebapUQU_WE0sHgjtzuaMODb185rZbCSJANKsd67XC9-2yTKh_hF-ET7DfDcmPb45NwNOCsOzTnYK1Mm_pyANcctuMgl8M6_6d8Mk0iRC9j0qQGr5KMzPOJ87FFrdLnyMT7oH38BcyjPuEwXOxLdEA/w640-h348/DirectPreview_Low.gif" /&gt;&lt;/div&gt;

  &lt;h3&gt;Real-Time Streaming via OpenXR&lt;/h3&gt;
  &lt;p&gt;The Hub bridges the gap between desktop power and mobile sensor data. Instead of requiring a full build to see how your app reacts to the world, the Hub &lt;b&gt;streams OpenXR extensions&lt;/b&gt; from the physical Android XR device directly to your Windows machine.&lt;/p&gt;
  &lt;p&gt;This means you can iterate on complex interactions in "Play Mode" while receiving live, high-fidelity data from the headset’s sensors. Without this streaming capability, testing even a minor change to eye-tracking or spatial mapping would require a full APK export and installation.&lt;/p&gt;
  &lt;p&gt;The Hub enables low-latency testing for the following streamed extensions:&lt;/p&gt;
  
  &lt;p&gt;&lt;strong&gt;Core &amp;amp; Interaction Support&lt;/strong&gt;&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;b&gt;XR_EXT_hand_tracking &amp;amp; hand_interaction&lt;/b&gt;: Streams 26-point hand meshes and joint data for immediate interaction testing.&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;XR_EXT_eye_gaze_interaction&lt;/b&gt;: Virtualizes eye-gaze data to test UI and foveated logic on your PC.&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;XR_EXT_palm_pose &amp;amp; XR_EXT_uuid&lt;/b&gt;: Real-time precision tracking and persistent object ID streaming.&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;&lt;strong&gt;Android XR Vendor Extensions&lt;/strong&gt;&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;b&gt;Eye &amp;amp; Face Tracking&lt;/b&gt; (&lt;code&gt;XR_ANDROID&lt;/code&gt;): Stream expressive avatar data to your editor to refine social presence without building.&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;Passthrough &amp;amp; Trackables&lt;/b&gt;: Access live environmental understanding—like plane detection and hit testing—directly within the engine's viewport.&lt;/li&gt;
  &lt;/ul&gt;
  
  &lt;p&gt;By virtualizing the device's hardware capabilities and streaming them over a low-latency desktop bridge, the Android XR Engine Hub allows for game engine developers to quickly iterate.&lt;/p&gt;
  
  &lt;p&gt;&lt;strong&gt;Download the Hub:&lt;/strong&gt;&lt;br /&gt;&lt;a href="https://developer.android.com/xr/engine-hub"&gt;Get the Android XR Engine Hub for Windows&lt;/a&gt;&lt;br /&gt;&lt;a href="https://developer.android.com/xr/direct-preview"&gt;Learn more about Direct Preview&lt;/a&gt;&lt;/p&gt;

  &lt;h2&gt;Expanding Game Engine Support&lt;/h2&gt;
  &lt;p&gt;Through our commitments to OpenXR standards, we are ensuring that whether you are a veteran studio or an indie developer, you have best-in-class tools to help bring your creative vision to life.&lt;/p&gt;

  &lt;h3&gt;Unreal Engine&lt;/h3&gt;
  &lt;p&gt;Unreal Engine support is now available in developer preview, targeting &lt;a href="https://www.unrealengine.com/download"&gt;&lt;b&gt;version 5.6.1&lt;/b&gt;&lt;/a&gt;. This integration is built directly on using OpenXR with the support for AndroidXR vendor specific API using the &lt;b&gt;&lt;a href="https://github.com/android-xr/android-xr-unreal-vendor-plugin"&gt;Android XR vendor plugin for Unreal&lt;/a&gt;&lt;/b&gt;, you can access platform-specific extensions for advanced hand tracking, face tracking, and scene understanding (like plane detection and depth) whilst making use of Unreal blueprints or C++ support.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjyLLvLGZ-MHvGKsl5wdT0f_8YyLCQnZr9DbvQY98usskyY6yP8zE1aWh_1NtpFQNXVNu9k6ZymYRsfnuD2Kirp_CDa77T7NnQKQpFZ2dV-E7Llpe0UlhJ_H8_v1IiGruftqXseYBR2O9o9PHNGSgPZ-hcs5UTaKcxhmnIFcRoySbmMp_uPpjwphAWotk/s1124/ue5_1-02-ue-project-creation.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="748" data-original-width="1124" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjyLLvLGZ-MHvGKsl5wdT0f_8YyLCQnZr9DbvQY98usskyY6yP8zE1aWh_1NtpFQNXVNu9k6ZymYRsfnuD2Kirp_CDa77T7NnQKQpFZ2dV-E7Llpe0UlhJ_H8_v1IiGruftqXseYBR2O9o9PHNGSgPZ-hcs5UTaKcxhmnIFcRoySbmMp_uPpjwphAWotk/s16000/ue5_1-02-ue-project-creation.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;Get Started with Unreal:&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="https://github.com/android-xr/android-xr-unreal-vendor-plugin"&gt;Download the Android XR Extension Plugin for Unreal&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.unrealengine.com/"&gt;Official Unreal Engine Website&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://developer.android.com/xr/unreal"&gt;View the Unreal Engine Development Guide&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;

  &lt;h3&gt;Godot&lt;/h3&gt;
  &lt;p&gt;In partnership with the &lt;a href="https://godot.foundation/"&gt;Godot Foundation&lt;/a&gt; and &lt;a href="https://www.w4games.com/"&gt;W4 Games&lt;/a&gt;, we are bringing official Godot support to Android XR for Godot 4.6.2 and higher.&lt;/p&gt;
  &lt;p&gt;We are already seeing incredible momentum from W4 as they have ported experiences like &lt;a href="https://play.google.com/store/apps/details?id=as.may.moat"&gt;MoAT&lt;/a&gt; and &lt;a href="https://play.google.com/store/apps/details?id=com.snopekgames.gwj81"&gt;Expedition to Blobotopia&lt;/a&gt; that are already live on Google Play, proving that Godot is ready for production-grade spatial experiences today.&lt;/p&gt;
  &lt;p&gt;To unlock the full potential of the platform, use the &lt;b&gt;&lt;a href="https://github.com/GodotVR/godot_openxr_vendors/tree/master/plugin"&gt;Godot OpenXR Vendors plugin 5.1&lt;/a&gt;&lt;/b&gt;, which provides the necessary Android XR vendor extensions for features like &lt;a href="https://github.com/GodotVR/godot_openxr_vendors/tree/c8f4c9fd38c10cec1b3dddc76229587fb2ed21c4/samples/androidxr-scenemeshing-sample"&gt;scene meshing&lt;/a&gt;, &lt;a href="https://github.com/GodotVR/godot_openxr_vendors/blob/c8f4c9fd38c10cec1b3dddc76229587fb2ed21c4/samples/androidxr-dynamic-resolution-sample/main.gd#L22"&gt;dynamic resolution&lt;/a&gt;, &lt;a href="https://github.com/GodotVR/godot_openxr_vendors/blob/c8f4c9fd38c10cec1b3dddc76229587fb2ed21c4/samples/androidxr-dynamic-resolution-sample/main.gd#L22"&gt;light estimation&lt;/a&gt; and much more. We're collaborating with Godot to optimize the OpenXR implementation for the Android XR power profile and input standards.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;Get Started with Godot:&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="https://github.com/GodotVR/godot_openxr_vendors"&gt;Download the Godot OpenXR Vendors Plugin&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://godotengine.org/"&gt;Official Godot Engine Website&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://developer.android.com/xr/godot"&gt;View the Godot XR Setup Guide&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;

  &lt;h3&gt;Unity&lt;/h3&gt;
  &lt;p&gt;The Unity OpenXR: Android XR 1.13 package is now available for Unity 6.5 Beta. Unity has expanded Application SpaceWarp support to include both uGUI and TextMeshPro. Keep an eye out for the general release of Unity 6.5 and more platform enhancements arriving this summer.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Android XR Extensions v1.3.1 for Unity&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Everything else you need for comprehensive platform integration is available in our latest &lt;a href="https://github.com/android/android-xr-unity-package/releases/tag/v1.3.0"&gt;Android XR Extensions release&lt;/a&gt;:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Spatial API Support: You can now manage the &lt;code&gt;android.software.xr.api.SPATIAL&lt;/code&gt; manifest tag directly through XRSessionFeature settings, making it easier than ever to define your app's Spatial API requirements and target levels.&lt;/li&gt;
    &lt;li&gt;Fine Eye Face Tracking: A new Fine Eye Poses feature provides high-precision eye poses using the &lt;code&gt;TryGetFineEyePoses&lt;/code&gt; extension method.&lt;/li&gt;
    &lt;li&gt;Direct Preview Support: The Android XR Streaming feature enables Direct Preview support within Unity Editor's PlayMode (Windows only).&lt;/li&gt;
  &lt;/ul&gt;
&lt;p&gt;Note: &lt;code&gt;Android XR (Extensions): Hand Mesh&lt;/code&gt; has been removed; you should now use the unified Hand Mesh Data within the &lt;a href="https://docs.unity3d.com/Packages/com.unity.xr.androidxr-openxr@1.2/manual/features/hand-mesh-data.html"&gt;extensions package&lt;/a&gt;.&lt;/p&gt;

  &lt;h2&gt;Android XR Interaction Framework for Unity&lt;/h2&gt;
  &lt;p&gt;The Android XR Interaction Framework (AXRIF) is now available in developer preview. AXRIF is an unstyled, opinionated input toolkit that abstracts the complex logic required to build interfaces that are consistent with Android XR system interactions.&lt;/p&gt;
  &lt;p&gt;Instead of focusing on UI visuals, AXRIF prioritizes the underlying mechanics of the Android XR user experience. At its core is the same Transition Manager that powers the system's rich multimodal inputs, enabling state switching between 6DoF controllers, 3D mouse, hand tracking, and eye gaze. By leveraging this framework, developers can significantly reduce the implementation burden required to bring Android XR's full complement of robust interactions to their apps.&lt;/p&gt;
  &lt;p&gt;At launch, the framework provides three core capabilities:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Automated Multimodal Input Transitions: The framework manages the state machine for switching between input modalities. For example, it handles the transition logic when a user moves from gaze-targeting an object to directly touching it, simplifying simultaneous support for hands, controllers, and mice.&lt;/li&gt;
    &lt;li&gt;Gaze-Assisted Gesture Interaction: AXRIF combines gaze vector targeting with hand gesture recognition (such as pinch-to-select) for precise distant interaction, matching the system's default behavior.&lt;/li&gt;
    &lt;li&gt;Physics-Based 2D UI Interaction: The framework maps high-fidelity hand tracking to 2D plane interactions, enabling intuitive poke and swipe gestures on floating panels while respecting physical boundary constraints.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;By adopting AXRIF, your app inherits the platform's native interaction model, ensuring your app feels consistent with the rest of the OS.&lt;/p&gt;
  
  &lt;p&gt;&lt;strong&gt;Explore the Toolkit:&lt;/strong&gt;&lt;br /&gt;&lt;a href="https://developer.android.com/xr/axrif"&gt;Interaction Framework Documentation&lt;/a&gt;&lt;br /&gt;&lt;a href="http://github.com/android-xr/android-xr-interaction-framework-unity-package"&gt;Download the Unity Package&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;

  &lt;h2&gt;Get Started Today:&lt;/h2&gt;
  &lt;p&gt;There has never been a better time to dive into Android XR development. With support across Unity, Unreal, and Godot, the platform is ready for your creative vision, no matter which engine you call home. Explore our official engine partners to get started:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;a href="https://unity.com/"&gt;Unity Developer Portal&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://www.unrealengine.com/"&gt;Unreal Engine Developer Community&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://godotengine.org/"&gt;Official Godot Engine Website&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Explore this announcement and all Google I/O 2026 updates on&amp;nbsp;&lt;span style="display: none;"&gt;&lt;/span&gt;&lt;a href="https://io.google/2026/?utm_source=blogpost&amp;amp;utm_medium=pr&amp;amp;utm_campaign=devblogs&amp;amp;utm_content=" rel="noopener nofollow noreferrer" target="_blank"&gt;io.google&lt;span style="display: none;"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/div&gt;
</content><link href="http://android-developers.googleblog.com/feeds/6786591945470664438/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/android-xr-updates-unity-unreal-godot.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/6786591945470664438" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/6786591945470664438" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/android-xr-updates-unity-unreal-godot.html" rel="alternate" title="Android XR Updates for Unity, Unreal, and Godot" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9sRZp34Nz9OvtdjQgkUqBOCiB7snnY3tG2Q5zJUokTcmW8uY0lcpDP3oE23kXFlnxzLW2HkraebaXMENlUJ5s6-YabMq7_U7XT_hOhHbIfCJBuqD1SZm-l4Mi7lJ9sTSwa7httwdtvf1iYJHCIHwYV7UOZdiHME8DXGoCGZ3ocyx31WRtWPCtuA_rDdc/s72-c/GoogleForDevelopers-AndroidCombo3-StrapiMetacard-2048x1323%20(1).png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-3554893602659076566</id><published>2026-05-19T03:00:00.000-07:00</published><updated>2026-05-19T11:06:26.295-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Introducing Android Performance Analyzer"/><category scheme="http://www.blogger.com/atom/ns#" term="The Next Evolution in Profiling for Android"/><title type="text">Introducing Android Performance Analyzer : The Next Evolution in Profiling for Android</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxS1tYMUG19t4HnNUi5WtkrChpK9woN_xp4qZ-7m_7tQ2G44hGdJiBlnqmrH8-DEJzW38y1_a3VZpbBFGOzkCIVFmx-1w6wvGNHr-50mFBRQVn8wO15vMn1AOnGq8sIh5hYkZuymf3QqlhpgNTYb03P7oxB2a_11ajqTDVkap57Z5IkhYIP0cL2uxF77U/s2048/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxS1tYMUG19t4HnNUi5WtkrChpK9woN_xp4qZ-7m_7tQ2G44hGdJiBlnqmrH8-DEJzW38y1_a3VZpbBFGOzkCIVFmx-1w6wvGNHr-50mFBRQVn8wO15vMn1AOnGq8sIh5hYkZuymf3QqlhpgNTYb03P7oxB2a_11ajqTDVkap57Z5IkhYIP0cL2uxF77U/s2048/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" style="display: none;" /&gt;


&lt;p dir="ltr"&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;&lt;i&gt;By Simon Cooke, Developer Relations Engineer (&lt;a href="https://x.com/fleetingshadow"&gt;X&lt;/a&gt;) and Mayank Jain, Product Manager (&lt;a href="https://x.com/makuchaku"&gt;X&lt;/a&gt;)&lt;/i&gt;&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
    &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWiBdUFnDMTrPJ89V62kou4gsfcPgPoY37gFgfP3iI9vzGFO7P5lKmxcfxlIp8Ygl6ONdPGaP_DXryIQz2xRgs57PT7eNskjEX18beJ-XnTmNd-8o5o1G2ihGml0D9MX-7W8Kq20C9PvpZWElRzCiAbn1vB5XRoB1iGVBeWIypks15BdAk00KiJxWXSMQ/s4209/GoogleForDevelopers-AndroidText-Blogger-4209x1253.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;
        &lt;img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWiBdUFnDMTrPJ89V62kou4gsfcPgPoY37gFgfP3iI9vzGFO7P5lKmxcfxlIp8Ygl6ONdPGaP_DXryIQz2xRgs57PT7eNskjEX18beJ-XnTmNd-8o5o1G2ihGml0D9MX-7W8Kq20C9PvpZWElRzCiAbn1vB5XRoB1iGVBeWIypks15BdAk00KiJxWXSMQ/s16000/GoogleForDevelopers-AndroidText-Blogger-4209x1253.png" /&gt;
    &lt;/a&gt;
&lt;/div&gt;

&lt;h3 style="text-align: left;"&gt;What is Android Performance Analyzer?&lt;/h3&gt;

&lt;p dir="ltr"&gt;&lt;b&gt;Android Performance Analyzer (APA)&lt;/b&gt;&amp;nbsp;is Android’s new profiler and performance analysis tool for the Android mobile ecosystem.&amp;nbsp;&lt;/p&gt;&lt;p dir="ltr"&gt;APA is intended as a profiling tool for any developer building for Android who needs to make their app or game run better and faster. It is helpful for all performance-minded engineers, especially those using Vulkan in their game engines who want to squeeze every bit of performance out of their code.&lt;/p&gt;&lt;p dir="ltr"&gt;APA aims to be the tool that helps you optimize apps and games for all modern Android devices and simplifies your most common workflows, with a simple interface that anyone on your team can quickly learn and be productive.&amp;nbsp;&lt;/p&gt;&lt;p dir="ltr"&gt;Available today in &lt;b&gt;open beta &lt;/b&gt;is APA’s new System Profiler that you can use to analyze the CPU, GPU, Memory, and power usage of your app or game - and see how it interacts with system behavior.&lt;/p&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
  &lt;div style="height: 0px; max-width: 100%; overflow: hidden; padding-bottom: 56.25%; position: relative;"&gt;
    &lt;iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/peplbYt0Ohg?autoplay=1&amp;amp;mute=1&amp;amp;loop=1&amp;amp;playlist=peplbYt0Ohg&amp;amp;controls=0&amp;amp;modestbranding=1" style="border: 0; height: 100%; left: 0; position: absolute; top: 0; width: 100%;" width="320" youtube-src-id="peplbYt0Ohg"&gt;&lt;/iframe&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p dir="ltr"&gt;Developed in collaboration with Samsung Austin Research Center (SARC) and LunarG, APA relies on &lt;a href="https://perfetto.dev/"&gt;Perfetto &lt;/a&gt;for system tracing and its upcoming frame profiling/debugging features (stay tuned!) are powered by LunarG’s GFXReconstruct technology for graphics capture and replay.&lt;/p&gt;&lt;p dir="ltr"&gt;Devices running Android 12+ will provide the best experience for capturing system-wide performance and GPU counters and render stages.&lt;/p&gt;&lt;p dir="ltr"&gt;We’re also working across the Android ecosystem with our esteemed industry partners to bring more profiling &amp;amp; optimization related data into APA.&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU0qsjigLf4sdhxB05YzLDJqWNDQktbtZTFubYTfQOJVcjYYkLKzsSUffQvHzJlH4PHCm-1qvEVlyWNRa4q60UWFftTQ717aXoFwFv4lz21q46ICNbO9WjjS0Hnfvo9SMSS9m4cEEdm8csOz16q02tu8WO7WhlGlS9askn_MDyFY8Qws1YF5b25lU8WlM/s16000/01-apa-hero.png" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Android Performance Analyzer&lt;/i&gt;&lt;/div&gt;

&lt;h3 style="text-align: left;"&gt;How to get Android Performance Analyzer&lt;/h3&gt;

&lt;p dir="ltr"&gt;APA ships in two different forms, and you can download whichever one suits your needs best&lt;/p&gt;

&lt;ul&gt;
    &lt;li dir="ltr"&gt;As a &lt;a href="https://developer.android.com/android-performance-analyzer"&gt;lightweight standalone desktop app&lt;/a&gt;.&lt;/li&gt;
    &lt;li dir="ltr"&gt;And also integrated directly into Android Studio as the updated System Trace viewer (available in &lt;a href="https://developer.android.com/studio/preview"&gt;Panda 4 canary builds&lt;/a&gt; and later).&lt;/li&gt;
&lt;/ul&gt;

&lt;p dir="ltr"&gt;The standalone desktop app is intended to be used without an Android Studio project or Gradle build - and provides deep customization of recording configuration, built-in Vulkan layers for graphics analysis, deep inspection of GPU counters and much more.&lt;/p&gt;&lt;p dir="ltr"&gt;APA is also cross-platform: works natively on Windows, MacOS, and Linux.&lt;/p&gt;

&lt;h3&gt; Features in this release&lt;/h3&gt;

&lt;h2&gt;Basic profiling functionality&lt;/h2&gt;

&lt;p dir="ltr"&gt;&lt;b&gt;Capturing your profile data&lt;/b&gt;&lt;/p&gt;

&lt;p dir="ltr"&gt;You don’t always want to take a capture immediately at application or game launch. APA allows you to choose, and capture traces from your device at launch or triggered manually. The user interface allows you to select which GPU counters and other data is captured in a trace - and if you have more complex needs, you can provide your own custom&amp;nbsp;&lt;a href="https://perfetto.dev/docs/concepts/config"&gt;Perfetto configuration&lt;/a&gt;.&lt;/p&gt;

&lt;p dir="ltr"&gt;&lt;b&gt;Deep-Dive System Analysis&lt;/b&gt;&lt;/p&gt;

&lt;p dir="ltr"&gt;With APA, you can analyze the entire system’s behavior in one view. For example, you can easily examine CPU cores - both their frequencies and the work scheduled on them or inspect processes &amp;amp; their thread activity.&lt;/p&gt;&lt;p dir="ltr"&gt;For graphics-heavy apps, APA provides GPU performance counter data across hardware from Qualcomm, Arm, Imagination, and Samsung. You can even track battery and power consumption to see the impact of your code on power consumption.&lt;/p&gt;&lt;p dir="ltr"&gt;To understand exactly where frames are spending time, SurfaceFlinger events provide deep visibility into the rendering and display composition pipeline, from initial code acquisition to final display. And with the new screenshots feature, you can visually scrub through to easily find the exact areas where you want to focus your attention.&lt;/p&gt;&lt;p dir="ltr"&gt;You can open existing Perfetto traces, zoom through the timeline for precise detail, and use rulers to measure the duration of work and events. APA also lets you bookmark and annotate interesting findings, and you can pin critical tracks to the top of your screen to keep your focus exactly where it needs to be as you optimize.&lt;/p&gt;

&lt;h3&gt;Workflow features&lt;/h3&gt;

&lt;p dir="ltr"&gt;&lt;b&gt;Tabbed interface and split windows&lt;/b&gt;: You can open multiple traces in side-by-side tabs or split a single trace into two windows to compare different regions of the same trace simultaneously.&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmKWakUYAys2eLWRtDjqSisDKwCbJEkrSSCI-gcX7-es7cRx5zEnLEINyPWNd3TiGvBmPnBcxX6XQ8DzplgwTjsIjSajuiBq7S9uuyW8SQPj7uemXvnUTS09kJ5Ca_f0hnCGWTnCOTGsm1Oubc5lFXDp5ap-0MRFbFcD45T5yOK0PycFSEidEnKgHZUAE/s16000/02-apa-side-by-side-tabs.png" /&gt;&lt;/div&gt;

&lt;p dir="ltr" style="text-align: center;"&gt;&lt;i&gt;Tabbed interface showing two traces side-by-side.&lt;/i&gt;&lt;/p&gt;

&lt;p dir="ltr"&gt;&lt;b&gt;Project-based workflow:&lt;/b&gt; APA uses a project model that allows you to keep track of multiple traces from the project sidebar. This is especially useful for gathering the results of A/B testing and longitudinal tests, and keeping all of your results together for comparison &amp;amp; quick access purposes.&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheqdf6yy4ORVn6lQ7bvMvPXQ6IVqP3JHDnA6PJIX_OiMeOU_1clT99r6cXAJ_fw6ITX05fqo4BNyR1PW7-Xlu0qA4AYELvlPpBL3n6LRpQZ4hDF5QfrCN5OKZ39DS2gIHraAb2XE_1TTj710VtCb1KxziQNV4yvtGYRUHoAFsdyr_TIpeyqSu0JmyXsvs/w640-h518/03-apa-workspace-management.png" /&gt;&lt;/div&gt;

&lt;p dir="ltr" style="text-align: center;"&gt;&lt;i&gt;The new project window helps you manage multiple traces.&lt;/i&gt;&lt;/p&gt;

&lt;p dir="ltr"&gt;&lt;b&gt;Navigate visually using screenshots&lt;/b&gt;: APA lets you capture screenshots during a trace (without any noticeable performance overhead) to home in on areas where you saw something affect performance by scrubbing through the timeline. Or even just to get your bearings.&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
    &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-niJPpEQTnyVaVEQ6KwTFSNyON1rh1uPVyo43glwsRFCC34lsnIh87Zxt_Chy_0n6ZhYe4QrYizPguRAM_oZQc-JV689JOT17P9S67RmNf-nJiBNcREoacfNqmgQFKtSbH6fo2wQc1V0ZyBmZmbBTs7v_fuTAbWmOLsdSGuyJrfbtCOsfY_GgOHl37p4/s3704/04-apa-netmarble.gif"&gt;
        &lt;img border="0" data-original-height="1574" data-original-width="3704" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-niJPpEQTnyVaVEQ6KwTFSNyON1rh1uPVyo43glwsRFCC34lsnIh87Zxt_Chy_0n6ZhYe4QrYizPguRAM_oZQc-JV689JOT17P9S67RmNf-nJiBNcREoacfNqmgQFKtSbH6fo2wQc1V0ZyBmZmbBTs7v_fuTAbWmOLsdSGuyJrfbtCOsfY_GgOHl37p4/s16000/04-apa-netmarble.gif" /&gt;
    &lt;/a&gt;
&lt;/div&gt;

&lt;p dir="ltr" style="text-align: center;"&gt;&lt;i&gt;Scrubbing the timeline using screenshots for navigation (trace taken from NetMarble’s Seven Deadly Sins: Origin).&lt;/i&gt;&lt;/p&gt;

&lt;p dir="ltr"&gt;&lt;b&gt;Persistent view customizations:&lt;/b&gt; When you pin or vertically resize tracks, we save those customizations so that they persist the next time you open the trace.&lt;/p&gt;

&lt;h3&gt;Analysis tools &amp;amp; new skills for AI agents&lt;/h3&gt;

&lt;p dir="ltr"&gt;&lt;b&gt;Vulkan debug trace markers for render passes:&lt;/b&gt;&amp;nbsp;We support Vulkan debug annotations for render passes - which allow you to view Render Pass names you set from your codebase directly in the tracks and slices shown in APA.&lt;/p&gt;&lt;p dir="ltr"&gt;This immensely helps you to make logical connections between the workloads you see in the profiler to where they are originating from in your codebase.&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
    &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgweCYN_Tt4Nct3UZpmQpEVhVkA4tbiGdYMhT7le03H84PXnyVkcmt2W61t20Vwy59MQQB-pnQCqnI9AWx7OwqI7KxCgbDJcX4vUm1HAjSQ_70wqRoaBPY_uV2rvPaDYqGSIzBBWHRIfDnX5IvJjzJMb9CIccfYBZF5Nvhor7SNXQvMaxYpRM_7sk_-9oQ/s2048/05-vulkan-debug-markers.png"&gt;
        &lt;img border="0" data-original-height="706" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgweCYN_Tt4Nct3UZpmQpEVhVkA4tbiGdYMhT7le03H84PXnyVkcmt2W61t20Vwy59MQQB-pnQCqnI9AWx7OwqI7KxCgbDJcX4vUm1HAjSQ_70wqRoaBPY_uV2rvPaDYqGSIzBBWHRIfDnX5IvJjzJMb9CIccfYBZF5Nvhor7SNXQvMaxYpRM_7sk_-9oQ/s16000/05-vulkan-debug-markers.png" /&gt;
    &lt;/a&gt;
&lt;/div&gt;

&lt;p dir="ltr" style="text-align: center;"&gt;&lt;i&gt;Vulkan Debug Markers allow you to keep track of what kind of work is being performed in your trace.&lt;/i&gt;&lt;/p&gt;

&lt;p dir="ltr"&gt;&lt;b&gt;Use AI to build SQL queries for custom analysis work&lt;/b&gt;: APA supports trace analysis via SQL queries and ships with a new Perfetto SQL skill for use with your favorite AI agents. This makes it easier to build queries without needing to remember Perfetto SQL schemas or the SQL syntax.&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJIxrTI3nUw-6OoSDs6feaUU4__AQcb2Z71koHUIyO3dHknOwtaGXuaotk7g2fGN7ZPKdRnAqB2scFsDpXCMKatWBjYrfPJeCoedQu2p5-2gCJ_7YRTUM31JUYjCmWsCdTf_RXe3Af_85vrcN_OvzzShYK0lH3S-YVNYqlX6IzxqRc2178jg5fj1GUYmE/s16000/06-apa-sql-queries.png" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;AI helps you build SQL queries to perform custom analysis on traces.&lt;/i&gt;&lt;/div&gt;

&lt;p dir="ltr"&gt;&lt;b&gt;Ask Gemini to analyze traces for you: &lt;/b&gt;We’ve also added another Perfetto Analysis skill to answer high-level questions for you - like “Why is my app startup slow?” - helping you to find starting points when analyzing complex traces, using your favorite AI agent to pinpoint the answers.&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6bgEAM4dbLaBnQqwe-H8PV0ciaMHVNslVPfg4d2yn2oO6xcCXhYdDYBGhZsl0tfq-4NRb6-Gq1XeYqZP6Fa33hYADssCeUzChWQ-KeWOqqYLGtiMBkYeuwS5dLpUPYiZj2bud9q3JRQP9IIA76YpbedZQWI3359L9QYcEQ5EbhyphenhyphenKSu08rMfnCeRt55So/s16000/07-apa-sql-analysis.png" /&gt;&lt;/div&gt;

&lt;p dir="ltr" style="text-align: center;"&gt;&lt;i&gt;Agentic trace analysis in Android Performance Analyzer&lt;/i&gt;&lt;/p&gt;

&lt;p dir="ltr"&gt;&lt;b&gt;FPS and Frame Duration times :&lt;/b&gt; You can review the FPS and Frame duration time at a glance in the tracks to correlate it with other activity happening in your trace.&amp;nbsp;&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXOjBWBzHoZ1hHMAvVre-zh1skK8Xxwymgfn8ATedR90nv6XwH4trI_GeYXi3cb-8blHC4bnKwdywiX2U0qzKIz0AWLx9sqgfJsWjiM43t8k3kzsJehpFXhbQpWJ6bd4nOeyICt63T342F5DdHy6if2Bf8qdOTGTBBdbEl2k-Hccub89xnWqgbg1n6_w0/s16000/08-apa-fps-track.png" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;FPS and Frame timing tracks in APA&lt;/i&gt;&lt;/div&gt;

&lt;h2&gt;Speed &amp;amp; robustness improvements&lt;/h2&gt;

&lt;p dir="ltr"&gt;&lt;b&gt;Speed and robustness improvements:&lt;/b&gt; Rendering a trace is now typically 6x to 26x faster than Android GPU Inspector, and APA is significantly more stable when working with large traces.&lt;/p&gt;

&lt;h3&gt;Case studies&lt;/h3&gt;

&lt;p dir="ltr"&gt;We’ve worked with our early access partners to create detailed case studies showcasing how APA could be used to improve performance for Vulkan apps &amp;amp; games.&lt;/p&gt;

&lt;h2&gt;The Forge Interactive&lt;/h2&gt;

&lt;p dir="ltr"&gt;&lt;a href="https://theforge.dev/"&gt;The Forge&lt;/a&gt;&amp;nbsp;used Android Performance Analyzer to identify the need to batch calls to vkCmdBindDescriptorSets, which reduced CPU setup costs by ~50%. This, in turn, slowed heat production on their device by 2-3x, leading to longer session times. They also used APA to identify opportunities to move font and UI rendering work over to the GPU, improving scalability.&lt;/p&gt;

&lt;p dir="ltr"&gt;You can read the full &lt;a href="https://developer.android.com/android-performance-analyzer/case-study/the-forge"&gt;case study from The Forge here&lt;/a&gt;.&lt;/p&gt;

&lt;p dir="ltr"&gt;&lt;b&gt;Note:&lt;/b&gt; This case study demonstrates how to use custom SQL queries in the profiler to generate a total rendering cost metric.&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
    &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_2-Mc7shMVBEPE4P9oOR-g8vZfNl6zood3f2bIVNgQgGLMtzI-5fzv6oncBYsFJ_rWZJ-OP4SH3sizJ2tfu_D3CXvXJXZO90pwqiThCj9fK9nN-B1A8vEQ86kkxkL3Khy2JDjiwJL7101jfYNFxtN5h3I1HEJnzDLyStTBRiLozc4dlyfraThaiz2SWk/s1645/09-apa-the-forge.png"&gt;
        &lt;img border="0" data-original-height="421" data-original-width="1645" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_2-Mc7shMVBEPE4P9oOR-g8vZfNl6zood3f2bIVNgQgGLMtzI-5fzv6oncBYsFJ_rWZJ-OP4SH3sizJ2tfu_D3CXvXJXZO90pwqiThCj9fK9nN-B1A8vEQ86kkxkL3Khy2JDjiwJL7101jfYNFxtN5h3I1HEJnzDLyStTBRiLozc4dlyfraThaiz2SWk/s16000/09-apa-the-forge.png" /&gt;
    &lt;/a&gt;
&lt;/div&gt;

&lt;p dir="ltr" style="text-align: center;"&gt;&lt;i&gt;The Forge case study showing frames presented consistently at a stable 30 FPS using APA&lt;/i&gt;&lt;/p&gt;

&lt;h2&gt;NetMarble – Seven Deadly Sins: Origin&lt;/h2&gt;

&lt;p dir="ltr"&gt;&lt;a href="https://www.netmarble.com/"&gt;Netmarble&lt;/a&gt; used Android Performance Analyzer to fine-tune their game &lt;a href="https://play.google.com/store/apps/details?id=com.netmarble.nanaori"&gt;&lt;i&gt;Seven Deadly Sins: Origin&lt;/i&gt;&lt;/a&gt;, focusing particularly on improving performance by making changes to the precision of their shaders, and exploring the impact of upscaling on the performance of their renderer.&lt;/p&gt;

&lt;p dir="ltr"&gt;This allowed them to reduce the GPU cost of rendering some scenes by up to 90%.&amp;nbsp;&lt;/p&gt;&lt;p dir="ltr"&gt;Read the full &lt;a href="https://developer.android.com/android-performance-analyzer/case-study/netmarble-perf-analyzer"&gt;NetMarble case study here&lt;/a&gt;.&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
    &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXGPxTZM0bd8sxH3SEwYHj3g9CbxX4GDvHspGtd62G73qd26AbHC3L0s6MDtehL7NGufXNTTFd2uzIZGT2e_x6phn5nIYY254mKfAEBCB21cZ8oqgxIAKTDCkipBybJJhac43i3RWPOcnZ5M4hNMDa8ev1cIcq1eXVm2OTemTDJ3lBx3qBrufJWlOPtf4/s2048/10-apa-netmarble.png"&gt;
        &lt;img border="0" data-original-height="927" data-original-width="2048" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXGPxTZM0bd8sxH3SEwYHj3g9CbxX4GDvHspGtd62G73qd26AbHC3L0s6MDtehL7NGufXNTTFd2uzIZGT2e_x6phn5nIYY254mKfAEBCB21cZ8oqgxIAKTDCkipBybJJhac43i3RWPOcnZ5M4hNMDa8ev1cIcq1eXVm2OTemTDJ3lBx3qBrufJWlOPtf4/s16000/10-apa-netmarble.png" /&gt;
    &lt;/a&gt;
&lt;/div&gt;

&lt;p dir="ltr" style="text-align: center;"&gt;&lt;i&gt;Netmarble validating pre- and post-optimization performance changes using APA for their game: Seven Deadly Sins: Origin&lt;/i&gt;&lt;/p&gt;

&lt;h2&gt;Profiling model complexity in Google’s Filament engine&lt;/h2&gt;

&lt;p dir="ltr"&gt;Google has been improving the &lt;a href="https://github.com/google/filament"&gt;Filament&lt;/a&gt; glTF Viewer, our physically-based rendering engine.&lt;/p&gt;

&lt;p dir="ltr"&gt;We spent some time digging into the viewer with a variety of scenes, and showed how to use Android Performance Analyzer to identify scenes that are too complex for the GPU, and how to trim them down to hit a target 60FPS, by improving texture compression and optimizing geometry. Memory consumption was also reduced in this process.&lt;/p&gt;

&lt;p dir="ltr"&gt;You can read &lt;a href="https://developer.android.com/android-performance-analyzer/case-study/filament"&gt;our exploration of Filament here&lt;/a&gt;.&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
    &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjUKr2lKDLr23ls74Ybam0_4eFl8GbS85ASeWwXHXtdjWhMIAJAIhqxTpqRA27nCgkp5h6GnHO-KuMKqoBVVz4e7nMZzlOg9K9PsUQo5J2Z32Fzpee9oIkYqc6zGPn_P6YEXatp6uFWDj8qDGKMeRXt4tTQ-JlIQty53Y9m3_B9GIpHIYl_ZD0QkLmHN0/s803/11-apa-filament-02.png"&gt;
        &lt;img border="0" data-original-height="140" data-original-width="803" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjUKr2lKDLr23ls74Ybam0_4eFl8GbS85ASeWwXHXtdjWhMIAJAIhqxTpqRA27nCgkp5h6GnHO-KuMKqoBVVz4e7nMZzlOg9K9PsUQo5J2Z32Fzpee9oIkYqc6zGPn_P6YEXatp6uFWDj8qDGKMeRXt4tTQ-JlIQty53Y9m3_B9GIpHIYl_ZD0QkLmHN0/s16000/11-apa-filament-02.png" /&gt;
    &lt;/a&gt;
&lt;/div&gt;

&lt;p dir="ltr" style="text-align: center;"&gt;&lt;i&gt;Screenshot showing GPU wait time was reduced from 25ms to 20ms by introducing dynamic resolution and measuring it through APA&lt;/i&gt;&lt;/p&gt;

&lt;h3 style="text-align: left;"&gt;Try out the Android Performance Analyzer Beta today!&lt;/h3&gt;

&lt;p dir="ltr"&gt;The Android Performance Analyzer is available for you to try out and use today:&lt;/p&gt;

&lt;ul&gt;
    &lt;li dir="ltr"&gt;&lt;b&gt;Standalone profiler:&lt;/b&gt; &lt;a href="https://developer.android.com/android-performance-analyzer"&gt;https://developer.android.com/android-performance-analyzer&lt;/a&gt;&lt;/li&gt;
    &lt;li dir="ltr"&gt;&lt;b&gt;Android Studio Canary Build (Panda 4 canary builds and later):&lt;/b&gt; &lt;a href="https://developer.android.com/studio/preview"&gt;https://developer.android.com/studio/preview&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p dir="ltr"&gt;This is beta software, which means that you might run into an occasional bug – please report it to us if you find any (&lt;b&gt;Help Menu &amp;gt; Submit a bug report&lt;/b&gt;).&lt;/p&gt;

&lt;p dir="ltr"&gt;We’re excited to see how you use the new Android Performance Analyzer, and how it will help your project’s performance and reliability.&lt;/p&gt;Explore this announcement and all Google I/O 2026 updates on &lt;a href="https://io.google/2026/?utm_source=blogpost&amp;amp;utm_medium=pr&amp;amp;utm_campaign=devblogs&amp;amp;utm_content="&gt;io.google&lt;/a&gt;.</content><link href="http://android-developers.googleblog.com/feeds/3554893602659076566/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/introducing-android-performance-analyzer.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/3554893602659076566" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/3554893602659076566" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/introducing-android-performance-analyzer.html" rel="alternate" title="Introducing Android Performance Analyzer : The Next Evolution in Profiling for Android" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxS1tYMUG19t4HnNUi5WtkrChpK9woN_xp4qZ-7m_7tQ2G44hGdJiBlnqmrH8-DEJzW38y1_a3VZpbBFGOzkCIVFmx-1w6wvGNHr-50mFBRQVn8wO15vMn1AOnGq8sIh5hYkZuymf3QqlhpgNTYb03P7oxB2a_11ajqTDVkap57Z5IkhYIP0cL2uxF77U/s72-c/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-2501670917572435877</id><published>2026-05-19T02:30:00.000-07:00</published><updated>2026-05-19T14:53:47.273-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agent Skills"/><category scheme="http://www.blogger.com/atom/ns#" term="Agentic"/><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Android Studio"/><category scheme="http://www.blogger.com/atom/ns#" term="Developer Experience"/><category scheme="http://www.blogger.com/atom/ns#" term="Developer Tools"/><category scheme="http://www.blogger.com/atom/ns#" term="Google I/O"/><title type="text">Android Studio I/O Edition: What’s new in Android Developer tools</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXbArc8uYjR_xif9mrBn8gjLuBpxiMQXe0VnGiKlQW99zgHaRGSr8sYZIjDNGXoPsDgBBu2-ZqqVNQVFEbRWMTtEfmzCsrkMJFFmgcj-f7c88znwH5m5k_7ZodNqqGwnv25mhOojBly6mKpMTJZrVw4R01w5rvrPAitbrZdgbJutnSYo35_e92tGmq_Kw/s2048/GoogleForDevelopers-AndroidCombo-StrapiMetacard-2048x1323.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXbArc8uYjR_xif9mrBn8gjLuBpxiMQXe0VnGiKlQW99zgHaRGSr8sYZIjDNGXoPsDgBBu2-ZqqVNQVFEbRWMTtEfmzCsrkMJFFmgcj-f7c88znwH5m5k_7ZodNqqGwnv25mhOojBly6mKpMTJZrVw4R01w5rvrPAitbrZdgbJutnSYo35_e92tGmq_Kw/s2048/GoogleForDevelopers-AndroidCombo-StrapiMetacard-2048x1323.png" style="display: none;" /&gt;




&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;i&gt;Posted by Matthew Warner, Google Product Manager&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivxTAgHAZtFEitAiV4WmR5rMqAm6xGbxjBPClAhWLtjggt-QUgH5wiYAnuDKmzlZs5jJeCVXPKb680zwP4AbtRu7XGzsXIaIpXT7y6CgbmchoN6HrjAMblpR1kZ7EMtTOla6_JnakKFU13Y9C6J1a5086s0UUNkwqlf9afnrX2mc491BpyGeVwHhDC7gM/s4209/GoogleForDevelopers-AndroidCombo-Blogger-4209x1253.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivxTAgHAZtFEitAiV4WmR5rMqAm6xGbxjBPClAhWLtjggt-QUgH5wiYAnuDKmzlZs5jJeCVXPKb680zwP4AbtRu7XGzsXIaIpXT7y6CgbmchoN6HrjAMblpR1kZ7EMtTOla6_JnakKFU13Y9C6J1a5086s0UUNkwqlf9afnrX2mc491BpyGeVwHhDC7gM/s16000/GoogleForDevelopers-AndroidCombo-Blogger-4209x1253.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;p data-path-to-node="4"&gt;This year at Google I/O we are going beyond iterative changes, towards a fundamental shift in how apps are built. Our newest tools are built for the agentic era with features that boost productivity for you as an Android developer AND supercharge the AI agents you deploy in your codebase. So, whether you are building exclusively with AI or you prefer being the architect of every line of code, our tools will keep you ahead of the curve.&lt;/p&gt;&lt;p data-path-to-node="5"&gt;As we move from "AI-assisted" to "Agentic" development, we’re making it easier than ever to turn a spark of an idea into a high-quality production app with significantly less developer effort.&lt;/p&gt;&lt;p data-path-to-node="6"&gt;So what’s new with Android developer tools? We will cover 3 main areas in this blog:&lt;/p&gt;&lt;ul data-path-to-node="7"&gt;&lt;li&gt;&lt;p data-path-to-node="7,0,0"&gt;&lt;b data-index-in-node="0" data-path-to-node="7,0,0"&gt;Let your agent handle it:&lt;/b&gt; Whatever development task you are working on, the Android Studio agent can help: from planning the app architecture and design, to writing code, to unit testing and bug fixing.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node="7,1,0"&gt;&lt;b data-index-in-node="0" data-path-to-node="7,1,0"&gt;Any AI provider, anywhere you build:&lt;/b&gt; In Android Studio, you can use any model and we even help guide you to the best performing ones. Choose any of the top remote models from Google, Anthropic, OpenAI, or if you need to run locally - Gemma 4 is our most capable and efficient local model! And with Android CLI, you can build Android apps faster and easier using the agents and developer environments of your choice.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-path-to-node="7,2,0"&gt;&lt;b data-index-in-node="0" data-path-to-node="7,2,0"&gt;As always, performance and quality remain top priorities:&lt;/b&gt; We continue to invest in the Android developer tools you love: from the Emulator, to Profilers, performance analyzers, and more!&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="text-align: left;"&gt;1: Let your agent handle it&lt;/h3&gt;&lt;h2 style="text-align: left;"&gt;Agent skills&lt;/h2&gt;&lt;p data-path-to-node="9"&gt;Android Studio now supports &lt;a href="https://www.youtube.com/watch?v=AhrXPjk22OE&amp;amp;t=148s"&gt;Agent Skills&lt;/a&gt;, modular instruction sets that ground LLMs in specialized workflows and domain-specific knowledge. By adding skills to your project, you can teach the agent to follow specific best practices, architecture patterns, or library workflows. This enables more accurate, context-aware code generation and automated skill activation for an appropriate task, ensuring the agent acts as an expert. We’ve bundled many of the top Android and Firebase agent skills in the latest Android Studio &lt;a href="https://developer.android.com/studio/preview"&gt;Canary&lt;/a&gt; build, so you can skip straight to building!&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" data-original-height="737" data-original-width="1173" height="635" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwS8vRoIdSv9m73G6cXPNPAm4MMpSmq51crNgnfYR3rsxJuG9lHIMMG5USqXvTwdlSxyO7hgyQWgaCtL2fU6Jo9LHhFxl7_PMvzwHsRIGBD9qGCCGUkUP7l83BAyPydIgXuvTkh0hi0RRq6ff9xaqHQupYpkrBBAKMHNWcD19Gqtk4OBKvqaAvyaIf9Hk/w1010-h635/Agent_Skills.png" width="1010" /&gt;&lt;i&gt;Skills in Agent Mode&lt;/i&gt;&lt;/div&gt;&lt;p data-path-to-node="11"&gt;You can create your own skill, or use &lt;a href="https://developer.android.com/tools/agents/android-skills#android-cli"&gt;Android CLI&lt;/a&gt; to install our &lt;a href="https://github.com/android/skills"&gt;official skills&lt;/a&gt; - a repository that covers some of the most common workflows that some Android developers and LLMs may struggle with. They help models better understand and execute specific patterns that follow our best practices and guidance on Android development, such as XML to Compose migration, Edge-to-edge, Navigation 3, and more. You can even build for Android XR, starting with a beautiful Display Glasses app with Jetpack Compose &lt;a href="https://github.com/android/skills/tree/main/xr/display-glasses-with-jetpack-compose-glimmer"&gt;Glimmer&lt;/a&gt;. Official Android skills are automatically bundled with the latest Android Studio so the Agent is ready to build!&lt;/p&gt;&lt;h2 style="text-align: left;"&gt;Build full-stack apps with Firebase in Agent Mode&lt;/h2&gt;&lt;p data-path-to-node="12"&gt;Firebase services like Auth and Firestore databases can now be &lt;a href="https://firebase.blog/posts/2026/05/google-io-2026-announcements"&gt;enabled directly within Agent Mode&lt;/a&gt; in Android Studio using the &lt;a href="https://firebase.google.com/docs/ai-assistance/agent-skills"&gt;Agent Skills for Firebase&lt;/a&gt;. Your agent will be able to complete Firebase integration and configure backend services. This integration empowers you to build robust, full-stack Android applications without ever leaving your IDE!&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieSMECM2HJp1mge1O9wlsU59a0ooBN0PSE4doyzXes-1aoUqeSkVvpWY41NOWSpOh24KJxKS_H_a4O4OznCHYG36oQn82zGDodnQmuOAN6pycn4Chjdye97cdVoHu8VFsa9FyAHuTQwKdNUCYj35sPw8Ish7Ym4f3aaYudcgSj6fOJkBWCQG7HfZ3l1CA/w640-h544/Firebase_FullStack_apps.png" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i data-index-in-node="0" data-path-to-node="13"&gt;Building a full-stack app with Firebase via Agent Mode&lt;/i&gt;&lt;/div&gt;&lt;h2 style="text-align: left;"&gt;Parallel conversations&lt;/h2&gt;&lt;p data-path-to-node="14"&gt;You can now run multiple conversations with Agent Mode in parallel. In one conversation, run tests and while you are waiting, you can kick off planning mode for a new feature in your app while using a third conversation thread to write documentation for your app. These improvements will save you time and improve your productivity.&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLhvo1donWGB4i4n7HPdAG0mNVDgD6Chh11oOlHmQYwAFZeI5oSDVLr3WfqLQYQHlfb4cfJrbK2IbJJj05p3In-T6tQVImx752J-orPI0TTv4AbWWRq05-sHGN0BC5kxHzxfFBZw-f9Ho3j8qOKS3VQkA-OzUOTEl9Eq1zHOykm9HHl4zgNJxb0Sk6MHM/w640-h360/parallel_threads.png" width="640" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i data-index-in-node="0" data-path-to-node="15"&gt;Parallel conversations in Agent Mode&lt;/i&gt;&lt;/div&gt;&lt;h2 style="text-align: left;"&gt;A more capable New Project Agent&lt;/h2&gt;&lt;p data-path-to-node="16"&gt;Android Studio's New Project Agent has evolved into a powerful full-stack development tool, utilizing a multi-step execution plan and an autonomous "generation loop" that self-corrects build errors and configures dependencies across multiple files. This advanced capability is significantly amplified by its new integration with Firebase Agent Skills, allowing developers to seamlessly build, debug, and deploy complete full-stack applications directly from a single prompt to final production.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLI8cRennji2DwS64SNtOBmldfD1Gzg4qhngYU1-CEp_8cteH9dsxRqH6R4Feied1b2D3KUZdOg5jbzwNfOjWXKLCrQC3ss4xWbBf6RvWtLpGVnZwQSr4j2A_zhjtgdr-e5ZdlF8E1fn9_5SI44tsUtDYk5V_yad17JTwRoDsM1yvDAZeA5NOrpM8hN0Y/w640-h482/NewProjectAgent.png" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i data-index-in-node="0" data-path-to-node="17"&gt;Building an app with New Project Agent&lt;/i&gt;&lt;/div&gt;&lt;p data-path-to-node="18"&gt;Additionally, it now offers support for large screens. You can scaffold your project with layouts, navigation, and components optimized for tablets, foldables, and laptop devices from the get-go. It has additional logic to test your app on large-screen emulators if you have one enabled. Simply configure the required device in the Android Emulator and the Agent can test it out!&lt;/p&gt;&lt;p data-path-to-node="19"&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGILDd9AAoBaSbXhKxeQunePhTgxB5A7glm0Vm_AhSL8PZIS2IAZUe_DE3TxKWGYGvw_KlRdzl2QpfZNKY96wdCvmsk-ly1jr756TutoQQvkJaqJ-4zU_4b5y5rAZUfHBFYzw-3vC-_jjolUIB7xeeR9ONmjrxznFcNRWnSTw0XxWEmGkNN9u035U-c3U/w600-h640/LargeFormFactors_NPA.png" /&gt;&lt;/div&gt;&lt;i data-index-in-node="0" data-path-to-node="19"&gt;&lt;div style="text-align: center;"&gt;&lt;i data-index-in-node="0" data-path-to-node="19"&gt;Build large screen apps for foldables and tablet devices&lt;/i&gt;&lt;/div&gt;&lt;/i&gt;&lt;p&gt;&lt;/p&gt;&lt;h3 style="text-align: left;"&gt;2: Any AI provider, anywhere you build&lt;/h3&gt;&lt;h2 style="text-align: left;"&gt;Build Android apps in Google AI Studio&lt;/h2&gt;&lt;p data-path-to-node="21"&gt;Google AI Studio now features &lt;a href="http://android-developers.googleblog.com/2026/05/build-android-apps-google-ai-studio.html"&gt;full Android app development capabilities&lt;/a&gt;. Users can generate new applications, preview them instantly via an embedded Android Emulator, and deploy them directly to physical devices using ADB over USB.&amp;nbsp;Additionally, developers can publish straight to Google Play; AI Studio handles the app record creation, bundles the package, and uploads it to an internal testing track. For advanced development and production readiness, projects can be exported as a ZIP file and opened seamlessly in Android Studio.&lt;span id="docs-internal-guid-688de258-7fff-830a-6087-af5bf7af1c1f"&gt;&lt;span face="&amp;quot;Google Sans Text&amp;quot;, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;To get started, visit &lt;a href="https://ai.dev/apps?features=build_android_app"&gt;Google AI Studio&lt;/a&gt; today and start building! &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzCaGXl9R-fjAe4dMcQ1tru79qlzXs219aRXodfcrOfVkN7HPpgdtw-6sgvImeGZnyDcBzvakNujlp0F1tHmuhO9_YK8PeT3ZmPIiZbNDMMQ2GIs3vq2OsEzR-k6Inurpz9OXs2dgFW2XglgHdUp81Hw4Tq6NPq9b5J0XrwLBLUQ2yRdtpFROOcHvOtso/s16000/Build_Android_apps_AI_Studio.png" /&gt;&lt;i&gt;Google AI Studio build mode with Android framework&lt;/i&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style="text-align: left;"&gt;Android CLI helps you build faster, more efficiently with any agent&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;p data-path-to-node="21"&gt;Android CLI enables you to build apps using any agent, LLM, and tool of your choice. Android CLI is &lt;a href="https://android-developers.googleblog.com/2026/04/build-android-apps-3x-faster-using-any-agent.html"&gt;designed to help AI agents build faster&lt;/a&gt;, and use less tokens when compared to only using generic LLM tools. By grounding agents with Android Knowledge Base and Android skills, you can now have your agent of choice follow the latest best practices across any coding environment.&lt;/p&gt;&lt;p data-path-to-node="21"&gt;&lt;span id="docs-internal-guid-4bcfc6c5-7fff-0f76-413e-989b21bc4603"&gt;&lt;/span&gt;&lt;/p&gt;Additionally, when using the latest Canary version of Android Studio Quail, Android CLI enables your agent to leverage powerful capabilities of the IDE, such as analyzing files for issues or finding symbol declarations. Google Antigravity 2.0 now offers official support for Android development with &lt;a href="http://d.android.com/tools/agents"&gt;Android CLI&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOBP_v23fpRI_MIQ-KYRVNX843-tU4xXYl9eo01A6Lws7uNTsZbDtnHFU55fj44MStZP9x2TTbStQlEPSobKsISWTJWHaps8sJE61hUedvgZIKTKcbbuok_9Z5JhT-YNeVIvFpNNDBvk71ey0ks1pMgjKJBkxBgfID7fD-B4RnGdAHDK-0JjfJRxlwWAM/w640-h512/AndroidCLI_2.png" /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Android CLI enables any agent with the tools and knowledge to build for Android.&lt;/i&gt;&lt;/div&gt;&lt;h2 style="text-align: left;"&gt;Google AI plan&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;You can now use your &lt;a href="https://one.google.com/about/google-ai-plans/"&gt;Google AI Pro or Ultra&lt;/a&gt; plan to get access to dedicated capacity and higher rate limits for Gemini in Android Studio.&amp;nbsp;This is especially helpful for long agentic Android development sessions, which can require using more tokens. Android Studio detects your subscription automatically when you log in with your Google account.&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu8BD3qlOhWGyEYkzXOthlke-fv8zI_jiwHpSImXF8gqOq9SryaZH0sD_tGJn5-97h-BJ8y2HnvYGLf8Qm41z64pv-NnEx26O781oek0F1J_W5O7kdCZzNMYpNlz1Yml5enqWA2IufP2F_ceCfj_O0KuZZun4ZQzgYAVOoCCCbe9GjnEw_VnwQELT606k/w640-h260/Google_AI_Plan.png" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Use your Google AI plan in Agent Mode&lt;/i&gt;&lt;/div&gt;&lt;h2 style="text-align: left;"&gt;Gemma 4 for local code assist and on-device AI&lt;/h2&gt;&lt;div&gt;&lt;span id="docs-internal-guid-d48b8da7-7fff-2a28-92bb-a830e74574d6"&gt;&lt;a href="https://developer.android.com/blog/posts/android-studio-supports-gemma-4-our-most-capable-local-model-for-agentic-coding"&gt;Gemma 4&lt;/a&gt;&lt;/span&gt;&lt;span&gt; is a state-of-the-art local model trained for Android development. It’s our most efficient local model and is capable of complex multi-step agentic coding in Android Studio. It’s ideal for developers who require data privacy, offline access, or have run into quota issues with other models.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" class="BLOG_video_class" height="325" src="https://www.youtube.com/embed/4iPn1qRVsNY" width="482" youtube-src-id="4iPn1qRVsNY"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;And now in the latest Canary build, you can download and run Gemma 4 directly from the IDE, without needing to set up an external server.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="313" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2MT5NP0V0OWJx1qVPG_AmnRCT9EZZFlQBWWj1R44FeG-MdldCXlXwFhJgGdFPf-d3-dZ5O8wtMWzyiWg-67PY-U9OvVRKFyE-PV_4h-HUg5a8t796SXXoLQV0I1F7zpX7mxO1ItNUc438mqjN-0a79UUv3jUswGgkQx4qF1IpieKRbRt8D8t61czwtd4/w640-h313/Gemma4_Default_Model_Selector.png" width="640" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="background-color: white; color: #202124; font-size: 12pt; font-style: italic; white-space: pre-wrap;"&gt;Model selector in Agent Mode&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2 style="text-align: left;"&gt;Bring your own model to Android Studio&lt;/h2&gt;&lt;div&gt;Android Studio allows developers to bring any model they choose into the IDE for agentic AI assistance. Power your workflow with models like Gemini, GPT, and Claude or use a local model like Gemma 4. This flexibility offers developers greater control over performance, privacy, and cost.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9jSXv8_V980CcjalyJBEIjMT0PtwRn18KVQ9zl8k9eJuZeX-9wQnQcDgM9eAjGGX3Vqo_BRgPLYKYeWbsiXiPdQ-7OZooyL6jAklLvLF6Cf-xxlYxPZ7YRSnd59RJK1hwWQlVJtuPHulnc_7O5znSHiuqbdV62Llso_j9UqIuRJjPzlAp9nPsh6gbF90/w640-h456/BYOM.png" /&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;div style="text-align: center;"&gt;&lt;span face="Roboto, sans-serif" style="background-color: white; color: #202124; font-size: 12pt; font-style: italic; white-space: pre-wrap;"&gt;Settings, Model Provider&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;h2 style="text-align: left;"&gt;Android Bench highlights the top models&lt;/h2&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;Earlier this year we launched Android Bench, the benchmark and leaderboard designed to evaluate how effectively LLMs handle real-world Android development tasks. The goal is to accelerate AI improvements, leading to more helpful models for you to use for AI assistance, which will lead to better quality apps for Android users. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;You asked us to evaluate open models, so we added them to &lt;a href="http://d.android.com/bench"&gt;the leaderboard&lt;/a&gt; to help you see how LLMs with additional privacy and offline access measure up. We are also working on significantly increasing the difficulty of challenges we’re giving LLMs, to continue encouraging improvements. This includes creating long running tasks, which take a typical Android engineer multiple days to complete.  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLeWy2ZSD5oHNt0A1Q_Dj1lRfuFbuYoNT9E33ozOxnWlT69CvTDwSJHpjoJgQJJjOtG5vS-vp7RrjAYA8F74b45ejKYkeRf2tNqSsTGStyEMP6b-5WIbvIDvtviU0wpdyfvpl5jdPwO1fjVvIdjR092iKDx9OaVAPYazaEvHK6brzTpjSgCLC1lzt4uk8/s16000/Android_Bench_update.png" /&gt;&lt;/div&gt;&lt;span&gt;&lt;i&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Latest results as of May 18th 2026, check &lt;a href="https://developer.android.com/bench"&gt;here&lt;/a&gt; for updates&lt;/i&gt;&lt;/div&gt;&lt;/i&gt;&lt;/span&gt;&lt;h3 style="text-align: left;"&gt;3: As always, performance and quality remain top priorities:&lt;/h3&gt;&lt;div&gt;&lt;h2 style="text-align: left;"&gt;Test multi-device interactions with the Android Emulator&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span face="&amp;quot;Google Sans Text&amp;quot;, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;The Android Emulator now features a new networking stack that enables zero-configuration, peer-to-peer connectivity between multiple virtual devices on the same host machine. &lt;/span&gt;&lt;a href="https://android-developers.googleblog.com/2026/04/Test-Multi-Device-Interactions-with-the-Android-Emulator.html" style="text-decoration: none;"&gt;&lt;span face="&amp;quot;Google Sans Text&amp;quot;, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;This update&lt;/span&gt;&lt;/a&gt;&lt;span face="&amp;quot;Google Sans Text&amp;quot;, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; eliminates the need for manual port forwarding, allowing developers to easily test multi-device scenarios like local multiplayer gaming, file sharing, and companion app pairing. By creating a shared virtual network backplane, the Android Emulator provides a more stable and consistent environment for building complex, interconnected app experiences across different form factors.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;div&gt;&lt;span&gt;&lt;span face="&amp;quot;Google Sans Text&amp;quot;, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-e3gn-lfvs2JxvwLwDlabRhFcvonR_qeZ_aMJvMobF8_hmeCp38CwbgNo9vvtUDV9FO7wWB54HH3p74wP56PBlOX_VWOuC4QNLjbc-KTz4EXRH06c5o5R3McVOMVTA-G-QO2GhkWAwDVCpdX27WKXmJ8NHcnLyadsJZ6f2ujsz1OEOvjBVswXkX3Fdrk/w640-h309/Emulator.jpg" /&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Multi -device testing with the Android Emulator&lt;/i&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;h2 style="text-align: left;"&gt;Android Debug Bridge Wi-Fi 2.0&lt;/h2&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span face="&amp;quot;Google Sans Text&amp;quot;, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;ADB Wi-Fi 2.0 offers significantly more reliable wireless debugging. With the latest ADB command line tool from Android Platform Tools v37 and an Android 17 device, you can now change networks, shut down your machine, and go about your typical day and your devices will stay connected. Additionally, devices with wireless debugging enabled will automatically show in Android Studio’s Device Manager, streaming the pairing process and making it easier than ever to connect Android phones, watches, and more. &lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span face="&amp;quot;Google Sans Text&amp;quot;, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8qbyUBWauhtpnjuKhDmYySU0fX3NyYoG1g_F9zTIIN7fbAEMbtBLLoKZMolfNklL-cS97enhQidl04pwRA04uGJnRW-Zosc_ho6XzWhC6zU6SdNX77G_UUIxYhR9Q5KTxKpN_7iGZLoTbQrPNOMO0Of0E1z6_ehNlsYo5PjHLxswh2L_FDkHZ-6iB7TE/w640-h350/ADB_wifi.png" /&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Pair devices with Wi-Fi&lt;/i&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;h2 style="text-align: left;"&gt;Android Studio now lets you publish to Google Play for testing&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span face="&amp;quot;Google Sans&amp;quot;, sans-serif" style="color: #1f1f1f; font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Android Studio now gives you the ability to upload new releases of your app directly to Google Play Console test tracks. You can do this by selecting a new option to continue to “Publish for Testing” at the end of the Generate Signed App Bundle flow. This integration supports uploading an initial release of a brand-new app to Play Console’s internal test track. You can also use this feature to upload releases to existing apps to test tracks. You need to be registered on Google Play Console to take advantage of this functionality. Read the &lt;/span&gt;&lt;a href="https://goo.gle/play-io26" style="text-decoration: none;"&gt;&lt;span face="&amp;quot;Google Sans&amp;quot;, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;‘What’s new in Google Play’ blog&lt;/span&gt;&lt;/a&gt;&lt;span face="&amp;quot;Google Sans&amp;quot;, sans-serif" style="color: #1f1f1f; font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; to learn about all the updates from Play at I/O.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;div&gt;&lt;span&gt;&lt;span face="&amp;quot;Google Sans&amp;quot;, sans-serif" style="color: #1f1f1f; font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXNi5kckR70hHp8e06VDhb1DPEx9gJOi4aFKx4NweXBdEUXdS1GMpIvYVhEts4FkmqvVi0ta29vn_R_GV2ungmrM3OTOjoor4RJt3al0UauujgzOEv_3bA_6vQcxkIAHEwrIIxNhlQcJmXEEGpclbUXgICyx6oQWYgcDkhjpObYsm2V4hZSUijqdLUnlY/w400-h318/upload_to_play.png" /&gt;&lt;/div&gt;&lt;span&gt;&lt;span id="docs-internal-guid-a8362392-7fff-5fea-bdbd-a1ae1dbf4b06"&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"&gt;&lt;span face="Roboto, sans-serif" style="background-color: white; color: #202124; font-size: 12pt; font-style: italic; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Upload App Bundle to Google Play&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;h2 style="text-align: left;"&gt;Android developer verification support&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;span id="docs-internal-guid-8fbdc2ac-7fff-797a-4ab2-2f55875fa6e5"&gt;&lt;span face="&amp;quot;Google Sans&amp;quot;, sans-serif" style="color: #1f1f1f; font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;You can now see your app's registration status right in Android Studio when you generate a signed App Bundle or APK. Seeing this information in Android Studio enables you to address registration issues early and ensure your apps are ready before the &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;a href="https://developer.android.com/developer-verification" style="text-decoration: none;"&gt;&lt;span face="&amp;quot;Google Sans&amp;quot;, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;verification requirement&lt;/span&gt;&lt;/a&gt;&lt;span face="&amp;quot;Google Sans&amp;quot;, sans-serif" style="color: #1f1f1f; font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; goes into effect for certified Android devices starting in September 2026.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;div&gt;&lt;span&gt;&lt;span face="&amp;quot;Google Sans&amp;quot;, sans-serif" style="color: #1f1f1f; font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg76F9k0kCdCKAmVy4QWjnA_CLeS2dvkv5RSyOUNDqiGKJC3yQbyu2FS57us-97hpw9UhjmwcaJNkGatUWJBuLmtZIz46zKk8vUInsx4AUddyHo-K-pmPmmOOoc_Q29w-B1Ct_hviCjNK16bti1v3VOxJ_gzBzPo9mVZYABqQUh_55_uBcOW6uJFJsU3CU/w400-h363/DeveloperVerificationAndroidStudio.png" /&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span id="docs-internal-guid-3b7ea5c9-7fff-f506-c7e3-de4e1e569d08"&gt;&lt;span face="Roboto, sans-serif" style="background-color: white; color: #202124; font-size: 12pt; font-style: italic; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;App registration status with Android developer verification&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;h2 style="text-align: left;"&gt;Memory leak detection with LeakCanary&lt;/h2&gt;&lt;div class="separator" style="clear: both;"&gt;Memory leaks in Android occur when your code holds onto an object's reference long after its life cycle has ended. This prevents the Garbage Collector (GC) from reclaiming that memory, eventually leading to sluggish performance or OutOfMemoryError (OOM).&lt;br /&gt;&lt;br /&gt;The Android Studio &lt;a href="https://square.github.io/leakcanary/"&gt;LeakCanary&lt;/a&gt; profiler task significantly enhances developer productivity by enabling the analysis and inspection of memory leak traces directly on the desktop development environment rather than on the mobile device. Furthermore, Android Studio streamlines troubleshooting by providing tools like “Go to declaration” to map the leak analysis directly to the codebase, allowing developers to quickly locate and resolve memory leaks. &lt;br /&gt;&lt;br /&gt;Starting from the Android Studio Quail 1 release, you can now also request Gemini to review the memory leak for you using the “Fix with Agent” button.&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt; text-align: left;"&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy-yv_dk4bhEWKSZVfllZpQ59Jvkdq2GKE1grzvnVf2tblE4EwuP7uf8Oq_5Gd51wgTbsiYbsRy00XbO6vw-I3cjXmHrsvuYjYvhIVYE55w3WoFwz5nYR8AQClL8-5428hY4-FuPoEeNxvVEoXJTw0Fmwz6rUT9LRWDiOtiEVkz709UqbvUYpoGGHj2Oc/w640-h328/LeakCanary.png" /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span id="docs-internal-guid-3061175f-7fff-8572-9883-ca0035204886"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="background-color: white; color: #202124; font-size: 12pt; font-style: italic; white-space: pre-wrap;"&gt;Review memory leaks identified via LeakCanary through the “Fix with Agent” button&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;h2 style="text-align: left;"&gt;Android Performance Analyzer (APA)&lt;/h2&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt; text-align: left;"&gt;&lt;span id="docs-internal-guid-908dc2dd-7fff-bde9-26a7-35bfb358eafa"&gt;&lt;a href="https://developer.android.com/android-performance-analyzer" style="text-decoration: none;"&gt;&lt;span face="&amp;quot;Google Sans&amp;quot;, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;Android Performance Analyzer &lt;/span&gt;&lt;/a&gt;&lt;span face="&amp;quot;Google Sans&amp;quot;, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;(APA) is the next generation of performance profiler for Android and provides a cohesive analysis of CPU, GPU, memory, and power usage for your apps and games running on Android 12+ devices. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 14.6667px; white-space-collapse: preserve;"&gt;APA is engineered for reliability and performance with  trace rendering speeds which are up to &lt;b&gt;26x faster&lt;/b&gt; from previous tooling.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGbki0VR_5UrPeUTJ54tpZlV9Bz3BhE5x0z7lHlfdAy3v8vAE2AnW-KdjKblcVviq-QnKtdOFsiBaOA3VwRzsqGMEiXbAiaKlk7jgsqVRK69ETmY-8ZDpDxx5FUJ1dHuI-I6G_4v1vtk_vj8kky9hYU5TW5D3kSJBPuNBKjTtbfkiKN8YUqGIhiMJrcJI/w640-h402/square_APA.png" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;i&gt;Android Performance Analyzer (APA) running in Android Studio showing two traces side by side&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt; text-align: left;"&gt;&lt;span id="docs-internal-guid-16a1dd61-7fff-6171-6a0b-0ae5d5e2b608"&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;APA integrates natively with AI agents and offers two new skills: &lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;Perfetto SQL skill&lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; and the &lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;Perfetto Analysis skill&lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;, which helps with questions like "&lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;Why is my app startup slow?&lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt;"&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdzC00ZQKQ5sKI9yVPJVauTkdYJHmSoN1_uz2mqlohtKJU2ca5mi3UWRSllyJ3uOs5XYWw1uBpdETiGXUnVKbcKUnedeTqNC8hLl2v118x2vJzt9Gyte_hAsBOvsctYUmf3TK0kuoEs2N-RxR4-YHzgddE1k-VT14G-KZRJoS3mtfxmeiVn22bxF0kJD4/w640-h522/Perf_analyzer_Agent_Chat.png" /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Analysis of traces using Perfetto Analysis skill&lt;/i&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style="text-align: left;"&gt;R8 Configuration Analyzer &lt;/h2&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://developer.android.com/topic/performance/app-optimization/enable-app-optimization"&gt;R8&lt;/a&gt; is one of the best ways to improve your app’s performance and reduce memory footprint. The performance benefits you can get from R8  are directly correlated to how much of your codebase R8 is able to optimize. We’ve introduced a new tool to help you to unlock the maximum optimization from R8 – the R8 Configuration Analyzer. It provides insights into R8 configuration quality and how your keep rules impact your app. We have also introduced three scores that show how much of your codebase is available for optimization, obfuscation, and shrinking.&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;h2 style="text-align: left;"&gt;Suggested fixes for crashes with Agent integration in AQ&lt;b&gt;&lt;span style="font-size: medium;"&gt;I&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;The &lt;a href="https://developer.android.com/studio/debug/app-quality-insights"&gt;App Quality Insights&lt;/a&gt; tool window is now integrated with the AI agent to analyze crash data along with your source code to provide detailed explanations and suggest potential fixes. After selecting a crash in the App Quality Insights tool window, navigate to the Insights tab and click “See more” to see a detailed explanation of the crash. Click “Fix with AI” to have the agent suggest code changes that you can review and accept.&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt; text-align: left;"&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjIlFWgbD7rbLctO1-4jGdRP87SrD5T1BnPySRTpiRIU75ezudaLBtYFH2HyskK_E-JB1WHQn8ixoy9jdeozVRFM1ARogUzLysBrco2l-uGBgVjAm_n1DPhKEZzwg9eH6s2G-fQb1vavpnNGnNlUPwhsmnd7vW_rtAEbPm74txiFJTM9iLLcFNPw2l6jU/w640-h210/aqi-agent-integration.png" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;App Quality Insights and Fix with AI&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;h3 style="text-align: left;"&gt;Get started&lt;/h3&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;Android Studio is closing the gap between ideation and implementation. With powerful tools built for agentic development, it’s never been easier to build and ship high-quality Android apps.&lt;br /&gt;&lt;br /&gt;Download the latest &lt;a href="https://developer.android.com/studio/preview"&gt;Android Studio Quail preview build&lt;/a&gt; and try these new features. As always, your feedback is crucial to us. Check known issues, report bugs, and be part of our vibrant community on &lt;a href="https://www.linkedin.com/showcase/androiddev/posts/?feedView=all"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://www.youtube.com/c/AndroidDevelopers/videos"&gt;YouTube&lt;/a&gt;, or &lt;a href="https://x.com/androidstudio"&gt;X&lt;/a&gt;. Happy coding!&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 12pt; margin-top: 12pt; text-align: left;"&gt;&lt;span face="&amp;quot;Google Sans&amp;quot;, sans-serif" style="color: #1f1f1f; font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/p&gt;Explore this announcement and all Google I/O 2026 updates on &lt;a href="https://io.google/2026/?utm_source=blogpost&amp;amp;utm_medium=pr&amp;amp;utm_campaign=devblogs&amp;amp;utm_content="&gt;io.google&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link href="http://android-developers.googleblog.com/feeds/2501670917572435877/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/whats-new-android-developer-tools.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/2501670917572435877" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/2501670917572435877" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/whats-new-android-developer-tools.html" rel="alternate" title="Android Studio I/O Edition: What’s new in Android Developer tools" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXbArc8uYjR_xif9mrBn8gjLuBpxiMQXe0VnGiKlQW99zgHaRGSr8sYZIjDNGXoPsDgBBu2-ZqqVNQVFEbRWMTtEfmzCsrkMJFFmgcj-f7c88znwH5m5k_7ZodNqqGwnv25mhOojBly6mKpMTJZrVw4R01w5rvrPAitbrZdgbJutnSYo35_e92tGmq_Kw/s72-c/GoogleForDevelopers-AndroidCombo-StrapiMetacard-2048x1323.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-2868731995222527799</id><published>2026-05-19T02:00:00.000-07:00</published><updated>2026-05-19T11:06:02.389-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Jetpack Compose"/><title type="text">Android UI Development is Compose First</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeAAKGvcISwZB1rAtP_MUJKvsLndh8bMp7dWt_R_FEVpJIQ_lLtgfdF-4lv-M_A7MmzpcYWAivrE97yOzM_BnYsl_9z3k9htmzgWE6jgDAEVRr_Ze1USCBTZbHQGv9AHbu9G1O0Ligkl3JJjbfYG3ZHpynfW4ZSBQuzvlu5IYqL5HmCpvDixYuTLIn9mI/s2469/Compose%20first%20Meta.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeAAKGvcISwZB1rAtP_MUJKvsLndh8bMp7dWt_R_FEVpJIQ_lLtgfdF-4lv-M_A7MmzpcYWAivrE97yOzM_BnYsl_9z3k9htmzgWE6jgDAEVRr_Ze1USCBTZbHQGv9AHbu9G1O0Ligkl3JJjbfYG3ZHpynfW4ZSBQuzvlu5IYqL5HmCpvDixYuTLIn9mI/s2469/Compose%20first%20Meta.png" style="display: none;" /&gt;



&lt;name content="IMG" twitter:image=""&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;i&gt;Posted by Nick Butcher, Product Manager&lt;/i&gt;&lt;/div&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwurx_En2UJz2gISQ0Gmi_qWVLOalzCmbskB1AfGhoFsZ9riDfcX6hE0lIdMAxkOkcjgPpa_2dGY0pzUXwSKAq4_fnTiukcOFaZRonMEiFKRr79JOS7U9nn6_41owsU4etOb2Hjsj3c3Z6Z2_8lzomDjMuuN9ry-k48jFpfeI3bkGlj96DSQG5cQEkO64/s8583/Compose%20first%20blog.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2601" data-original-width="8583" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwurx_En2UJz2gISQ0Gmi_qWVLOalzCmbskB1AfGhoFsZ9riDfcX6hE0lIdMAxkOkcjgPpa_2dGY0pzUXwSKAq4_fnTiukcOFaZRonMEiFKRr79JOS7U9nn6_41owsU4etOb2Hjsj3c3Z6Z2_8lzomDjMuuN9ry-k48jFpfeI3bkGlj96DSQG5cQEkO64/s16000/Compose%20first%20blog.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div&gt;In the almost-5-years since Jetpack Compose &lt;a href="https://android-developers.googleblog.com/2021/07/jetpack-compose-announcement.html"&gt;launched,&lt;/a&gt; we've invested in bringing you all the features, performance and tools that you need to build amazing UIs across the variety of Android devices.&amp;nbsp;Compose helps you to build beautiful, adaptive UIs that meet the demands of modern UI design.&lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;Rich feature set:&amp;nbsp;&lt;/b&gt;With a powerful library of layouts, input, graphics, animation APIs, and the latest Material Design components, Compose empowers you to build anything.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Highly performant:&amp;nbsp;&lt;/b&gt;Out of the box, Compose offers native performance, delivering a delightful experience to your users.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Adaptive:&lt;/b&gt; Compose offers the easiest way to build adaptive apps that work across the range of Android form factors.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Productive: &lt;/b&gt;With powerful tools like Previews and Live Edit and the full expressiveness of Kotlin, teams tell us that they move much faster when building with Jetpack Compose, reducing the time to market.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Compose has matured into the standard for Android UI development—we believe that &lt;b&gt;all Android UI should be built with Compose&lt;/b&gt;; we call this going &lt;a href="http://developer.android.com/develop/ui/compose/first"&gt;Compose First.&lt;/a&gt; From today, we'll provide all APIs, libraries, tools and guidance in Compose. We now consider the View components that Compose replaces (components in the &lt;code&gt;android.widget&lt;/code&gt; package) to be in &lt;b&gt;maintenance mode&lt;/b&gt;. We have no plans to deprecate or remove View components and will continue to support them with critical bug fixes, but they will receive no new features.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;View-based Jetpack Libraries&lt;/b&gt;&lt;br /&gt;The same goes for View based libraries like Fragments, RecyclerView or Viewpager — we consider them complete and will only publish critical bugfixes. For a complete list of libraries now in maintenance mode, &lt;a href="http://developer.android.com/develop/ui/compose/first"&gt;see here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tools&lt;/b&gt;&lt;br /&gt;Any new Android Studio UI tools will be built for Jetpack Compose only. Existing view-based tools (such as the Navigation Editor and Layout Editor) are now in maintenance mode and will not receive new features.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Guidance&lt;/b&gt;&lt;br /&gt;Documentation, codelabs, and samples will focus on building UI with Jetpack Compose. You can still find Views-specific documentation linked from pages that contain generic and Compose information, where relevant.&lt;br /&gt;&lt;/name&gt;&lt;h2 style="text-align: left;"&gt;&lt;name content="IMG" twitter:image=""&gt;&lt;b&gt;Happy Composing&lt;/b&gt;&lt;/name&gt;&lt;/h2&gt;&lt;name content="IMG" twitter:image=""&gt;We recommend that you build all new features with Compose and convert existing features when you touch them to gain the many Compose benefits. Check out our &lt;a href="https://github.com/android/skills"&gt;XML to Compose migration skill&lt;/a&gt; to help you convert existing layouts to Compose. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To learn about the latest Compose release, check out &lt;a href="https://android-developers.googleblog.com/2026/04/jetpack-compose-april-2026-updates.html"&gt;What’s new in the Jetpack Compose April ‘26 release&lt;/a&gt; blog and the &lt;a href="https://developer.android.com/jetpack/androidx/compose-roadmap"&gt;roadmap&lt;/a&gt; for what’s planned ahead. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thank you for all of the feature-requests and feedback that have helped shape Compose to become our recommended UI toolkit. As always, if you have any more &lt;a href="http://goo.gle/compose-feedback"&gt;feedback&lt;/a&gt;, let us know.  Happy composing!&lt;/name&gt;&lt;div&gt;&lt;name content="IMG" twitter:image=""&gt;&lt;br /&gt;&lt;/name&gt;&lt;/div&gt;&lt;div&gt;&lt;name content="IMG" twitter:image=""&gt;Explore this announcement and all Google I/O 2026 updates on&amp;nbsp;&lt;span style="display: none;"&gt;&lt;/span&gt;&lt;a href="https://io.google/2026/?utm_source=blogpost&amp;amp;utm_medium=pr&amp;amp;utm_campaign=devblogs&amp;amp;utm_content=" rel="noopener nofollow noreferrer" target="_blank"&gt;io.google&lt;span style="display: none;"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;p&gt;&lt;/p&gt;&lt;/name&gt;&lt;/div&gt;</content><link href="http://android-developers.googleblog.com/feeds/2868731995222527799/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/android-ui-development-is-compose-first.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/2868731995222527799" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/2868731995222527799" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/android-ui-development-is-compose-first.html" rel="alternate" title="Android UI Development is Compose First" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeAAKGvcISwZB1rAtP_MUJKvsLndh8bMp7dWt_R_FEVpJIQ_lLtgfdF-4lv-M_A7MmzpcYWAivrE97yOzM_BnYsl_9z3k9htmzgWE6jgDAEVRr_Ze1USCBTZbHQGv9AHbu9G1O0Ligkl3JJjbfYG3ZHpynfW4ZSBQuzvlu5IYqL5HmCpvDixYuTLIn9mI/s72-c/Compose%20first%20Meta.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-6014405363386119619</id><published>2026-05-19T01:30:00.000-07:00</published><updated>2026-05-19T11:05:40.289-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="I/O 2026 announcements"/><category scheme="http://www.blogger.com/atom/ns#" term="What's new in Cars for developers"/><title type="text">What's new in Android for Cars: Unifying platforms and unlocking premium experiences</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwJzj82t3irqzWaA60SwWqrjPmUvlD7vYMEur4O7evREw2Ux7Xy37w4lo9pQL2ovi22sg3AvxVOK1s3l5pR4cgzkL35rZ-J8GzhgHOWyZusCwNQQZqmxSsZmrwFxwWfN05a_2cayuNCLu2wFW_luVzlCkblhwMMPJdvmFPJWOy2Q4yeo0ESLaPMNTh30I/s2048/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwJzj82t3irqzWaA60SwWqrjPmUvlD7vYMEur4O7evREw2Ux7Xy37w4lo9pQL2ovi22sg3AvxVOK1s3l5pR4cgzkL35rZ-J8GzhgHOWyZusCwNQQZqmxSsZmrwFxwWfN05a_2cayuNCLu2wFW_luVzlCkblhwMMPJdvmFPJWOy2Q4yeo0ESLaPMNTh30I/s2048/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" style="display: none;" /&gt;


&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;i&gt;Posted by Jan Kleinert, Developer Relations Engineer, Android for Cars, Noam Gefen, Senior Product Manager, and Thomas Weathers, Developer Relations Engineer, Android for Cars&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR2qBgC02cCoEJCWHoL1Q30uBpHpFU86oPuB3ftlnkanrkbsgk_24fgc2IO03ahC9x1O_9ofpZ72MzTjBE6oTf3ahljZNMPHA2vsw1STZA92S-elWynGFvi40Wm5wG4i-hKBTrXlfA-5pc60n8RE0cyNDFP5IOl3Za8XJ50EnSYaSrHeqSWhU9jTk83ME/s4209/GoogleForDevelopers-AndroidText-Blogger-4209x1253.png" style="clear: left; display: inline; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR2qBgC02cCoEJCWHoL1Q30uBpHpFU86oPuB3ftlnkanrkbsgk_24fgc2IO03ahC9x1O_9ofpZ72MzTjBE6oTf3ahljZNMPHA2vsw1STZA92S-elWynGFvi40Wm5wG4i-hKBTrXlfA-5pc60n8RE0cyNDFP5IOl3Za8XJ50EnSYaSrHeqSWhU9jTk83ME/s16000/GoogleForDevelopers-AndroidText-Blogger-4209x1253.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;div&gt;
  &lt;p dir="ltr"&gt;We're thrilled to see developers continuing to bring their apps and experiences to Android for Cars! Over the past year, we've continued to see strong growth and momentum in the app ecosystem on Android Auto and cars with Google built-in. This year at Google I/O, we're introducing &lt;a href="https://blog.google/products-and-platforms/platforms/android/android-in-cars-updates/"&gt;updates&lt;/a&gt; that benefit both drivers and developers by enabling richer, more differentiated in-car experiences. With new features and templates that allow you to build once to reach users across different infotainment screens and car platforms, it's easier than ever to build for the road.&lt;/p&gt;

  &lt;h3 style="text-align: left;"&gt;What's new in the Car App Library&lt;/h3&gt;
  
  &lt;p dir="ltr"&gt;We're bringing more flexibility, new components, and new template capabilities to the Car App Library. &lt;a href="https://developer.android.com/jetpack/androidx/releases/car-app#version_18_2"&gt;Car App Library 1.8.0-beta01&lt;/a&gt; and Car App Library &lt;a href="https://developer.android.com/jetpack/androidx/releases/car-app#version_19_2"&gt;1.9.0-alpha01&lt;/a&gt; are now available.&lt;/p&gt;

  &lt;h2 style="text-align: left;"&gt;Build templated media apps for both Android Auto and Android Automotive OS&lt;/h2&gt;

  &lt;p dir="ltr"&gt;Developers can now build customized, distraction-optimized, media browsing and playback experiences for Android Automotive OS, making it easier to build once and deliver these &lt;a href="https://developer.android.com/training/cars/apps/media"&gt;templated media apps&lt;/a&gt; to more users and more cars.&lt;/p&gt;

  &lt;p dir="ltr"&gt;To help you test the experiences on Android Automotive OS, we'll be launching updated system images for the &lt;a href="https://developer.android.com/training/cars/testing/emulator#generic-images"&gt;Android Automotive OS emulator&lt;/a&gt;. Beginning with revision 3, the API level 35-ext15 system images will support apps built using the Car App Library media templates.&lt;/p&gt;

  &lt;h2 style="text-align: left;"&gt;Unlocking developer creativity with Car App Library 1.9.0 alpha&lt;/h2&gt;
  
  &lt;p dir="ltr"&gt;With the &lt;a href="https://developer.android.com/jetpack/androidx/releases/car-app#version_19_2"&gt;1.9.0-alpha01&lt;/a&gt; release of the Car App Library, we're bringing features to help you build more differentiated, expressive experiences across Android Auto and cars with Google built-in.&lt;/p&gt;

  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimM5Bys6KDEVqRAw8bI1ulWVclCs3TIoUbSo3oGZz1f7Nwbz15d4U0R8kNFYb84ce6I9b77YvDEwKrDyAiwnmLU4C00ZeROaK2v9hK7WWrU9yNia-fLvf_QBYFaoq6SlXt7FZQpuAxJ8cBzukIrmAucQsv8R4nxekCg_IAdLzCR3nJ-ZzAwmXCdAbKA6s/s16000/MediaHero1.gif" /&gt;&lt;/div&gt;

  &lt;p dir="ltr"&gt;We're increasing the modularity of existing templates to give developers more flexibility and options for laying out content. These improvements include expanded headers for better visual emphasis, such as on detail pages, spotlight sections that can be placed in scrollable areas to highlight specific content, and grid item variations to support different content types and states.&lt;/p&gt;

  &lt;p dir="ltr"&gt;&lt;/p&gt;&lt;p dir="ltr" style="text-align: center;"&gt;
    &lt;img src="https://blogger.googleusercontent.com/img/a/AVvXsEhK6ztQh4har9pzyEfHDY4IMe2dW6CL6uyrmr0ORY3_54irCmPe6k_rykLHgnpJdp1r1phrnmtIqGBSrTPTjOvimNfcYhlU6Oqo56dh5Q8Ib7TphHSNuBkp53If6OUYzaXQkb59ABK_Hos-sophT_SNzyb22_r0ZtdpWkkjXfM6uQ8ozumMFHeXOgLvG-M" style="height: auto; max-width: 100%;" /&gt;
  &lt;/p&gt;We're introducing new &lt;a href="https://developer.android.com/design/ui/cars/guides/components/overview"&gt;components&lt;/a&gt; and template capabilities to help developers build even more engaging experiences. For media apps, we're introducing an adaptive mini-player, so users can browse while still easily managing playback. Finally, we're adding more component types including &lt;a href="https://developer.android.com/reference/kotlin/androidx/car/app/model/Chip"&gt;Chip&lt;/a&gt; and &lt;a href="https://developer.android.com/reference/kotlin/androidx/car/app/model/CondensedItem"&gt;CondensedItem&lt;/a&gt; to increase the ways that content can be displayed and interacted with.&lt;p&gt;&lt;/p&gt;

  

  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-l446HjGIlBah9FPai_ueaLrrCdFEiJq4v68touGEwz2w2kVZ1PTHSYXQICwP9robt4qgbXmjyI683QKHJZC_rtzotiUm7vvtoGeIUIzHlRyRvfAAEP6QEO1C8cUpjHg1XN03TI8uKD786mS_rJdmvGNgxmkflo_AgQMooWm2OBTPPVxpR3aWX9nrItw/s16000/HomePage.png" /&gt;&lt;/div&gt;

  &lt;p dir="ltr"&gt;App developers, including those shown below, have already begun building upgraded media experiences using these new Car App Library features. You can join these developers and prepare to distribute your own media apps built with the Car App Library templates by applying to participate in our &lt;a href="https://goo.gle/Media-Comms-EAP"&gt;early-access beta program&lt;/a&gt;.&lt;/p&gt;

  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7N5sB3nCgJmnqvThIAr2GXJd0YvxFwOAfKGo_EgcmiIQVEtrPRwKAAJUb1sPjAD-mF8ZoKjRPwA3m5G_qawNQ6UpZiN_PpjHsQMkt-qee0TgHb_lhvEaA8KrrJz9AdUr1h1m2ahk2opxrN9y1feWBcYZD3xU6X10-bHDCXwdHcvzzNJWs2q8fOaHimqI/w640-h160/MusicApps.png" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Amazon Music, Gaana, PocketFM, Spotify, TuneIn, YouTube Music&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;

  &lt;h3 style="text-align: left;"&gt;Distribute your adaptive video apps to more cars with minimal effort&lt;/h3&gt;
  
  &lt;p dir="ltr"&gt;You’ve already built the apps, now we’re helping you reach more users. For the first time in Android Auto, users will be able to sit back, relax, and watch videos while parked. Apps, like YouTube, will be able to deliver smooth, 60fps HD video playback. This brings the Android Auto parked experience in line with the high-fidelity, immersive experiences users already enjoy in cars with Google built-in.&lt;/p&gt;

  &lt;p dir="ltr"&gt;This capability will start rolling out to compatible vehicles later this year, for users with phones running Android 17 and higher. If your video app is already adaptive, making it available for parked use cases in cars requires minimal effort. To express interest in making your video app available on Android Auto, fill out &lt;a href="https://forms.gle/VsXEdDEBidxw8q8u8"&gt;this form&lt;/a&gt;.&lt;/p&gt;

  &lt;h3 style="text-align: left;"&gt;Widgets are coming to cars&lt;/h3&gt;&lt;p dir="ltr"&gt;The &lt;a href="https://blog.google/products-and-platforms/platforms/android/android-in-cars-updates/"&gt;next generation of Android Auto&lt;/a&gt; brings a more expansive user interface and the &lt;a href="https://m3.material.io/"&gt;Material 3 Expressive&lt;/a&gt; design system you know from the phone into the car, built to seamlessly fill larger screens no matter what shape they are. With this new design, the investments you've already made in mobile widgets will be available to users of Android Auto this year, and cars with Google built-in later on, opening up new ways to reach and engage with your users while they're on the road. We're excited to unlock these new glanceable user journeys!&lt;/p&gt;

  &lt;h3 style="text-align: left;"&gt;The road ahead&lt;/h3&gt;&lt;p dir="ltr"&gt;You can look forward to even more updates coming to cars later this year.&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;
      &lt;p dir="ltr"&gt;To deliver a more continuous user experience, we're making it possible for you to provide a templated experience while driving that can seamlessly transition to a native, adaptive app experience when the vehicle is parked.&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p dir="ltr"&gt;New components and conversational templates will be coming to the Car App Library, so you can integrate agentic and voice-based flows more seamlessly in apps.&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p dir="ltr"&gt;Improved app brand expression across all car surfaces allow experiences built with the Car App Library to feel easily recognizable by your users.&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p dir="ltr"&gt;Google Maps SDK support is coming to cars with Google built-in. With this change, you'll be able to use the Google Maps SDK to &lt;a href="https://developer.android.com/training/cars/apps/library/draw-maps"&gt;render map-based content&lt;/a&gt; with the &lt;a href="https://developer.android.com/reference/androidx/car/app/navigation/model/MapWithContentTemplate"&gt;MapWithContentTemplate&lt;/a&gt; in point-of-interest (POI) and Weather apps on both Android Auto and cars with Google built-in.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;

  &lt;p dir="ltr"&gt;Stay updated on these features and start building with the latest at &lt;a href="http://goo.gle/cars-whats-new"&gt;goo.gle/cars-whats-new&lt;/a&gt;.&lt;/p&gt;&lt;p dir="ltr"&gt;Explore this announcement and all Google I/O 2026 updates on&amp;nbsp;&lt;span style="display: none;"&gt;&lt;/span&gt;&lt;a href="https://io.google/2026/?utm_source=blogpost&amp;amp;utm_medium=pr&amp;amp;utm_campaign=devblogs&amp;amp;utm_content=" rel="noopener nofollow noreferrer" target="_blank"&gt;io.google&lt;span style="display: none;"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;</content><link href="http://android-developers.googleblog.com/feeds/6014405363386119619/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/android-for-cars-unifying-platforms-premium-experiences.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/6014405363386119619" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/6014405363386119619" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/android-for-cars-unifying-platforms-premium-experiences.html" rel="alternate" title="What's new in Android for Cars: Unifying platforms and unlocking premium experiences" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwJzj82t3irqzWaA60SwWqrjPmUvlD7vYMEur4O7evREw2Ux7Xy37w4lo9pQL2ovi22sg3AvxVOK1s3l5pR4cgzkL35rZ-J8GzhgHOWyZusCwNQQZqmxSsZmrwFxwWfN05a_2cayuNCLu2wFW_luVzlCkblhwMMPJdvmFPJWOy2Q4yeo0ESLaPMNTh30I/s72-c/GoogleForDevelopers-AndroidText-StrapiMetacard-2048x1323.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-7068220628424925630</id><published>2026-05-19T01:15:00.000-07:00</published><updated>2026-05-22T11:34:37.520-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android developers"/><category scheme="http://www.blogger.com/atom/ns#" term="Featured"/><category scheme="http://www.blogger.com/atom/ns#" term="Google Play"/><category scheme="http://www.blogger.com/atom/ns#" term="Play Console"/><title type="text">I/O 2026: What's new in Google Play</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0693A48uZnrNsd8xHoBooP2r3ZzwtnLWr0OjWE0GiT7dUNrflvRAJ17q5AYBbQMdLXyYJgqbb8nhS583GET1lFFQr7vuApzLUwQoFhtC9YI0is94wdSiJRlPNnUam_A7eJ9NZgFDHAvoxiquVehMbD462eagxDl6LwfLhnb7nhXWaXs_cR9Vlt66yaBc/s2048/IO26_BlogMetadataCard_2048x1323px.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0693A48uZnrNsd8xHoBooP2r3ZzwtnLWr0OjWE0GiT7dUNrflvRAJ17q5AYBbQMdLXyYJgqbb8nhS583GET1lFFQr7vuApzLUwQoFhtC9YI0is94wdSiJRlPNnUam_A7eJ9NZgFDHAvoxiquVehMbD462eagxDl6LwfLhnb7nhXWaXs_cR9Vlt66yaBc/s2048/IO26_BlogMetadataCard_2048x1323px.png" style="display: none;" /&gt;


&lt;p style="margin-bottom: 4px;"&gt;&lt;/p&gt;&lt;p style="margin-bottom: 4px;"&gt;&lt;i&gt;Posted by Paul Feng, VP, Google Play Eng, Product, UX&lt;/i&gt;&lt;/p&gt;

&lt;div class="separator" style="clear: both; display: block; margin: 0px auto 1em; text-align: center;"&gt;
    &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsyzLLdLd5W172hkbrz59Y7dQ8AKdpzsk4NZfogLodxKuFOk9SvOifuNvU4y3UOpRYyuAW3F5o-b_H53gAUPkBWfQWu9Uf3wUtykoJRt6EoG_oBccEblfIVHAlYeodgIcDBDcRtO5rw-LOZnBbXKuUeohT8WXS3oM39TgjNfuIys4lp7EZ4ZRFEJlVyBo/s4209/IO26_BannerBloggerIcons_4209x1253px.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;
        &lt;img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsyzLLdLd5W172hkbrz59Y7dQ8AKdpzsk4NZfogLodxKuFOk9SvOifuNvU4y3UOpRYyuAW3F5o-b_H53gAUPkBWfQWu9Uf3wUtykoJRt6EoG_oBccEblfIVHAlYeodgIcDBDcRtO5rw-LOZnBbXKuUeohT8WXS3oM39TgjNfuIys4lp7EZ4ZRFEJlVyBo/s16000/IO26_BannerBloggerIcons_4209x1253px.png" /&gt;
    &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;At Google Play, we’re passionate about helping people connect with the experiences they’ll love, while empowering developers like you to turn great ideas into lasting business success.&lt;/p&gt;

&lt;p&gt;At this year’s Google I/O, we talked about our &lt;a href="https://android-developers.googleblog.com/2026/03/a-new-era-for-choice-and-openness.html"&gt;evolving business model&lt;/a&gt; that offers more choice and new ways for your apps and content to be discovered on and off the store. We also unveiled advanced tools and insights that will help scale your business with less complexity.&amp;nbsp;Watch the keynote video below, or keep reading for the biggest updates from this year’s event.&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
  &lt;iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/fwLiTPtPHjw?loop=1&amp;amp;playlist=fwLiTPtPHjw" style="aspect-ratio: 16/9; border: 0; max-width: 800px; width: 100%;" width="320" youtube-src-id="fwLiTPtPHjw"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;

&lt;h2 style="text-align: left;"&gt;&lt;span style="font-size: x-large;"&gt;Expanding your reach by meeting users where they are&lt;/span&gt;&lt;/h2&gt;

&lt;p&gt;Your apps and the incredible worlds you build are no longer just a single destination, but connected experiences that reach users across surfaces and devices. To help you meet users where they are, Google Play continues to evolve into a content-forward destination that delivers immersive and personalized experiences on the store, across their devices, and directly within your apps and games.&lt;/p&gt;

&lt;h3 style="font-size: large; margin-bottom: 4px; text-align: left;"&gt;
  &lt;span&gt;Beyond the store: Expanding discovery to new surfaces &amp;amp; devices&lt;/span&gt;
&lt;/h3&gt;

&lt;p style="margin-top: 0px;"&gt;We're unlocking new opportunities for your apps and content to be discovered across the wider Android ecosystem.&lt;/p&gt;

&lt;ul style="text-align: left;"&gt;
  &lt;li&gt;&lt;b&gt;Surfacing your apps and content in Gemini&lt;/b&gt;: As people increasingly start their journeys with virtual assistants, we want to ensure your apps and their content are an essential part of this. In the coming weeks, we're enabling app discovery in the Gemini app on Android and Web, connecting your apps and games to millions of Gemini users. Later this year, Gemini will also surface over 450,000 movies and TV shows, as well as where to stream live sports, and deep-link users directly into your app content.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="separator" style="clear: both; margin: 1em auto;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0cMOFY46Wu8SMs6qY7XY5YsPWpr9Oxx2XJV58WSOQSG0ybLXGWoxGP7IcZ4U1PT6jhvEXTz1TX5rRa3ec__TZyETq5pVGS_OM9M9RfgrzLXxaxSS3KoYT9Dyq1uU2EhlAXlK2Gn1tg-OizJRgQbL685bHt7rJLdhbSUP6S-TVVvmdJ1A5DbtoIbute7o/s16000/IO26_BlogInLine_App-discovery-in-Gemini_1920x1080_1605.gif" /&gt;&lt;/div&gt;

&lt;div style="margin-bottom: 1em; text-align: center;"&gt;&lt;i&gt;Gemini will provide users with app suggestions and direct access&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;to entertainment content during a search.&lt;/i&gt;&lt;/div&gt;

&lt;ul style="text-align: left;"&gt;
  &lt;li&gt;&lt;b&gt;Delivering personalized content across the ecosystem&lt;/b&gt;: &lt;a href="https://play.google.com/console/about/programs/EngageSDK/"&gt;Engage SDK&lt;/a&gt; surfaces deliver your content to over 30 million monthly active users and drive millions of app opens every month—a massive 45% increase year-over-year. And we’re making it even more powerful by expanding support for new surfaces and devices.
    &lt;ul&gt;&lt;li&gt;&lt;b&gt;Store listing integration&lt;/b&gt;: Starting next month, existing users will see Engage SDK content directly on your store listings.&lt;/li&gt;&lt;li&gt;&lt;b&gt;New tablet surfaces&lt;/b&gt;: We’re broadening reach across Android tablet surfaces, including home screen Collections.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Global scale&lt;/b&gt;: Every Engage SDK surface can now scale your content across over 80 Play markets.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;/ul&gt;
&lt;p style="margin-left: 20px; padding-left: 0px;"&gt;Boost re-engagement by &lt;a href="https://play.google.com/console/about/programs/EngageSDK/"&gt;&lt;b&gt;integrating with Engage SDK&lt;/b&gt;&lt;/a&gt; today. If your app is already integrated, no further action is required to benefit from these updates.&lt;/p&gt;

&lt;h3 style="font-size: large; margin-bottom: 4px; text-align: left;"&gt;
  &lt;span&gt;On the store: Enhancing content formats and conversational search&lt;/span&gt;&lt;/h3&gt;

&lt;p style="margin-top: 0px;"&gt;We’re also optimizing the Play Store to help grow your audience with engaging content formats and a more intelligent search experience, to make it easier than ever for users to find and connect with your app.&lt;/p&gt;

&lt;ul style="text-align: left;"&gt;
  &lt;li&gt;&lt;b&gt;Capturing attention with Play Shorts&lt;/b&gt;: Our full-screen, portrait, short-form video feed gives users a glimpse of your app’s look, feel, and functionality. &lt;a href="https://support.google.com/googleplay/thread/409815059/see-apps-in-action-discover-your-next-favorite-with-the-launch-of-play-shorts?hl=en"&gt;Play Shorts&lt;/a&gt; is rolling out to users in the US and select developers, and we look forward to expanding this to more markets and developers in the coming months.&lt;/li&gt;&lt;/ul&gt;

&lt;div class="separator" style="clear: both; margin: 1em auto;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTho1fNFxfjEsgfH4OjCiDJ3GXQwlOWtrzBaip2zzFKZSwf4HhhsEGeCadLbbhp4c6uTRDjIpglghkC61mGJmH9RGpVEqWsy2DE_LowAQF_xdAlrzpD3_YUvD05o-4SLoGszRn6arbowCu8Ko33vYVPQa8eOyG4VkD9L_rpaE3Ga0RGYr99v926ctExMM/s16000/IO26_BlogInLine_Play-Shorts_1920x1080_1605.gif" /&gt;&lt;/div&gt;

&lt;div style="margin-bottom: 1em; text-align: center;"&gt;&lt;i&gt;Play Shorts provides a glimpse into your app’s look, feel &amp;amp; functionality.&lt;/i&gt;&lt;/div&gt;

&lt;ul style="text-align: left;"&gt;
  &lt;li&gt;&lt;b&gt;Enabling deeper search journeys with Ask Play&lt;/b&gt;: Building on AI-powered Q&amp;amp;A, which already answers 95% of user queries, we’re introducing Ask Play. This AI-powered overlay turns discovery into a natural conversation, understanding the full context of a user's question and adapting to follow-ups to recommend the right app. Plus, with &lt;b&gt;Ask Play highlights&lt;/b&gt;, users can get a high-level summary of complex searches directly on the search results page to help find the right apps or games more effortlessly.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="separator" style="clear: both; margin: 1em auto;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI557C8bbF3_SDxSZSA-IdqY3y2TUXJlg-GjTPIVDk9I3kt2JJm2WMkUSlol6Hg-NKzQcDTVBfLAvSTqp6UFADiRSDMXsDkD258Uw123cV5iQ68GwGZIdnIk0KnZu4lomCPc9oQ_29qY3798AnRqNEij8Ijn00gaZVEwFkZ_ne1itYq4idhqC_GfY9nd4/s16000/IO26_BlogInLine_Ask-Play_1920x1080_1605.gif" /&gt;&lt;/div&gt;

&lt;div style="margin-bottom: 1em; text-align: center;"&gt;&lt;i&gt;Ask Play understands the full context and helps users find the right apps or games.&lt;/i&gt;&lt;/div&gt;

&lt;h3 style="font-size: large; margin-bottom: 4px; text-align: left;"&gt;
  &lt;span&gt;In your games: Deepening player engagement and community&lt;/span&gt;
&lt;/h3&gt;

&lt;p style="margin-top: 0px;"&gt;Once players launch your title, the real challenge is keeping them in the action. Play Games Sidekick provides an in-game overlay that gives players instant access to gaming information—like AI-generated Game Tips, rewards, and achievements — driving higher engagement while keeping players immersed. Sidekick has already debuted in over &lt;a href="https://play.google.com/store/apps/editorial?id=mc_games_editorialmd_gdc_sidekick_fcp"&gt;100+ titles&lt;/a&gt;, and we’re building on this momentum with:&lt;/p&gt;

&lt;ul style="text-align: left;"&gt;
  &lt;li&gt;&lt;b&gt;New social features&lt;/b&gt;: Starting next month, players can see which friends are playing the same game and track their achievements&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Global expansion&lt;/b&gt;: Sidekick expands to all participating titles this summer. Head over to Play Console to &lt;a href="https://developer.android.com/games/pgs/play-games-sidekick"&gt;enable Sidekick and begin testing&lt;/a&gt; the user experience so that you're ready for our global launch, while also meeting one of our core &lt;a href="https://play.google.com/console/about/levelup/"&gt;Level Up program&lt;/a&gt; guidelines.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 style="text-align: left;"&gt;&lt;span style="font-size: x-large;"&gt;Scaling your business with less complexity&lt;/span&gt;&lt;/h2&gt;

&lt;p&gt;We’re streamlining your day-to-day tasks while providing more comprehensive reporting to help you capture more growth opportunities.&lt;/p&gt;

&lt;h3 style="font-size: large; margin-bottom: 4px; text-align: left;"&gt;
  &lt;span&gt;Streamline your Play Store operations with AI&lt;/span&gt;
&lt;/h3&gt;

&lt;p style="margin-top: 0px;"&gt;We’re using Gemini models to handle the heavy lifting of localizing your store content and managing your catalog.&lt;/p&gt;

&lt;ul style="text-align: left;"&gt;
  &lt;li&gt;&lt;b&gt;Localize with less effort&lt;/b&gt;: Eliminate manual copy-pasting by uploading a structured file (like a CSV or Google Sheet). Gemini models enable Play Console to pre-populate your listings across different languages for your review. You can also leverage AI-translated subscription benefits to quickly scale your localization efforts.&lt;/li&gt;&lt;/ul&gt;

&lt;div class="separator" style="clear: both;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaizMVl2Uf4lukI9LDgXfR8YW6jSXvbhH_JDfrSdPhh20bMsUfSnlvUSg4V4PCFynh0gJzC-orrt0MIBQHZlTV9CEek3XK7IH4fUAHyPoCG5-e_oSaZE1K03VIKUcRb0BRv1d-7u5-DMNodWmEGOUKCQeGg1a4DnTBIFGVN3d0MWB0-VYGj-R19oJos0k/s16000/IO26_BlogInLine_Pre-populate_store_1920x1080_1805_v3%20(1).gif" /&gt;&lt;/div&gt;&lt;i&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Instantly pre-populate store listings with localized translations.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;/i&gt;&lt;ul style="text-align: left;"&gt;
  &lt;li&gt;&lt;b&gt;Convert search trends into growth&lt;/b&gt;: We’ve simplified the path from insight to action. When you click a keyword recommendation on your Grow overview page, Gemini creates a new custom store listing automatically tailored to that keyword—ready to deploy with just one click.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Simplify catalog management&lt;/b&gt;: We’re introducing agentic catalog management to help you manage your one-time products. Soon, you can leverage new in-console capabilities to execute bulk price changes, import SKUs, and configure metadata, saving hours of manual work.&lt;/li&gt;&lt;/ul&gt;

&lt;div class="separator" style="clear: both; margin: 1em auto; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt3en0CDEwP47ACpfwxNkGx8G_aDF_2sKXEm0cEamJAmK28Z-0EAYzjjurqlyODR_8xRciAjkd266EKb3JR0iDE7MKPBH9VDdtZ_xmdVifzV5iAJfgNUtmXjp8Z_Ui3R9UoIjVZG8EvfuOPVnfSDPMgOranY_OpZp_SsEEIMGtDwuudRYC7qx_GBh35aU/s16000/IO26_BlogInLine_Catalog-management-_1920x1080_1605.gif" /&gt;&lt;i&gt;New agentic capabilities in&amp;nbsp;Play Console will make managing your catalog seamless.&lt;/i&gt;&lt;/div&gt;&lt;blockquote style="background: transparent; border-style: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"&gt;For a detailed look at these features and more, &lt;a href="https://www.youtube.com/watch?v=alVIYAu51V8&amp;amp;feature=youtu.be"&gt;watch this video&lt;/a&gt;.&lt;/blockquote&gt;&lt;h3 style="font-size: large; margin-bottom: 4px; text-align: left;"&gt;
  &lt;span&gt;Behind-the-scenes features that optimize your revenue&lt;/span&gt;
&lt;/h3&gt;

&lt;p style="margin-top: 0px;"&gt;We’re building tools to maximize your revenue at every stage—with zero developer work required. When a user decides to buy, our platform helps ensure that the transaction completes at the point of conversion, renewal, and retention.&lt;/p&gt;
&lt;ul style="text-align: left;"&gt;
  &lt;li&gt;&lt;b&gt;Optimizing conversion with delayed charging&lt;/b&gt;: When a payment initially fails, our risk models evaluate the transaction. If it’s low-risk, we grant the user access to your paid content while we retry the charge in the background. This means your lowest-risk subscribers get the best experience and you are less likely to lose them due to a temporary glitch.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Boosting renewals with extended recovery periods&lt;/b&gt;: To prevent involuntary churn, we’ve extended the default account recovery period from 30 to 60 days to give subscribers more time to fix failed payments, like expired credit cards. This shift has driven up to an 18% reduction in involuntary churn and a 9% reduction in total churn for top developers.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Maximizing retention with flexible flows&lt;/b&gt;: A rigid experience makes retention nearly impossible. Coming soon, our new in-app subscription management API lets subscribers change plans or accept a downgrade offer the moment they hit “cancel.” Combined with replacement modes that automate prorated refunds, you’ll have a powerful toolkit to save at-risk subscribers.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="separator" style="clear: both; margin: 1em auto;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-gLgx65dAH7XNIgKoVpTBpy5uHKRazYfrrryEY4BR0tgs6n9xgu0hgoCha1c4y_j8P8P4nAtIiZT9r2xwe3fvl0meKSadEjgn5ENHgmDCQyNRRTxUfQ9lzJpUw3cldlkYAaVL0_noTGT9vcgNgHCt4-K8j_9lrKXs3Wua0rwSsNwoX-jSMkGkzYH7NnU/s16000/IO26_BlogInLine_Retention-with-flexibiity_1920x1080_1605.gif" /&gt;&lt;/div&gt;

&lt;div style="margin-bottom: 1em; text-align: center;"&gt;&lt;i&gt;Flexible flows let subscribers change plans or accept downgrades to boost retention.&lt;/i&gt;&lt;/div&gt;

&lt;h3 style="font-size: large; margin-bottom: 4px; text-align: left;"&gt;
  &lt;span&gt;More reporting and AI-powered insights&lt;/span&gt;
&lt;/h3&gt;

&lt;p style="margin-top: 0px;"&gt;We’re providing more data and more AI-powered insights to help you understand your performance and ROI on Play.&lt;/p&gt;

&lt;ul style="text-align: left;"&gt;
  &lt;li&gt;&lt;b&gt;Measure your full marketing impact&lt;/b&gt;: See your app’s total visibility on Play with our new reach metric. Gain better insight into store listing performance with indirect value not previously reported. Analyze downstream impact—like engagement, retention, and monetization—with our new traffic source breakdowns.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Optimize the path to purchase and retention&lt;/b&gt;: We’ve added cart conversion rates to your core performance metrics to help you identify and fix friction in your checkout flow. New data on subscriber tenure and churn reasons allow you to better pinpoint why subscribers leave and which segments are most at risk.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Get faster answers&lt;/b&gt;: Using Gemini models, we’re expanding chart descriptions from the Statistics page to the Reach &amp;amp; Devices and Store Performance pages to help you spot trends instantly. With new interactive Q&amp;amp;A and proactive monetization insights, you can ask why a metric shifted and instantly receive tailored recommendations to optimize your business.&lt;/li&gt;&lt;/ul&gt;

&lt;div class="separator" style="clear: both; margin: 1em auto; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEbRnWFxWJBa0cUF0_dN4oJ01sdGhsjPwoLYiS494XEnfpIGa0koYxlZirFE3rgeaoEc-Mt2G7-c2YOH1Yj-ly5i45HfEYnDJKQOZzkR3RTF9qdKdnvO8Rm5TrT8U65hYwfV0p0ZUv-tL9NbKBavV3ZFV0Rv2iQc818MLRyfl3t08HawYkrc5BshlbQf4/s16000/IO26_BlogInLine_Interactive-Q&amp;amp;A_1920x1080_1605.gif" /&gt;&lt;i&gt;Get instant answers and recommendations for optimizing your business.&lt;/i&gt;&lt;/div&gt;

&lt;h2 style="text-align: left;"&gt;&lt;span style="font-size: x-large;"&gt;Protecting your success&lt;/span&gt;&lt;/h2&gt;

&lt;p&gt;In addition to &lt;a href="https://android-developers.googleblog.com/2026/05/making-it-easier-to-build-publish-safer-apps.html"&gt;making it easier and faster to publish safer apps&lt;/a&gt;, we’re also making it easier to secure your app’s revenue and reputation.&lt;/p&gt;

&lt;ul style="text-align: left;"&gt;
  &lt;li&gt;&lt;b&gt;Defend your business against fraud and abuse&lt;/b&gt;: The new Protected with Play dashboard helps you monitor and configure your integrity, distribution, and monetization defenses all in one place. We’re also reducing warm-up latency for Play Integrity API, so you can use these checks during speed-critical user journeys to block threats and risky devices faster.&lt;/li&gt;
&lt;/ul&gt;

&lt;br /&gt;

&lt;div style="margin-bottom: 1em; text-align: center;"&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp7KjN25k-akbsz1OuRPZBD7IHoDJM3V56OkI4RegEeYX_gwTSTjcpwd38K2imtjzXEh7pXzX57LZr55kZ-KF-b2f_YkOY2dyUGUlWI0J095obaSnw34yq9df_tdamTG3llHoHIO6ElQSx1NITdp0LAsyStFHc0t9h-gES2ZTtlwy6BRE9s2J6yH_jV0Q/s16000/IO26_BlogInLine_Protected-with-Play_1920x1080_1605_v2.gif" /&gt;&lt;/div&gt;&lt;i&gt;The Protected with Play dashboard provides centralized insights to help you safeguard your app.&lt;/i&gt;&lt;/div&gt;

&lt;ul style="text-align: left;"&gt;
  &lt;li&gt;&lt;b&gt;Get proactive protection for your store and revenue&lt;/b&gt;: We work behind the scenes to help stop malicious activity before it impacts your business. Last year, our automated anti-spam protections blocked 160 million spam ratings and reviews while our anti-fraud efforts automatically protected apps using Play Billing from 3.2 billion dollars in fraud and abuse.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 style="text-align: left;"&gt;&lt;span style="font-size: x-large;"&gt;Growing your business on Google Play&lt;/span&gt;&lt;/h2&gt;

&lt;p&gt;Our latest updates reinforce our commitment to deliver the highest return on your team’s investment, by expanding your reach beyond the store, simplifying your day-to-day operations, and helping you better safeguard your success. We’re excited to see you use these new capabilities to create even more impactful experiences. Thank you for being a part of the Google Play community.&lt;/p&gt;

&lt;div&gt;Learn more about these announcements and all other Google I/O 2026 updates on &lt;a href="https://io.google/2026"&gt;io.google&lt;/a&gt; starting May 21.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;</content><link href="http://android-developers.googleblog.com/feeds/7068220628424925630/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/io-2026-whats-new-in-google-play.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/7068220628424925630" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/7068220628424925630" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/io-2026-whats-new-in-google-play.html" rel="alternate" title="I/O 2026: What's new in Google Play" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0693A48uZnrNsd8xHoBooP2r3ZzwtnLWr0OjWE0GiT7dUNrflvRAJ17q5AYBbQMdLXyYJgqbb8nhS583GET1lFFQr7vuApzLUwQoFhtC9YI0is94wdSiJRlPNnUam_A7eJ9NZgFDHAvoxiquVehMbD462eagxDl6LwfLhnb7nhXWaXs_cR9Vlt66yaBc/s72-c/IO26_BlogMetadataCard_2048x1323px.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-1438788910070212</id><published>2026-05-19T01:00:00.000-07:00</published><updated>2026-05-19T11:05:00.468-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agentic"/><category scheme="http://www.blogger.com/atom/ns#" term="AppFunctions"/><category scheme="http://www.blogger.com/atom/ns#" term="Canary"/><category scheme="http://www.blogger.com/atom/ns#" term="Compose"/><category scheme="http://www.blogger.com/atom/ns#" term="fitness"/><category scheme="http://www.blogger.com/atom/ns#" term="Gestures"/><category scheme="http://www.blogger.com/atom/ns#" term="Jetpack Glance"/><category scheme="http://www.blogger.com/atom/ns#" term="Live Updates"/><category scheme="http://www.blogger.com/atom/ns#" term="MCP"/><category scheme="http://www.blogger.com/atom/ns#" term="media controls"/><category scheme="http://www.blogger.com/atom/ns#" term="Protolayout"/><category scheme="http://www.blogger.com/atom/ns#" term="RemoteCompose"/><category scheme="http://www.blogger.com/atom/ns#" term="System Fitness Tracker"/><category scheme="http://www.blogger.com/atom/ns#" term="System Media Controls"/><category scheme="http://www.blogger.com/atom/ns#" term="Tiles"/><category scheme="http://www.blogger.com/atom/ns#" term="UI Automation"/><category scheme="http://www.blogger.com/atom/ns#" term="Wear OS"/><category scheme="http://www.blogger.com/atom/ns#" term="WFF 5"/><category scheme="http://www.blogger.com/atom/ns#" term="Widgets"/><title type="text">What's New in Wear OS 7</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV8I_uFj5D7kdofKcYD9PElp8MrAMpQ7zU63Fg38WC3gPL4j5F-Y4rhjJ_xzOmaGyKwQZIdc2mGZ0gOD2WW3wCcDErjfR-FETrywfJtJ9xp9LCVe_oObvz0iyUADH2gHQSU6_z446pJ3Xmblv2IKO2hazhyZUfljm6Zap4d1DHtE9DNpvIpEYqnF537ow/s4096/Metacard_header_2048%20x%201323.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV8I_uFj5D7kdofKcYD9PElp8MrAMpQ7zU63Fg38WC3gPL4j5F-Y4rhjJ_xzOmaGyKwQZIdc2mGZ0gOD2WW3wCcDErjfR-FETrywfJtJ9xp9LCVe_oObvz0iyUADH2gHQSU6_z446pJ3Xmblv2IKO2hazhyZUfljm6Zap4d1DHtE9DNpvIpEYqnF537ow/s4096/Metacard_header_2048%20x%201323.png" style="display: none;" /&gt;


Posted by John Zoeller, Developer Relations Engineer &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqp8-gRIUyEcjfmVUhuSIuArsMEW3paW35VIWELM6F200hkvf9eo6oAafq5Hgv8fw31ETTlj2gREGXjkabUsxGx6hmkZdH0kcKQzKhnsSSeYSEnhaVYSJpsuC2l-DxxbMEvLgjzjyEGUTB9EmGtz7VIuJio1B3_XiiFywtcwuhTkqkT_VS-lq8rrIhI_0/s7200/Header_0518.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2250" data-original-width="7200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqp8-gRIUyEcjfmVUhuSIuArsMEW3paW35VIWELM6F200hkvf9eo6oAafq5Hgv8fw31ETTlj2gREGXjkabUsxGx6hmkZdH0kcKQzKhnsSSeYSEnhaVYSJpsuC2l-DxxbMEvLgjzjyEGUTB9EmGtz7VIuJio1B3_XiiFywtcwuhTkqkT_VS-lq8rrIhI_0/s16000/Header_0518.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Today, we are excited to introduce Wear OS 7, a major update that brings a new era of power efficiency and intelligence to users and developers alike.&lt;/p&gt;&lt;p&gt;We recognize that watches are essential, all-day companions to your users. That’s why we're continuing to invest in power optimizations so your users can do more with their favorite apps. For watches upgrading from Wear OS 6 to Wear OS 7, average users can expect up to 10% improvement in battery life.&lt;/p&gt;
  &lt;p&gt;As part of a broader rollout to the Android ecosystem, select watches arriving later this year will come with &lt;a href="https://blog.google/products-and-platforms/platforms/android/gemini-intelligence/"&gt;Gemini Intelligence&lt;/a&gt;, providing proactive and personalized help to our users so they can focus on what matters.&lt;/p&gt;
  &lt;p&gt;With Wear OS 7, we’re introducing new system capabilities and enhanced developer tools. New user-facing features like Live Updates, and enhanced media controls deliver a smarter, more intuitive personalized experience on the wrist. And with enhancements to our developer toolkit such as Wear Compose 1.6 and AppFunctions, developers will be able to streamline their apps for efficient, intuitive experiences on the wrist.&lt;/p&gt;
  &lt;p&gt;Let's dive right in!&lt;/p&gt;

  &lt;h3 style="text-align: left;"&gt;Wear OS 7 Canary&lt;/h3&gt;&lt;p&gt;You can now try out the next version of Google’s smartwatch platform, &lt;a href="https://developer.android.com/training/wearables/versions/7/setup" target=""&gt;Wear OS 7 Canary Emulator&lt;/a&gt;, based on Android 17 that's arriving later this year.&lt;/p&gt;
  &lt;p&gt;The new emulator allows you to get hands-on with the developer features and tools mentioned above while testing your app for compatibility with the upcoming platform.&lt;/p&gt;
  &lt;p&gt;Check out &lt;a href="https://developer.android.com/training/wearables/versions/7/changes"&gt;what’s changed&lt;/a&gt; and start testing your app today.&lt;/p&gt;

  &lt;h3 style="text-align: left;"&gt;Explore new Wear OS features&lt;/h3&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;Wear OS Widgets&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg73SQ1rxXRYTygAWVmUNf2PhH9CwAW4wzi_C17A_8XAaNV_OWLqaoDCm-teyr47BRJF2d1TxafnR879rzotOK29B-GvrvJmvwOFily3Vu3v0wakekhBuLH9nhtA5MuJvDEFbIrOMP14ozuaSe9ezNVKXdfwBpqU0HGOzBfyoZ4geBko1kSya96iI-lFsA/w640-h360/Widgets.png" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Full-screen Tiles have been a go-to surface on Wear OS, providing users with instant, glanceable access to their essential updates. As the Android ecosystem moves further toward a unified vision for widgets, we’re bringing the watch closer to the rest of the Android family with the goal of minimizing efforts for developers.&lt;/div&gt;
  &lt;p&gt;Today, we’re excited to introduce the next step in the evolution of Tiles: flexible and dynamic &lt;a href="https://developer.android.com/training/wearables/widgets"&gt;&lt;i&gt;Wear Widgets&lt;/i&gt;&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Powered by &lt;a href="https://developer.android.com/jetpack/androidx/releases/glance-wear"&gt;Jetpack Glance&lt;/a&gt; and the new &lt;a href="https://developer.android.com/jetpack/androidx/releases/compose-remote"&gt;RemoteCompose&lt;/a&gt; framework, Wear Widgets offer greater expressiveness and consistency with Compose than the Tiles ProtoLayout libraries. Wear Widgets support two new card layouts—small and large, that align perfectly with the 2x1 and 2x2 formats on mobile, ensuring your designs feel cohesive across devices, while still allowing you to &lt;a href="https://developer.android.com/design/ui/wear/guides/get-started/design-for-wearables/principles#optimize-for-wrist"&gt;optimize your designs for the wrist&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;It’s easy to adapt the UI from the &lt;code&gt;mainSlot&lt;/code&gt; of your full-screen tile to a 2x2 Widget. Take a look!&lt;/p&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5tpnQFcRHu2uQpUDc8Y7y6WG8pIX4Xlzg1SN0ejdVdl4cLipzQnPAPa_LHdktE3UDBsvai4YTp7SUQf7Ok5BeH2at5wS5UETHxhP_uZ0_Lt4lsibhZxpgTDeuSoy3QwJUguaGVbN0O0w3qEkqiMvJUyyhMuhD2l3jnDYSImmzmtLu45H189IUq4ReQBg/s16000/widgets%20code.png" /&gt;&lt;/div&gt;
  &lt;p&gt;Check out the Widgets I/O Talk later this week for full details on the new features, and try out our Widgets Getting Started Guide to add a Widget to your Wear OS experience.&lt;/p&gt;

  &lt;h3 style="text-align: left;"&gt;Live Updates&lt;/h3&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWvwnGUHYi5CyxpqkSmM0mqHkwjWjZjNPsqWa3zMTTk4qNF8Jevnnry8TQqTC9nmc8C0bg0LyyW3ZjxuAzJuXkHiMGB70ZH_lMSDhQCAIU7_Q1Xr-Y-kboCSEpv8SfPV-7HQ1enYMO1F_VBKa7sBa4HlJJhw92SlcsiPU0qTlEbi8CSGXVG6MLkTVg-wI/w640-h360/Live%20Updates%20Blog%20post.png" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;Wear OS 7 brings &lt;a href="https://developer.android.com/develop/ui/views/notifications/live-update"&gt;Live Updates&lt;/a&gt; to watches!&lt;/p&gt;
  &lt;p&gt;You can use Live Updates to surface real-time, important information from your watch or mobile app, providing your users with timely updates at a glance.&lt;/p&gt;
  &lt;p&gt;In your watch app, use Live Updates instead of the Ongoing Activities API to provide local update publishing on all Wear 7 devices. For supporting OEMs, Live Updates published by your phone app will also be bridged to users' watches.&lt;/p&gt;&lt;p&gt;Check out how Just Eat provides updates to their users, above!&lt;/p&gt;
  &lt;p&gt;For more information, check out &lt;a href="https://developer.android.com/training/wearables/notifications"&gt;Notifications on Wear OS&lt;/a&gt;.&lt;/p&gt;

  &lt;h3&gt;Connect your app to the intelligence system&lt;/h3&gt;&lt;div&gt;&lt;div&gt;We're working on several ways for developers to provide agentic experiences on the watch, from AppFunctions to task automation tools.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We’ll announce these on our developer blog when they’re ready, and provide an all-encompassing developer guide to help you choose the right one and craft a robust implementation. For now, here's a quick look.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;AppFunctions&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtzvIwmi49XYt1jhJJ1bBduuVXaWlGw0kHqH6aNHu_c5m3ThTyeJdGE01EJl_V52_VZnt0-pLZpSNvj-0VLmJToNANa7zhNIEkIaQfDEMLIq32_UMMYlPIkVTZ4O88m1RuaCq9n30ZX7NXWUbHOQwal188Ft405USx5QwVX76_7Hhb6XoanpfJimU4vxE/s16000/Watch_IO26_Samsung_App_Functions.gif" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;The&amp;nbsp;&lt;a href="http://d.android.com/ai/appfunctions"&gt;AppFunctions API&lt;/a&gt;&amp;nbsp;allows developers to integrate their apps with agents and assistants, like Google Gemini, enabling users to complete tasks using voice, often replacing the need for step-by-step, manual navigation with your UI.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;For example, to start a run with the Samsung Health app, users are able to tell Gemini: “Start tracking my run.”&lt;/p&gt;&lt;p&gt;We’re currently running an Early Access Program for any developers who are interested. Sign up&amp;nbsp;&lt;a href="http://goo.gle/eap-af"&gt;in our form&lt;/a&gt;&amp;nbsp;to express your interest.&lt;/p&gt;&lt;div&gt;&lt;b&gt;Task automation&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjryBLklekO1XrVbVpYYWxo1QTuZbTWMloUuNRvPTxwvjyUyLP1YiA9detu20r3iF2C-ZiWZZwM4CVV7KWC5h0IbnW6L5PVfqul2GIj1kVDeYBMUzs7uIfVJr-ddmEqfxRNhqqGBiisseMax853fhOBnZWs60q4_jt8Ju77FVBFcLGMsp7YKahloO17hjU/s16000/Watch_IO26_RemoteBonobo_Doordash_onBG_a22_GIF.gif" /&gt;&lt;/div&gt;&lt;p&gt;Also coming soon, without any development effort at all, users will be able to invoke and track &lt;a href="https://developer.android.com/ai/computer-control"&gt;automated app tasks&lt;/a&gt;, for selected phone apps, directly from their watch, like placing an order with DoorDash!&lt;/p&gt;&lt;p&gt;Keep an eye out for these flexible options on how to prepare and connect your app to the Android intelligence system on our &lt;a href="https://developer.android.com/ai"&gt;developer blog&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;Wear Workout Tracker&lt;/h3&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQaV_sFZaZMYseipqtUsvzLH2iOVdkqHivO-YzKwNE2PocRYLSZwUNyfLQ82nmp_LFkb6xIXiragnEEgFScSiMevzsTncakDGfPg7DPMWhuLCtQ3zwqjWyPxybYbTFHDxPiWHSiYHdE6i3M7cuOOxBahJKfkTpMfNChuwBaix5QzfauXAlR7R65bmS67w/s16000/Watch_IO26_SystemFitnessTracker_onBG_a05.gif" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;We know that building a full-featured, high-quality fitness tracking experience on Wear OS from scratch is resource-intensive, so we built the all new Wear Workout Tracker experience for exercise apps. It will be included in Wear OS later in the year.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The workout tracker provides a rich standardized workout tracking experience which includes heart rate monitoring, media control, and a collection of other useful features to help you reduce development investment while guaranteeing a high-quality experience for your users.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We’ve been working closely with ASICS Runkeeper to bring it to their users, check it out!&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;Enhanced System Media Controls in Wear OS 7&lt;/h3&gt;
  &lt;p&gt;Wear OS 7 enhances the System Media Controls, giving users more control and seamless experiences for their media.&lt;/p&gt;
  
  &lt;div style="text-align: left;"&gt;&lt;b&gt;Per-App media auto-launch controls&lt;/b&gt;&lt;/div&gt;
  &lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim54yyF4neqf6XlAmq9gcnQ1Owv5D4673amwJSjy6k_D8FV4-gJ4UUrDM3AgLwPF4I5yJUaot4vEfbkm-OU-ZCW5PPYs1ODIhPt0sKedtdp0d5pciO5nrohHgHWXIeYqExBYqRatRZNjKtrD2ISIHYVdi-EDNljraJxRqREdAPVz4RIpIDDx2_Q34GC1U/s16000/Watch_IO26_AutoLaunch_Media_onBG_a05.gif" /&gt;&lt;/div&gt;&lt;p&gt;Users can now personalize their media auto-launch experience per-app directly from the System Media Controls on the watch.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
  &lt;p&gt;For any app where the user has ‘Auto-launch Settings’ toggled on, media controls will automatically appear on the watch when media is started on the phone.&lt;/p&gt;
  &lt;p&gt;Developers with an existing implementation of &lt;a href="https://developer.android.com/media/implement"&gt;media apps that extend on the watch&lt;/a&gt; can benefit from this feature without additional effort.&lt;/p&gt;

  &lt;div style="text-align: left;"&gt;&lt;b&gt;Seamless audio routing with the Remote Output Switcher&lt;/b&gt;&lt;/div&gt;
  &lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9n_2qm3e5zN-ohyphenhyphenO-H1AWys4Ed6813XD24PpoVL6cvr9Nw0THic66rqbuVGaP9PthLjqDI8Y8s7bC9uRi8sGPPELxoxJCcDsAzjshUTCIuo6ord1QwKJ9Y_qYWntZtTifc6U30DAXGF6iPWiDh6XAYVIsC522dROJ5VuzHM2eb0JQEI_xnSZ4ZO80d1s/s16000/Remote%20Output%20Switcher.png" /&gt;&lt;/div&gt;&lt;p&gt;Managing audio output is now easier than ever with the new Remote Output Switcher integrated into the System Media Controls.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;When listening to media on a paired phone, users can effortlessly switch the device the media is played back on directly from their wrist.&lt;/p&gt;

  &lt;h2&gt;UI Library updates&lt;/h2&gt;
  &lt;p&gt;To go along with all these new features for users, we’re introducing some powerful enhancements to our developer toolkits to help developers prepare for the future of Wear OS!&lt;/p&gt;

  &lt;h3&gt;Compose for Wear OS 1.6&lt;/h3&gt;
  &lt;p&gt;As the foundation for Wear OS development, &lt;a href="https://developer.android.com/jetpack/androidx/releases/wear-compose#wear_compose_version_16_2"&gt;Compose for Wear OS 1.6&lt;/a&gt; has arrived.&lt;/p&gt;
  &lt;p&gt;It includes powerful updates including:&lt;/p&gt;

  &lt;div style="text-align: left;"&gt;&lt;b&gt;Streamlined navigation with Navigation 3&lt;/b&gt;&lt;/div&gt;
  &lt;p&gt;Developers can Integrate with &lt;a href="https://developer.android.com/training/wearables/compose/navigation?version=3"&gt;Navigation 3&lt;/a&gt; to provide a more flexible and Compose-idiomatic way to handle navigation on Wear OS.&lt;/p&gt;
  &lt;pre&gt;&lt;code&gt;@Composable
fun WearApp() {
    val backStack = rememberNavBackStack(MenuScreen)
    WearAppTheme {
        AppScaffold {
            val entryProvider = remember {
                entryProvider&amp;lt;NavKey&amp;gt; {
                    entry&amp;lt;MenuScreen&amp;gt; { GreetingScreen() }
                    entry&amp;lt;ListNavScreen&amp;gt; { ListScreen() }
                }
            }
            val swipeDismissableSceneStrategy = rememberSwipeDismissableSceneStrategy&amp;lt;NavKey&amp;gt;()
            NavDisplay(
                backStack = backStack,
                entryProvider = entryProvider,
                sceneStrategies = listOf(swipeDismissableSceneStrategy)
            )
        }
    }
}&lt;/code&gt;&lt;/pre&gt;

  &lt;div style="text-align: left;"&gt;&lt;b&gt;List management improvements for TransformingLazyColumn&lt;/b&gt;&lt;/div&gt;
  &lt;p&gt;Significant improvements are here for advanced list management with &lt;a href="https://developer.android.com/training/wearables/compose/lists?version=3"&gt;TransformingLazyColumn&lt;/a&gt;, including enhanced padding support via the new &lt;code&gt;minimumVerticalContentPadding&lt;/code&gt; modifier, and other new features like snapping and reverse layout.&lt;/p&gt;
  &lt;pre&gt;&lt;span id="docs-internal-guid-8318da62-7fff-9292-fe40-471199d21647"&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #1967d2; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;val &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;listState = rememberTransformingLazyColumnState()&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #1967d2; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;val &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;transformationSpec = rememberTransformationSpec()&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #b80672; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;/*&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #b80672; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;* TransformingLazyColumn takes care of the horizontal and vertical&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #b80672; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;* padding for the list and handles scrolling.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #b80672; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;*/&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;ScreenScaffold(scrollState = listState) { contentPadding -&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TransformingLazyColumn(&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state = listState,&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;contentPadding = contentPadding&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;) {&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;item {&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ListHeader(&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modifier = Modifier&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.fillMaxWidth()&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.transformedHeight(&lt;/span&gt;&lt;span style="color: #1967d2; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;this&lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;, transformationSpec)&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.minimumVerticalContentPadding(&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ListHeaderDefaults.minimumTopListContentPadding&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;),&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transformation = SurfaceTransformation(transformationSpec)&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;) { Text(text = &lt;/span&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;"Header"&lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;) }&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;div style="text-align: left;"&gt;&lt;b&gt;Optimize ambient experiences with LocalAmbientModeManager&lt;/b&gt;&lt;/div&gt;
  &lt;p&gt;The all new &lt;a href="https://developer.android.com/reference/kotlin/androidx/wear/compose/foundation/rememberAmbientModeManager.composable"&gt;LocalAmbientModeManager&lt;/a&gt;&amp;nbsp;is optimized for handling ambient flows, giving developers greater control over how their ambient experiences are presented to users.&lt;/p&gt;
  &lt;pre&gt;&lt;code&gt;&lt;span id="docs-internal-guid-010f2f33-7fff-523a-0c76-c016a39e4028"&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #1967d2; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;override fun &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;onCreate(savedInstanceState: Bundle?) {&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setContent {&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #1967d2; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;val &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;ambientModeManager = rememberAmbientModeManager()&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CompositionLocalProvider(LocalAmbientModeManager provides ambientModeManager) {&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #1967d2; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;val &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;localAmbientModeManager = LocalAmbientModeManager.current&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #1967d2; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;val &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;ambientMode = localAmbientModeManager?.currentAmbientMode&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Column(&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;verticalArrangement = Arrangement.Center,&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;horizontalAlignment = Alignment.CenterHorizontally,&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modifier = Modifier.fillMaxSize(),&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;) {&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #1967d2; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;val &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;ambientModeName =&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #1967d2; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;when &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;(ambientMode) {&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #9334e6; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;is &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;AmbientMode.Interactive -&amp;gt; &lt;/span&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;"Interactive"&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #9334e6; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;is &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;AmbientMode.Ambient -&amp;gt; &lt;/span&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;"Ambient"&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #1967d2; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;else &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;-&amp;gt; &lt;/span&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;"Unknown"&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #1967d2; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;val &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;color = &lt;/span&gt;&lt;span style="color: #1967d2; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;if &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;(ambientMode &lt;/span&gt;&lt;span style="color: #9334e6; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;is &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;AmbientMode.Ambient) Color.Gray&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #1967d2; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;else &lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Color.Yellow&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(text = &lt;/span&gt;&lt;span style="color: #188038; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;"$ambientModeName Mode"&lt;/span&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;, color = color)&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-right: 0.75pt; margin-top: 0pt;"&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

  &lt;h3&gt;Protolayout &amp;amp; Tiles updates&lt;/h3&gt;
  &lt;p&gt;While we encourage developers to adopt the new Wear Widgets, we will continue to support our Protolayout and Tiles libraries for some time, and we’ve got new stable versions of both.&lt;/p&gt;
  &lt;p&gt;&lt;a href="https://developer.android.com/jetpack/androidx/releases/wear-protolayout"&gt;Protolayout 1.4&lt;/a&gt; and &lt;a href="https://developer.android.com/jetpack/androidx/releases/wear-tiles#1.6.0"&gt;Tiles 1.6&lt;/a&gt; work together to provide several notable new features including:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Inlined Image Resources:&lt;/strong&gt; &lt;code&gt;ImageResource&lt;/code&gt; can now be directly inlined within a layout, and Tiles now support automatic resource collection through &lt;code&gt;ProtoLayoutScope,&lt;/code&gt;removing the need for manual resource mapping and splitting into separate methods. In addition to better code quality, this improves Tiles loading latency via consolidation into a single binder call from system to the provider service.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Material3TileService:&lt;/strong&gt; Tiles can be implemented as a &lt;code&gt;Material3TileService&amp;nbsp;&lt;/code&gt;– an all-encompassing suspend function which returns both tile layout and resources, while automatically managing the &lt;code&gt;MaterialScope&lt;/code&gt; and &lt;code&gt;ProtoLayoutScope&lt;/code&gt; to simplify the development experience.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Dynamic Service Switching:&lt;/strong&gt; On Wear 7, multiple &lt;code&gt;TileService&lt;/code&gt; instances can now be grouped in the manifest to enable dynamic switching between different services that represent the same tile.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;Check out the new Tiles sample &lt;a href="https://github.com/android/wear-os-samples/tree/main/WearTilesKotlin"&gt;here&lt;/a&gt;.&lt;/p&gt;

  &lt;h3&gt;WFF 5&lt;/h3&gt;
  &lt;p&gt;Watch Face Format version 5 (WFF5) is now available with a host of new features to make it easier to build watch faces, including:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Enhanced Alignment Options:&lt;/strong&gt; Text elements like &lt;code&gt;TextCircular&lt;/code&gt; have additional alignment options,&amp;nbsp;including &lt;code&gt;verticalAlign&lt;/code&gt; on the same baseline for multiple text elements.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Auto-Size Enhancements:&lt;/strong&gt; &lt;code&gt;isAutoSize&lt;/code&gt; can now be used on &lt;code&gt;TextCircular&lt;/code&gt;,and a new attribute, &lt;code&gt;minSize&lt;/code&gt;, has been added to the &lt;code&gt;Font&lt;/code&gt; element to limit the minimum size when autosizing is enabled.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Blend Modes:&lt;/strong&gt; &lt;code&gt;Group&lt;/code&gt; and &lt;code&gt;ComplicationSlot&lt;/code&gt; elements now support &lt;a href="https://developer.android.com/training/wearables/wff/effects#blend-mode"&gt;blend mode&lt;/a&gt;, in addition to existing support on &lt;code&gt;Part*&lt;/code&gt; elements.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Stroke Joins:&lt;/strong&gt; &lt;code&gt;Stroke&lt;/code&gt; and &lt;code&gt;WeightedStroke&lt;/code&gt; elements now include a &lt;code&gt;join&lt;/code&gt; attribute.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Hierarchical settings:&lt;/strong&gt; User Styles can now be structured as a hierarchy, where some settings are visible only when other settings have specific values. User Styles can now enable or disable complication slots as well. These can be configured using the &lt;code&gt;childSettingIds&lt;/code&gt; and &lt;code&gt;complicationSlotIds&lt;/code&gt; on User Style Options.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;Check out our &lt;a href="https://developer.android.com/reference/wear-os/wff/watch-face?version=5"&gt;new developer guidance&lt;/a&gt; to learn more about WFF 5.&lt;/p&gt;

  &lt;h2&gt;Start building for Wear OS 7 now&lt;/h2&gt;
  &lt;p&gt;With these updates, there’s never been a better time to develop an app on Wear OS. These technical resources are a great place to learn more about how to get started:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;a href="https://developer.android.com/training/wearables"&gt;Learn about designing and developing for Wear OS&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://github.com/android/wear-os-samples/tree/main"&gt;Check out Wear OS samples on Github&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://developer.android.com/training/wearables/versions/7/setup"&gt;Get started with the latest Wear OS 7 emulator&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
  &lt;p&gt;We’re looking forward to seeing the experiences that you build on Wear OS!&lt;/p&gt;&lt;p&gt;Explore this announcement and all Google I/O 2026 updates on&amp;nbsp;&lt;span style="display: none;"&gt;&lt;/span&gt;&lt;a href="https://io.google/2026/?utm_source=blogpost&amp;amp;utm_medium=pr&amp;amp;utm_campaign=devblogs&amp;amp;utm_content=" rel="noopener nofollow noreferrer" target="_blank"&gt;io.google&lt;span style="display: none;"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;</content><link href="http://android-developers.googleblog.com/feeds/1438788910070212/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/whats-new-wear-os-7.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/1438788910070212" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/1438788910070212" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/whats-new-wear-os-7.html" rel="alternate" title="What's New in Wear OS 7" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV8I_uFj5D7kdofKcYD9PElp8MrAMpQ7zU63Fg38WC3gPL4j5F-Y4rhjJ_xzOmaGyKwQZIdc2mGZ0gOD2WW3wCcDErjfR-FETrywfJtJ9xp9LCVe_oObvz0iyUADH2gHQSU6_z446pJ3Xmblv2IKO2hazhyZUfljm6Zap4d1DHtE9DNpvIpEYqnF537ow/s72-c/Metacard_header_2048%20x%201323.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-7785986951855335897</id><published>2026-05-15T09:00:00.000-07:00</published><updated>2026-05-19T07:24:13.709-07:00</updated><title type="text">How FotMob leveraged cross-device discovery to score record Wear OS adoption</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg80VxHKrwfptXzxAAvrPTlaz69lqAo2JemshH4lt6ZznuIihU9CaoxgC63NowFjypCgr-gdGOW1HGwUHbl_n2YwPDiYpJEeZ5WJnjLbo3kOeuirq-XP03a5goNnd9_Dpp8t8ySUnaGthK9QRnOW0Z1MJd-DLgu2cA7MKKbXH9hoZa7LTr6SykMJG-UUew/s2469/AHow%20FotMob%20leveraged%20cross-device%20discovery%20to%20score%20record%20Wear%20OS%20adoption%20%20-%20Meta%20.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg80VxHKrwfptXzxAAvrPTlaz69lqAo2JemshH4lt6ZznuIihU9CaoxgC63NowFjypCgr-gdGOW1HGwUHbl_n2YwPDiYpJEeZ5WJnjLbo3kOeuirq-XP03a5goNnd9_Dpp8t8ySUnaGthK9QRnOW0Z1MJd-DLgu2cA7MKKbXH9hoZa7LTr6SykMJG-UUew/s2469/AHow%20FotMob%20leveraged%20cross-device%20discovery%20to%20score%20record%20Wear%20OS%20adoption%20%20-%20Meta%20.png" style="display: none;" /&gt;
&lt;div&gt;
  &lt;p dir="ltr"&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;i&gt;Posted by Garan Jenkin, Wear OS Developer Relations Engineer&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1naF-6EcKFwtu6UNDcyOmjTR2FbdtyY6JMaUd3MI9Y532n9OoZDSbwr2saXkktj9-hCi8uWfW7xVdUZl5cXwzZVAMG7470Z4_7V2uKY6UC6ZRDXWwH4mTgoIYoSr2ev0cv3MgyHlSF5CcgQs3bxnZIfePebbLCecphKt4xwJweh9gM9roOkKoxX6TAGQ/s8582/cross-device%20discovery%20to%20score%20record%20Wear%20OS%20adoption_Blog.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2601" data-original-width="8582" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1naF-6EcKFwtu6UNDcyOmjTR2FbdtyY6JMaUd3MI9Y532n9OoZDSbwr2saXkktj9-hCi8uWfW7xVdUZl5cXwzZVAMG7470Z4_7V2uKY6UC6ZRDXWwH4mTgoIYoSr2ev0cv3MgyHlSF5CcgQs3bxnZIfePebbLCecphKt4xwJweh9gM9roOkKoxX6TAGQ/s16000/cross-device%20discovery%20to%20score%20record%20Wear%20OS%20adoption_Blog.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p dir="ltr"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;FotMob recently experienced its largest single-day increase on Wear OS among its installed audience in 5 years, at 2-3x the daily average. The secret? A simple cross-device installation flow that helps users discover their Wear OS app directly from their phone.&lt;/p&gt;

  &lt;p dir="ltr"&gt;FotMob is one of the world’s most popular football (some call it soccer!) platforms, known for its mobile app that provides real-time scores, statistical analysis, and news.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggTFLltd9cZVgX1e0YoWOs3yGbtiElX2uMKmjc8oCJyDnXBoPE6QFrVRSW_sBnVI0l4ibneISA-r8MREc6YanQUPCc1-ewL8qHP_oJI2PwlIuUdbyDHxT1_OIcAsIQcUxE_K2keOTrKy12pjCiNFrYwnoeAWJFOAVGaN6GqToeBf1pegma55FJCOdZ2DA/s2500/fotmob-side-by-side%20(2).png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1875" data-original-width="2500" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggTFLltd9cZVgX1e0YoWOs3yGbtiElX2uMKmjc8oCJyDnXBoPE6QFrVRSW_sBnVI0l4ibneISA-r8MREc6YanQUPCc1-ewL8qHP_oJI2PwlIuUdbyDHxT1_OIcAsIQcUxE_K2keOTrKy12pjCiNFrYwnoeAWJFOAVGaN6GqToeBf1pegma55FJCOdZ2DA/w640-h480/fotmob-side-by-side%20(2).png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;

  &lt;h3&gt;FotMob is available on mobile and Wear OS&lt;/h3&gt;

  &lt;p dir="ltr"&gt;In addition to the mobile app, FotMob is available on Wear OS, allowing users to keep on top of the latest scores and results directly from their wrist.&lt;/p&gt;

  &lt;/div&gt;&lt;blockquote style="border-color: currentcolor; border-image: initial; border-style: none; border-width: medium; border: none; margin: 0px 0px 0px 40px; padding: 0px;"&gt;&lt;div&gt;&lt;p style="text-align: left;"&gt;“Many FotMob users follow matches live, and that often happens when they’re not actively using their phone,” says Roy Solberg, Android Tech Lead at FotMob. “Wear OS gives fans a quick way to glance at scores, match events, and updates directly from their wrist, so we saw it as a natural extension of the FotMob experience.”&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;p dir="ltr"&gt;By providing a smooth experience across different form factors, FotMob ensures that their users can continue to get the most from their platform, in the most convenient form. This includes ensuring that settings and preferences–such as favorite teams–are synced across devices.&lt;/p&gt;

  &lt;h3&gt;The Discovery Gap&lt;/h3&gt;

  &lt;p dir="ltr"&gt;Despite many FotMob users having a Wear OS device, FotMob realized that some users might not be aware of the Wear OS app. This led the team to consider technical options for how to educate users about and ultimately install the Wear OS app directly from within the core phone app.&lt;/p&gt;

  &lt;p dir="ltr"&gt;Fortunately, the Wearable library on Android and Wear OS provides exactly the building blocks that FotMob needed to create an in-app experience that would allow their users to do just that.&lt;/p&gt;

  &lt;h3&gt;Detecting Eligible Wear OS Devices&lt;/h3&gt;

  &lt;p dir="ltr"&gt;Within the FotMob phone app, the team used the NodeClient to identify connected Wear OS devices - candidates for the Wear OS app:&lt;/p&gt;

  &lt;pre&gt;val connectedNodes = nodeClient.connectedNodes.await()&lt;/pre&gt;

  &lt;p dir="ltr"&gt;Additionally, the team defined a capability within the Wear OS app, indicating that FotMob was installed on the device. This is defined as an XML resource in the Wear OS package, and then queried within the phone app:&lt;/p&gt;

  &lt;pre&gt;val nodesWithApp = capabilityClient
    .getCapability(CAPABILITY_WEAR_APP, CapabilityClient.FILTER_REACHABLE)
    .await()
    .nodes
  &lt;/pre&gt;

  &lt;p dir="ltr"&gt;By looking for only nodes without the capability, the team ensured the FotMob phone app only lists Wear OS devices without the app.&lt;/p&gt;

  &lt;h3&gt;Initiating the install flow&lt;/h3&gt;

  &lt;p dir="ltr"&gt;The FotMob team designed an educational half-page prompt that quickly makes the user aware of the opportunity, allowing them either to kick off the install flow, or dismiss it. This featured a prominent screenshot of the Wear OS experience, allowing the user to immediately see how the app might look on their watch.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FwplIueooMbJgoEXtKXz_tTcSJLIE1xkKnP9iK4QVt87N1ABS8j18vQMMkx1L_6WdC6_FhxrseRGm0PEFtQlGf4JpZg1-cicYozS8ursl55ELE1NmY4RfBekQ6cbkgQf0FVfCCZPgufls9PZz9S8I8lUQUnMSVk0VgbskyroY2otmaDfyUUH-EpB4IE/s1600/7mhoRMcXVgfD67T.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1600" data-original-width="756" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5FwplIueooMbJgoEXtKXz_tTcSJLIE1xkKnP9iK4QVt87N1ABS8j18vQMMkx1L_6WdC6_FhxrseRGm0PEFtQlGf4JpZg1-cicYozS8ursl55ELE1NmY4RfBekQ6cbkgQf0FVfCCZPgufls9PZz9S8I8lUQUnMSVk0VgbskyroY2otmaDfyUUH-EpB4IE/w302-h640/7mhoRMcXVgfD67T.png" width="302" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p dir="ltr"&gt;&lt;br /&gt;&lt;/p&gt;

  &lt;p dir="ltr"&gt;To start the installation, the app uses the RemoteActivityHelper API, to launch the Play Store on the watch:&lt;/p&gt;

  &lt;pre&gt;val remoteActivityHelper = RemoteActivityHelper(context)

remoteActivityHelper.startRemoteActivity(
    Intent(Intent.ACTION_VIEW)
        .setData("market://details?id=${context.packageName}".toUri())
        .addCategory(Intent.CATEGORY_BROWSABLE),
    nodeId
).await()
  &lt;/pre&gt;

  &lt;h3&gt;Results&lt;/h3&gt;

  &lt;p dir="ltr"&gt;&lt;i&gt;“The Wearable APIs made the implementation straightforward,” says Roy. “Being able to detect connected devices and query capabilities meant we could quickly determine whether the watch app was already installed. From there it was mostly about designing a prompt that felt helpful to users rather than intrusive.”&lt;/i&gt;&lt;/p&gt;

  &lt;p dir="ltr"&gt;The rollout of the cross-device installation feature saw the largest single-day increase in FotMob’s installed audience on Wear OS in 5 years, 2-3x higher than the normal install rate. Within 48 hours of the rollout reaching 100%, the watch app gained over 1,500 new installs¹.&lt;/p&gt;

  &lt;p dir="ltr"&gt;&lt;i&gt;“Within the first 10 days we saw a significant jump in new Wear OS installs,” says Roy. “The watch app has been around for years, but this confirmed that many users with compatible devices simply weren’t aware it existed.”&lt;/i&gt;&lt;/p&gt;

  &lt;h3&gt;Evolving cross-device installs&lt;/h3&gt;

  &lt;p dir="ltr"&gt;In addition to the solution employed by FotMob, we’ve now launched a library to make it even easier to implement these cross-device installation journeys through the In-App Install Prompts library.&lt;/p&gt;

  &lt;p dir="ltr"&gt;The following is an example of adding an installation prompt at the appropriate point in your app:&lt;/p&gt;

  &lt;pre&gt;val crossDevicePromptManager = CrossDevicePromptManagerFactory.create(activity)
val request = CrossDevicePromptInstallationRequest.create()

try {
    val info = crossDevicePromptManager.requestInstallationPromptFlow(request).await()
    crossDevicePromptManager.launchPromptFlow(activity, info).await()
} catch (e: CrossDevicePromptException) {
    Log.e(TAG, "Cross-device prompt failed with error: ${e.errorCode}", e)
}
  &lt;/pre&gt;

  &lt;h3&gt;Next steps: Start building your own cross-device journey today&lt;/h3&gt;

  &lt;p dir="ltr"&gt;Dive into the &lt;a href="https://github.com/android/wear-os-samples/tree/main/DataLayer"&gt;DataLayer sample&lt;/a&gt; to learn more about how to add cross-device functionality to your app, and explore the new &lt;a href="https://developer.android.com/guide/playcore/install-prompt"&gt;In-App Install Prompts library&lt;/a&gt;, providing you with options for how you help your users achieve cross-device installation.&lt;/p&gt;

  &lt;p dir="ltr"&gt;[1]. Install data from Play Developer Console&lt;/p&gt;
&lt;/div&gt;</content><link href="http://android-developers.googleblog.com/feeds/7785986951855335897/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/fotmob-wear-os-adoption-cross-device-discovery.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/7785986951855335897" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/7785986951855335897" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/fotmob-wear-os-adoption-cross-device-discovery.html" rel="alternate" title="How FotMob leveraged cross-device discovery to score record Wear OS adoption" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg80VxHKrwfptXzxAAvrPTlaz69lqAo2JemshH4lt6ZznuIihU9CaoxgC63NowFjypCgr-gdGOW1HGwUHbl_n2YwPDiYpJEeZ5WJnjLbo3kOeuirq-XP03a5goNnd9_Dpp8t8ySUnaGthK9QRnOW0Z1MJd-DLgu2cA7MKKbXH9hoZa7LTr6SykMJG-UUew/s72-c/AHow%20FotMob%20leveraged%20cross-device%20discovery%20to%20score%20record%20Wear%20OS%20adoption%20%20-%20Meta%20.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-4403485968855775094</id><published>2026-05-14T13:00:00.000-07:00</published><updated>2026-05-14T13:00:44.981-07:00</updated><title type="text">Bring Native Visibility to Your VoIP App Experience with Telecom's Latest Alpha</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE-vRiyQ4kvd23LM6SpFv87Dnedt0b429a_dL-l8kxF5I_jOw5bUC5bCtiRppRFyEDK2zzTTs4eZBuL884kSl1XU-I1t-FRAaVPrYcKbxuIn9O9TlUps07MY95iTWRPYKLiBkGP0kbeJZB3T_0gBdYgsCdXhLBuvn07b9WDfdw9aHkGaN0Iamd9xtN38U/s2469/Bring%20Native%20Visibility%20to%20Your%20VoIP%20App%20Experience%20with%20Telecom's%20Latest%20Alpha%20%5BDESIGN%5D%5BABL_66%5D_Meta.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE-vRiyQ4kvd23LM6SpFv87Dnedt0b429a_dL-l8kxF5I_jOw5bUC5bCtiRppRFyEDK2zzTTs4eZBuL884kSl1XU-I1t-FRAaVPrYcKbxuIn9O9TlUps07MY95iTWRPYKLiBkGP0kbeJZB3T_0gBdYgsCdXhLBuvn07b9WDfdw9aHkGaN0Iamd9xtN38U/s2469/Bring%20Native%20Visibility%20to%20Your%20VoIP%20App%20Experience%20with%20Telecom's%20Latest%20Alpha%20%5BDESIGN%5D%5BABL_66%5D_Meta.png" style="display: none;" /&gt;
&lt;article&gt;

  &lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;Posted by Nataraj KR, Android Developer Relations Engineer&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9xQMxtqoSQIbAxKCIbaoumfc0EE5hdczyg-mpbPZ4F_httnq6tvDVcgHuCEW_3wngkrGPfbpXgTGP4UD0WizMRHpq12aIO1OeSbJjkIDnCaeN1Ow-68aD_AOxJ-WJp-UnjxAhQSaZQC7Z97_ONSFV3rKln7_RtwJX-qZ_uWRehVwL3BD8S5OJL6rF0_c/s8583/Bring%20Native%20Visibility%20to%20Your%20VoIP%20App%20Experience%20with%20Telecom's%20Latest%20Alpha%20%5BDESIGN%5D%5BABL_66%5D_Blog.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2601" data-original-width="8583" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9xQMxtqoSQIbAxKCIbaoumfc0EE5hdczyg-mpbPZ4F_httnq6tvDVcgHuCEW_3wngkrGPfbpXgTGP4UD0WizMRHpq12aIO1OeSbJjkIDnCaeN1Ow-68aD_AOxJ-WJp-UnjxAhQSaZQC7Z97_ONSFV3rKln7_RtwJX-qZ_uWRehVwL3BD8S5OJL6rF0_c/s16000/Bring%20Native%20Visibility%20to%20Your%20VoIP%20App%20Experience%20with%20Telecom's%20Latest%20Alpha%20%5BDESIGN%5D%5BABL_66%5D_Blog.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;The initial launch of the Jetpack Telecom library introduced &lt;strong&gt;&lt;a href="https://developer.android.com/reference/androidx/core/telecom/CallsManager"&gt;CallsManager&lt;/a&gt;&lt;/strong&gt;, replacing the legacy &lt;code&gt;ConnectionService&lt;/code&gt; API to simplify VoIP integration. CallsManager streamlines call lifecycle management and audio routing while enabling interactions with remote surfaces like smartwatches, Bluetooth devices, and Android Auto. Additionally, it supports call extensions for richer features—such as participant handling, custom icons, call silencing and meeting summary on remote surfaces—all while maintaining backward compatibility down to Android O (API Level 26).&lt;p&gt;&lt;/p&gt;

  &lt;p&gt;Building on this foundation, &lt;strong&gt;Jetpack Telecom v1.1.0&lt;/strong&gt; brings native-level visibility and convenience to third-party VoIP apps. This latest release introduces powerful new capabilities, including unified call history, call log exclusion, and native callback functionality, making call management more seamless than ever for users.&lt;/p&gt;

  &lt;p&gt;Here is a closer look at what’s new and how you can implement these features in your applications.&lt;/p&gt;

  &lt;h3&gt;Bridging the Dialer Gap: Unified Call History and Callbacks&lt;/h3&gt;

  &lt;p&gt;Historically, users have had to open individual third-party apps to view their VoIP call history or return a missed call. With the new integrated call logging feature, system dialer apps can now surface call logs directly from third-party VoIP apps.&lt;/p&gt;

  &lt;p&gt;Even better, users can now initiate a callback to a VoIP contact straight from their native system dialer, streamlining the communication experience.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;To opt-in to this feature, do the following:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Register for Callbacks:&lt;/strong&gt; Your VoIP app must register a new system-protected intent: &lt;code&gt;TelecomManager.ACTION_CALL_BACK&lt;/code&gt;.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Log the Call:&lt;/strong&gt; Use &lt;code&gt;TelecomManager.addCall&lt;/code&gt; (or related Jetpack APIs) to ensure the system automatically logs the call.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Manage Call IDs:&lt;/strong&gt; When a call is registered, &lt;code&gt;CallControlScope.getCallId&lt;/code&gt; provides a unique UUID. The system dialer uses this exact &lt;code&gt;TelecomManager.EXTRA_UUID&lt;/code&gt; when creating the callback intent.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Initiate the Callback:&lt;/strong&gt; Your application must store and manage the call details associated with this UUID. When the system dialer fires the callback intent with the &lt;code&gt;EXTRA_UUID&lt;/code&gt;, your app can seamlessly resolve the ID and initiate the call with the correct details.&lt;/li&gt;
  &lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP3_mqHh_sNoVCImNaGdLBcLjhuZOtMcGDsABkpi-YxPaHMZqsjoLHqGhpuvsf9MeIpRk6F-i6_zGg-ls-vukcgaHOsmpNHA85lyVXtdxj03Y3AeVUjDJ_YwYOgBx70IHvSLIOvpRNsi9EMuwZIWsHlws1UdBZC23WDbL1r7OyQaZtFvvlHuj4XfkXkN4/s957/integrated_call_log.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="957" data-original-width="458" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP3_mqHh_sNoVCImNaGdLBcLjhuZOtMcGDsABkpi-YxPaHMZqsjoLHqGhpuvsf9MeIpRk6F-i6_zGg-ls-vukcgaHOsmpNHA85lyVXtdxj03Y3AeVUjDJ_YwYOgBx70IHvSLIOvpRNsi9EMuwZIWsHlws1UdBZC23WDbL1r7OyQaZtFvvlHuj4XfkXkN4/w191-h400/integrated_call_log.png" width="191" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

  &lt;h3&gt;Fine-Grained Control: Call Log Exclusion&lt;/h3&gt;

  &lt;p&gt;We recognize that not every VoIP call should be visible in the system's native dialer history. Whether for privacy reasons, ephemeral communication, or app-specific behavior, you need control over what gets surfaced.&lt;/p&gt;

  &lt;p&gt;To address this, we are introducing &lt;strong&gt;Call Log Exclusion&lt;/strong&gt;. You can now prevent specific calls from being logged into the system call logs by setting the &lt;code&gt;isLogExcluded&lt;/code&gt; boolean to true within &lt;code&gt;CallAttributesCompat&lt;/code&gt;. By configuring this flag, the call remains completely hidden from the system logs, and the native dialer will not display it.&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;Important Note on Compatibility&lt;/strong&gt;&lt;br /&gt;
  These integrated logging and callback features are available for devices running Android 16.1 (SDK 36.1) and higher. Refer &lt;a href="https://developer.android.com/build#module-level"&gt;here&lt;/a&gt; to compile your app with Android SDK 36.1.&lt;/p&gt;

  &lt;h3&gt;Get Started&lt;/h3&gt;

  &lt;p&gt;We encourage developers to test these integrations and explore how unified call history and callbacks can improve the daily user experience of your VoIP applications.&lt;/p&gt;

  &lt;p&gt;To help you get started and see these APIs in action, we have put together a sample application demonstrating the new integrations.&lt;/p&gt;

  &lt;p&gt;View the sample app here: &lt;a href="https://github.com/android/platform-samples/tree/main/samples/connectivity/telecom"&gt;https://github.com/android/platform-samples/tree/main/samples/connectivity/telecom&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;Check out the &lt;a href="https://developer.android.com/jetpack/androidx/releases/core#core-telecom_version_11_2"&gt;release notes&lt;/a&gt; and &lt;a href="https://developer.android.com/develop/connectivity/telecom/call-log-integration"&gt;documentation&lt;/a&gt; to start implementing these features today!&lt;/p&gt;&lt;p&gt;&lt;b&gt;Note: &lt;/b&gt;Although Jetpack Telecom v1.1.0 APIs are accessible for integration, the system dialer's ability to render native call logs is being introduced in phases, beginning with Google Meet. To safeguard against spam, native dialers utilize secure package allowlists to control VoIP display. For local testing of your callback and logging implementations, we recommend using the open-source &lt;a href="https://github.com/android/platform-samples/tree/main/samples/connectivity/telecom"&gt;Telecom Sample Dialer app&lt;/a&gt; as your emulator environment.&lt;/p&gt;
&lt;/article&gt;</content><link href="http://android-developers.googleblog.com/feeds/4403485968855775094/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/voip-native-visibility-telecom-alpha.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/4403485968855775094" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/4403485968855775094" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/voip-native-visibility-telecom-alpha.html" rel="alternate" title="Bring Native Visibility to Your VoIP App Experience with Telecom's Latest Alpha" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE-vRiyQ4kvd23LM6SpFv87Dnedt0b429a_dL-l8kxF5I_jOw5bUC5bCtiRppRFyEDK2zzTTs4eZBuL884kSl1XU-I1t-FRAaVPrYcKbxuIn9O9TlUps07MY95iTWRPYKLiBkGP0kbeJZB3T_0gBdYgsCdXhLBuvn07b9WDfdw9aHkGaN0Iamd9xtN38U/s72-c/Bring%20Native%20Visibility%20to%20Your%20VoIP%20App%20Experience%20with%20Telecom's%20Latest%20Alpha%20%5BDESIGN%5D%5BABL_66%5D_Meta.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-2610006460759906468</id><published>2026-05-12T07:00:00.000-07:00</published><updated>2026-05-12T10:46:59.672-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Product News"/><title type="text">Building for the Intelligence System on Android</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgPyXUMhkh7bXxLbPXLdtvMZMn0vrS-LlxVm9ou2ICbt9FR1MzTE8faiGCqJjmv3H3PMAV1qtGIbtpq5wbkFPpJKa42eYillgQkMnZutltYevtgEuZ56go6xuSqf6NuUVxNf5O0EXbnyvdKvRh5qet130MfcLktp7iw8sF5Qt79UpD9hxOh0i7nvwPxcc/s2469/Tas%20Developers%20cut__Meta.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgPyXUMhkh7bXxLbPXLdtvMZMn0vrS-LlxVm9ou2ICbt9FR1MzTE8faiGCqJjmv3H3PMAV1qtGIbtpq5wbkFPpJKa42eYillgQkMnZutltYevtgEuZ56go6xuSqf6NuUVxNf5O0EXbnyvdKvRh5qet130MfcLktp7iw8sF5Qt79UpD9hxOh0i7nvwPxcc/s2469/Tas%20Developers%20cut__Meta.png" style="display: none;" /&gt;

&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
  &lt;i style="text-align: left;"&gt;Posted by Matthew McCullough, VP, Product Management, Android Developer&lt;/i&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;i style="text-align: left;"&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
  
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX3KVWV3Alheky-_pjxYXcsK-TSZaZba1ps87xkMA7dxteE2nMeuIEnDUI07F8BA2D2lV-JguJRDiAtytd_ShySssw-SBwnkaYhaiT2S_pSrRYyYcm8YcxtN0g8mKCiBARjx2hQSv0cmOvz0oAkmaSy5HXwOs_quP4wLcpkGNF_umFg6mRB_jHEPsg2Tw/s8583/Tas%20Developers%20cut_Blog.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;
    &lt;img border="0" data-original-height="2601" data-original-width="8583" height="2632" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX3KVWV3Alheky-_pjxYXcsK-TSZaZba1ps87xkMA7dxteE2nMeuIEnDUI07F8BA2D2lV-JguJRDiAtytd_ShySssw-SBwnkaYhaiT2S_pSrRYyYcm8YcxtN0g8mKCiBARjx2hQSv0cmOvz0oAkmaSy5HXwOs_quP4wLcpkGNF_umFg6mRB_jHEPsg2Tw/w8684-h2632/Tas%20Developers%20cut_Blog.png" width="8684" /&gt;
  &lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Announced today during &lt;a href="https://developer.android.com/events/show"&gt;The Android Show&lt;/a&gt;, Android is transitioning from an operating system to an intelligence system, creating more opportunities for engagement with your apps. Through deep integration between hardware and software, Android devices will be able to handle the heavy lifting of anticipating user needs, so your app can focus on delivering that experience at the right moment. As part of this, we are &lt;a href="https://blog.google/products-and-platforms/platforms/android/gemini-intelligence"&gt;announcing&lt;/a&gt; Gemini Intelligence, a suite of new features that bring the best of Gemini to our most advanced Android devices.&lt;/p&gt;

&lt;div style="width: 100%; max-width: 100%; overflow: hidden; margin: 0 auto;"&gt;
  &lt;div style="position: relative; padding-bottom: 56.25%; height: 0;"&gt;
    &lt;iframe 
      src="https://www.youtube.com/embed/KvTRMSa1w4E?autoplay=1&amp;mute=1&amp;loop=1&amp;playlist=KvTRMSa1w4E" 
      style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;" 
      allow="autoplay; encrypted-media; frameborder=0; fullscreen" 
      allowfullscreen&gt;
    &lt;/iframe&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
    &lt;strong&gt;Task Automation with Gemini&lt;/strong&gt;
    &lt;p dir="ltr"&gt;
      With Gemini Intelligence, we’re expanding Gemini’s ability to &lt;a href="http://d.android.com/ai/computer-control"&gt;automate tasks&lt;/a&gt; across selected apps on behalf of the user with built-in transparency and control. This creates another avenue for user engagement, driving high-intent traffic to your app without requiring code or major engineering work from you. By allowing Gemini to navigate complex, multi-step tasks, such as ordering a latte from a cafe or building a shopping cart from a grocery list in a notes app, Gemini handles the logistics for users, so you’re free to focus on innovation and building great features.
    &lt;/p&gt;
    &lt;p dir="ltr"&gt;
      We know there are times when people like to browse, and others when they want to quickly handle a task. Initially launched with selected food and ridesharing partners to build a grocery order or request a ride, this capability is expanding across more verticals and form factors, including foldables, watches, cars, and XR glasses.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3vWWiL80R1so17heShv-g8MOc-L8mJu_VtRqAtVTYKIZA9QCiPjQnKN0fIF5Do9C-EyL5Uo8DDgZlv9qzJ0K2rro7_GO69VLFkYGq7FOBC69XExqqOwom4Xkvmk_97OoQVM0tiQU2dIUD06C_hlCLZVfIuKXobpQnxQW4bG8ZIieFMGT5pk2tcYYZXqk/s1080/TAS-Gif.gif" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1080" data-original-width="1080" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3vWWiL80R1so17heShv-g8MOc-L8mJu_VtRqAtVTYKIZA9QCiPjQnKN0fIF5Do9C-EyL5Uo8DDgZlv9qzJ0K2rro7_GO69VLFkYGq7FOBC69XExqqOwom4Xkvmk_97OoQVM0tiQU2dIUD06C_hlCLZVfIuKXobpQnxQW4bG8ZIieFMGT5pk2tcYYZXqk/w640-h640/TAS-Gif.gif" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div class="separator" style="clear: both;"&gt;&lt;br /&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Increase Engagement with AppFunctions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For more control over how agents interact with your app, you can use Android &lt;a href="https://developer.android.com/ai/appfunctions"&gt;AppFunctions&lt;/a&gt;. This empowers you to provide specific tools, such as services, data, and actions directly to the OS and agents, paired with natural language descriptions. The system can then discover and execute these tools across form factors, enabling users to trigger your app’s functionality through the intelligence system for richer and more customized experiences with task automation. We’ve started testing these early stage APIs in a private preview with apps like &lt;a href="https://play.google.com/store/search?q=kakaotalk"&gt;KakaoTalk&lt;/a&gt; to enable users to “send messages” or “initiate voice calls” through this new framework. AppFunctions have already enabled local execution of 25 apps’ use cases across device manufacturers. You can experiment with the API locally and already register your interest to join the AppFunctions &lt;a href="http://goo.gle/eap-af"&gt;Early Access Program&lt;/a&gt; for full integration opportunities.&lt;/p&gt;

&lt;p&gt;We’re providing multiple integration paths to meet you wherever you are on this intelligence journey, whether it’s with an effortless, “no-code change” app automation or using the AppFunctions API, to provide you with more control in an MCP-like fashion.&lt;/p&gt;

&lt;div&gt;&lt;strong&gt;Enhanced User Experience with Widgets&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwNJHRQ-bV8mNqFU8CgPU2R6wjw-u8YMHBvOmj6ewrIzuDLnz727fjjwNNm5NgW4I5pepqkWhTe0VuwaDjFy_jARJPS3vj4hXlykaldnUp9Tv6SPmEzdajHt4Kos0UuUXKkCAH_3doSZ194Hhcjqs6tROKTw7H20_9OC3A7ylVA4OWEJM6FoV2qE2aXhQ/s1729/IO26_105_TSV_auto_widgets_loop%20(2).gif" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="646" data-original-width="1729" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwNJHRQ-bV8mNqFU8CgPU2R6wjw-u8YMHBvOmj6ewrIzuDLnz727fjjwNNm5NgW4I5pepqkWhTe0VuwaDjFy_jARJPS3vj4hXlykaldnUp9Tv6SPmEzdajHt4Kos0UuUXKkCAH_3doSZ194Hhcjqs6tROKTw7H20_9OC3A7ylVA4OWEJM6FoV2qE2aXhQ/s16000/IO26_105_TSV_auto_widgets_loop%20(2).gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;

&lt;p dir="ltr"&gt;We’re elevating the user experience by expanding widget support to new form factors, starting with &lt;a href="http://developer.android.com/design/ui/cars/guides/flows/widgets"&gt;cars&lt;/a&gt;. This creates new opportunities for you to engage with users on 250M Android Auto compatible vehicles.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.android.com/develop/ui/compose/glance"&gt;Jetpack Glance&lt;/a&gt; makes it easy to build high-quality widgets, and it is now getting powerful new capabilities thanks to a new underlying framework called &lt;a href="https://developer.android.com/jetpack/androidx/releases/compose-remote"&gt;RemoteCompose&lt;/a&gt;.&lt;/p&gt;

&lt;ul style="text-align: left;"&gt;
  &lt;li&gt;&lt;b&gt;New richer, premium interactions: &lt;/b&gt;Built to be deeply adaptive and battery efficient, RemoteCompose allows Glance to deliver richer, more premium interactions. You can soon leverage new capabilities, including snapscroll, expressive buttons, and particle effects to create more engaging widgets.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Built-in Backward Compatibility: &lt;/b&gt;These expressive RemoteCompose features are supported out-of-the-box on Android 16 and above. By using Jetpack Glance as your API, you maintain complete backward compatibility. Your widgets will automatically leverage these premium UI features on newer devices while gracefully degrading to support older OS versions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p dir="ltr"&gt;Furthermore, RemoteCompose is the engine behind Create My Widget, a feature where users can ask Gemini to build fully adaptive custom widgets that can be resized and optimized seamlessly for the user's home screen or Wear OS watch.&lt;/p&gt;

&lt;p dir="ltr"&gt;&lt;strong&gt;Building Adaptively Beyond the Phone&lt;/strong&gt;&lt;/p&gt;&lt;p dir="ltr"&gt;From foldables, tablets, compatible cars, and XR headsets to the new&amp;nbsp;&lt;a href="http://developer.android.com/googlebook"&gt;Googlebooks&lt;/a&gt;, the canvas for Android apps has expanded across screens and form factors. Here are some of the updates to help you build adaptively:&lt;/p&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXYIUnP1miniMN6F5-co2UUL4-JPyNXMe-tFWDp0Y7hYHR-rv-TaY5smhs416fH_vgDUfAs4tM0eHdY8tC7XKCW5vQKE6OH6IsHEAPTKYC3KALz3dK1OD5SqX6ahtYIq3j8AjH0yIO_Gl6dk3d-tVK0Um-nlTHRgYIakG9LlGdXtuLYsiLgwxrB0QDG8k/s1880/morph-to-tablet.gif" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;
    &lt;img border="0" data-original-height="1214" data-original-width="1880" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXYIUnP1miniMN6F5-co2UUL4-JPyNXMe-tFWDp0Y7hYHR-rv-TaY5smhs416fH_vgDUfAs4tM0eHdY8tC7XKCW5vQKE6OH6IsHEAPTKYC3KALz3dK1OD5SqX6ahtYIq3j8AjH0yIO_Gl6dk3d-tVK0Um-nlTHRgYIakG9LlGdXtuLYsiLgwxrB0QDG8k/s16000/morph-to-tablet.gif" /&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;p dir="ltr"&gt;&lt;br /&gt;&lt;/p&gt;

&lt;ul style="text-align: left;"&gt;
  &lt;li&gt;&lt;b&gt;Jetpack Navigation 3:&lt;/b&gt; Our latest &lt;a href="https://developer.android.com/guide/navigation/navigation-3"&gt;Jetpack Navigation 3&lt;/a&gt; offers deeper adaptive support adding Scene decorators to the Scene API. Scene decorators can be used to modify the scene calculated by your app's scene strategy. For example, they can be used to add common UI elements such as top app bars and navigation bars/rails that you’d like to add at the scene, rather than nav entry level. NavDisplay now includes built-in functionality that &lt;a href="https://goo.gle/4c6GYCc"&gt;makes nav entries shared elements&lt;/a&gt; so now you can smoothly transition between scenes. Check out our &lt;a href="https://www.linkedin.com/safety/go/?url=https%3A%2F%2Fgoo%2Egle%2F47Nremk&amp;amp;urlhash=UkxR&amp;amp;mt=uOHz8Ihh6kWHjeLkaF4T2l_hcsc2xyLREGGFpnlMl9imj-qfu9P1k6qWM0liAVmypDYOVs9Bb04x1g3qvtJPLm2w03hUoWtZhP8JaF7Or26Y2HJKdHHNnYrECQ&amp;amp;isSdui=true"&gt;Nav3-recipes&lt;/a&gt; for more.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Jetpack Compose: &lt;/b&gt;Adopting Compose into your app remains the easiest way to start building adaptive UIs, and we want to ensure that you have the right level of architectural support. We are working on a new set of building blocks in Compose 1.11 for responsive layouts and customization with &lt;a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/grid"&gt;Grid&lt;/a&gt;, &lt;a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox"&gt;Flexbox&lt;/a&gt;, &lt;a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/mediaquery"&gt;MediaQuery&lt;/a&gt; and &lt;a href="https://developer.android.com/develop/ui/compose/styles"&gt;Style&lt;/a&gt;. We would love your &lt;a href="https://b.corp.google.com/issues/new?component=612128&amp;amp;pli=1&amp;amp;template=1253476"&gt;feedback&lt;/a&gt; on them before removing the Experimental flag.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Design guidance:&lt;/b&gt; Explore our updated &lt;a href="https://developer.android.com/design/ui/gallery"&gt;design gallery&lt;/a&gt; to be inspired, our new &lt;a href="https://developer.android.com/design/ui/desktop"&gt;desktop design hub&lt;/a&gt; or our &lt;a href="https://developer.android.com/design/ui/mobile/guides/layout-and-content/adapt-layout"&gt;adaptive layout guidance&lt;/a&gt; to get started.&lt;/li&gt;
&lt;/ul&gt;

&lt;p dir="ltr"&gt;For device-differentiated experiences, take advantage of the latest updates to:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p dir="ltr"&gt;&lt;strong&gt;Car App Library:&lt;/strong&gt; We’re streamlining development by expanding the &lt;a href="https://developer.android.com/jetpack/androidx/releases/car-app#version_18_2"&gt;Car App Library&lt;/a&gt;, which allows you to "build once" and deliver customized, distraction-optimized &lt;a href="https://developer.android.com/training/cars/apps/media"&gt;media&lt;/a&gt; experiences to both Android Auto and Android Automotive OS. We’re further enabling richer in-car engagement by expanding support for adaptive &lt;a href="https://developer.android.com/training/cars/parked/video"&gt;video apps&lt;/a&gt;, so that videos can played full screen when cars are parked.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p dir="ltr"&gt;&lt;strong&gt;Android XR SDK:&lt;/strong&gt; The &lt;a href="https://developer.android.com/develop/xr"&gt;Android XR SDK&lt;/a&gt; allows you to build deeply differentiated, custom experiences for a growing spectrum of XR devices, including upcoming &lt;a href="https://developer.android.com/develop/xr/devices#xr-glasses"&gt;wired XR glasses&lt;/a&gt; (like XREAL’s Project Aura), while existing adaptive apps automatically surface in immersive environments without additional developmental effort. You can get ready for display glasses by using &lt;a href="https://developer.android.com/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer"&gt;Jetpack Compose Glimmer&lt;/a&gt; to build glanceable UIs tailored for display glasses, alongside &lt;a href="https://developer.android.com/develop/xr/jetpack-xr-sdk#jetpack-projected"&gt;Jetpack Projected APIs&lt;/a&gt; to bridge app experiences from the phone to the user’s field of view. The developer preview 4 of the Android XR SDK, coming next week, introduces new interactive components like Title Chips and Button Groups that optimize input for glasses touchpads. It streamlines your workflow with the new ProjectedTestRule API to automate testing environments.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;A New Age for Your Users on Android&lt;/b&gt;&lt;/p&gt;

&lt;p dir="ltr"&gt;From the shift to an &lt;a href="https://d.android.com/ai"&gt;intelligence system&lt;/a&gt; to the expansion of new form factors like Googlebooks, Android is creating new ways for people to get more out of their device experiences with developers and app makers at the center of it.&lt;/p&gt;

&lt;p dir="ltr"&gt;Gemini Intelligence features will roll out in waves as they become ready, starting with the latest Samsung Galaxy and Google Pixel phones this summer. They will also become available across your Android devices including your watch, car, glasses and laptops later this year.&lt;/p&gt;

&lt;p dir="ltr"&gt;Stay tuned for even more news about app development in this new era &lt;a href="http://io.google"&gt;at Google I/O&lt;/a&gt; next week.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;</content><link href="http://android-developers.googleblog.com/feeds/2610006460759906468/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/the-android-show-developers-cut-2026.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/2610006460759906468" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/2610006460759906468" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/the-android-show-developers-cut-2026.html" rel="alternate" title="Building for the Intelligence System on Android" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgPyXUMhkh7bXxLbPXLdtvMZMn0vrS-LlxVm9ou2ICbt9FR1MzTE8faiGCqJjmv3H3PMAV1qtGIbtpq5wbkFPpJKa42eYillgQkMnZutltYevtgEuZ56go6xuSqf6NuUVxNf5O0EXbnyvdKvRh5qet130MfcLktp7iw8sF5Qt79UpD9hxOh0i7nvwPxcc/s72-c/Tas%20Developers%20cut__Meta.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-1822663939314447186</id><published>2026-05-08T09:00:00.000-07:00</published><updated>2026-05-13T12:50:15.494-07:00</updated><title type="text">Gratitude saw 25% higher retention for widget users</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw9zpO11QS8dmg_6pmafuky41sX7MilVwP9QIdzQEsam1dVItEczCKcs8LdjX7o8czMmAvrW5ykEjqpzs9E3n5lwMcUUe9jgCJKvdGoK9ZprY7aqoshoscaMdJSs8uEL2B0jgMHxVJFIGmjGLrkT9a0qLKEN_c1accHkg5rOz-q6X4wkb0X9H7YB0gJ6s/s320/AANDDM_Gratitude_Meta%20(1).png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw9zpO11QS8dmg_6pmafuky41sX7MilVwP9QIdzQEsam1dVItEczCKcs8LdjX7o8czMmAvrW5ykEjqpzs9E3n5lwMcUUe9jgCJKvdGoK9ZprY7aqoshoscaMdJSs8uEL2B0jgMHxVJFIGmjGLrkT9a0qLKEN_c1accHkg5rOz-q6X4wkb0X9H7YB0gJ6s/s320/AANDDM_Gratitude_Meta%20(1).png" style="display: none;" /&gt;&lt;div&gt;&lt;i&gt;Posted by Ash Nohe and Amrit Sanjeev, Android Developer Relations Engineers&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEpEi0Ko8PyGgsBRz-hPaQQWbsT59enmhsrxRpO65JLd60uw6QPdKnzfFYANsWdHHyYTebpa4Xx_VFAAoXTg5kz_A_Ucw3shWCE4-2zv4DuOOqXGRdC4Oh5EotyTn8t7uoYGLanaEWjL1EwGzwpBIx4EEFZ2oDL1fFmxKlRseyLy16_rB-pvvkglDDQOo/s1280/AANDDM_Gratitude_Header_R3%20(1).gif" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="720" data-original-width="1280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEpEi0Ko8PyGgsBRz-hPaQQWbsT59enmhsrxRpO65JLd60uw6QPdKnzfFYANsWdHHyYTebpa4Xx_VFAAoXTg5kz_A_Ucw3shWCE4-2zv4DuOOqXGRdC4Oh5EotyTn8t7uoYGLanaEWjL1EwGzwpBIx4EEFZ2oDL1fFmxKlRseyLy16_rB-pvvkglDDQOo/s16000/AANDDM_Gratitude_Header_R3%20(1).gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;

&lt;p&gt;Practicing gratitude may decrease symptoms of depression and anxiety, and improve mental health and life satisfaction&lt;sup&gt;1&lt;/sup&gt;. Consistent gratitude practice may lead to sustained improvements that last months&lt;sup&gt;2&lt;/sup&gt;. The mindfulness app &lt;a href="https://play.google.com/store/apps/details?id=com.northstar.gratitude&amp;amp;hl=en_US"&gt;Gratitude&lt;/a&gt; encourages consistency through micro daily journaling, affirmations, and vision boards. The app has over 6 million downloads, 150 thousand 5-star ratings, and 100 million journal entries logged.&lt;/p&gt;

&lt;p&gt;Developers Divij Gupta and Narendra Aanjna developed widgets for each of their app’s core user journeys. Their goal was to meet users in their everyday moments without requiring the overhead of a full app session.&lt;/p&gt;By surfacing interactive journaling prompts, affirmations, vision board images and metrics directly on the user’s home screen, the team lowered the barrier to entry for daily reflection and reported a 25% increase in retention for widget users and ~1K weekly journal entries from widgets. This increase in user loyalty translates to tangible health outcomes for the users: consistent habit formations that support long-term mental well-being.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote style="border-color: currentcolor; border-image: initial; border-style: none; border-width: medium; border: none; margin: 0px 0px 0px 40px; padding: 0px;"&gt;&lt;div style="text-align: left;"&gt;“Widgets helped us make the app more present in users’ daily routines by providing quick inspiration, reminders, and reflections directly on the home screen. This increased engagement and made it easier for users to stay consistent with their mindfulness practices.” – Divij Gupta&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZz08QE2_imlZmD6d7dCIeZIeWjGKb0CwZaTQETj-VDi0TXHzYl1qn_cjMZ5yJiLRZq3Y9JOiF4bjvV3CnkSaGvGj6Qz0FKMXJHBxORrgBzNTz3mj1Gzu7xEd6kVTdShk1RyHjcblHOqLM2ubBOMjxZIv2JZuXwUFY-NMxRZM8ZVOmS_xG6aBIdOJsuc4/s1280/AANDDM_Gratitude_01.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="720" data-original-width="1280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZz08QE2_imlZmD6d7dCIeZIeWjGKb0CwZaTQETj-VDi0TXHzYl1qn_cjMZ5yJiLRZq3Y9JOiF4bjvV3CnkSaGvGj6Qz0FKMXJHBxORrgBzNTz3mj1Gzu7xEd6kVTdShk1RyHjcblHOqLM2ubBOMjxZIv2JZuXwUFY-NMxRZM8ZVOmS_xG6aBIdOJsuc4/s16000/AANDDM_Gratitude_01.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;

&lt;h2 style="font-size: 1.75rem; font-weight: 700; margin-top: 40px;"&gt;The Challenge: modernize without decreasing retention&lt;/h2&gt;
While the impact of widgets was clear, Gratitude’s original XML-based RemoteViews implementation created technical debt. As the app’s design system evolved toward Material 3, the legacy widgets became increasingly difficult to align with the modern UI. Every visual update required manual XML overhead and brittle workarounds, slowing developer velocity.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXMmCJ_VjwU1r406UM7HADpfr_g0wI9pmJBoOyCPS7eG8zLy3HHFWL5dE5yzaPk9AMzlLH11CwuEf-x3OOG8M1iGIAgdKYhNB6n63KhDHmZYi_zqTewVocHYAP4dtzN09mfKMSXZPar2qd1s1tPUPfhus4Ej10bH736KjX6_YSx0BzafeUdgS3poNxFWM/s1280/AANDDM_Gratitude_02.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="720" data-original-width="1280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXMmCJ_VjwU1r406UM7HADpfr_g0wI9pmJBoOyCPS7eG8zLy3HHFWL5dE5yzaPk9AMzlLH11CwuEf-x3OOG8M1iGIAgdKYhNB6n63KhDHmZYi_zqTewVocHYAP4dtzN09mfKMSXZPar2qd1s1tPUPfhus4Ej10bH736KjX6_YSx0BzafeUdgS3poNxFWM/s16000/AANDDM_Gratitude_02.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;

&lt;h2 style="font-size: 1.75rem; font-weight: 700; margin-top: 40px;"&gt;The Solution Part 1: migrating from XML to Jetpack Glance&lt;/h2&gt;To modernize their widgets, the team turned to &lt;a href="https://developer.android.com/develop/ui/compose/glance"&gt;Jetpack Glance&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;They first consulted the &lt;a href="https://developer.android.com/design/ui/widget"&gt;Widgets on Android&lt;/a&gt; design page and &lt;a href="https://developer.android.com/design/ui/mobile/guides/widgets/layouts"&gt;canonical widget layouts&lt;/a&gt; to understand best practices for displaying information within a limited amount of space.&lt;br /&gt;&lt;br /&gt;Then, they migrated their widget suite to Jetpack Glance. This declarative framework enabled the developers to move from planning to shipping in less than a month, saving about 50% development time, and saw two additional advantages:&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Replacing restrictive XML layouts with declarative code made the codebase easier to read, maintain, and reduced developer effort.&lt;/li&gt;&lt;li&gt;Jetpack Glance allowed the team to more easily implement &lt;a href="https://developer.android.com/develop/ui/compose/glance/theme"&gt;dynamic colors&lt;/a&gt;, flexible &lt;a href="https://developer.android.com/develop/ui/compose/glance/build-ui#sizemode.exact"&gt;resizing&lt;/a&gt;, and expanded configuration options. These features ensure the widgets harmonize with a user's unique home screen layout.&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic2TALbS6ugDBekgD3_oRnhpqNwUVQb8ojb7HXmYEBcZgSxfWXI7BS8puLeAo80NDJe-ECsOcjs6DKlSzOsgR6DA0Qz51uflbwbYyDFcimB4PMmk9N-xlT7niIp2zJ2OXCcAnzW7nqmX5SxfVE-IgpwF2EIhVZkf_m9klyqPX7c_X9N9sk_4Ga_JBCLlA/s1280/AANDDM_Gratitude_03.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="720" data-original-width="1280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic2TALbS6ugDBekgD3_oRnhpqNwUVQb8ojb7HXmYEBcZgSxfWXI7BS8puLeAo80NDJe-ECsOcjs6DKlSzOsgR6DA0Qz51uflbwbYyDFcimB4PMmk9N-xlT7niIp2zJ2OXCcAnzW7nqmX5SxfVE-IgpwF2EIhVZkf_m9klyqPX7c_X9N9sk_4Ga_JBCLlA/s16000/AANDDM_Gratitude_03.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;The following GIF shows two Gratitude widgets and adaptive resizing:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWMfVzMksvsevkBLEmHuqGjCKKHll0wvQch6S6gqes5pmneIyfCU580UbF2ooXTzD7d1Kf4Qi7oNqVM4_ZG50KFBwlSqMQt7snCGVV1i8BfyCAvxXzacVTIsgFjYrUzfX9vG9RZedkccO_9MxAuZU4UL_QWeDgu31lqGSAN02zpKF0Y-7cAy9A3B8ztZs/s1080/GratitudeAdaptiveWidgets.gif" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1080" data-original-width="482" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWMfVzMksvsevkBLEmHuqGjCKKHll0wvQch6S6gqes5pmneIyfCU580UbF2ooXTzD7d1Kf4Qi7oNqVM4_ZG50KFBwlSqMQt7snCGVV1i8BfyCAvxXzacVTIsgFjYrUzfX9vG9RZedkccO_9MxAuZU4UL_QWeDgu31lqGSAN02zpKF0Y-7cAy9A3B8ztZs/w286-h640/GratitudeAdaptiveWidgets.gif" width="286" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;While Glance simplified the UI, the team noted that testing across various OEM launchers was also essential to ensure layout consistency across devices.&lt;/p&gt;

&lt;p&gt;The team also implemented &lt;a href="https://developer.android.com/develop/ui/compose/glance/generated-previews"&gt;Generated Widget Previews&lt;/a&gt; so users can see personalized previews. They noted that testing Generated Previews could be slow, as the previews are rate limited to preserve battery. To bypass the rate limiting for testing, use the adb command:&lt;/p&gt;

&lt;code&gt;adb shell device_config put systemui&amp;nbsp;&lt;/code&gt;&lt;div&gt;&lt;code&gt;generated_preview_api_reset_interval_ms 0&lt;/code&gt;

&lt;p&gt;All of their efforts have made the Gratitude widget &lt;a href="https://developer.android.com/docs/quality-guidelines/widget-quality"&gt;high quality and differentiated&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Solution Part 2: promote new widgets in-app&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The developers then used&lt;a href="https://developer.android.com/develop/ui/compose/glance/pin-in-app"&gt; in-app widget pinning&lt;/a&gt; to increase widget discoverability and widget installs. Asking users to install widgets at a contextually relevant moment within the app helps users find their widgets without needing to go through the system widget picker. The following GIF shows Gratitude’s bottom sheet to add widgets from within the app:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYSftgbMBJSFMsZiusz8VNsuJjwl4vlBqNN087CuYFbzpRc14eA_5sp48XiIMbryPfZ5IoJQqJz_WcAtkdeYSk5be1QMTgx-0YnFmMF99Ae79mlYcwi9j2pfmoLLCmCYDAVFSfLpN9uSATakHkWAWdT1mvF4u5sgVRnCcY2Wfzyq4xoVOTYT6A4Xmxrqk/s1080/GratitudeInAppFlow.gif" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1080" data-original-width="486" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYSftgbMBJSFMsZiusz8VNsuJjwl4vlBqNN087CuYFbzpRc14eA_5sp48XiIMbryPfZ5IoJQqJz_WcAtkdeYSk5be1QMTgx-0YnFmMF99Ae79mlYcwi9j2pfmoLLCmCYDAVFSfLpN9uSATakHkWAWdT1mvF4u5sgVRnCcY2Wfzyq4xoVOTYT6A4Xmxrqk/w288-h640/GratitudeInAppFlow.gif" width="288" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;The team also refactored widget packages, which changed widget receiver paths and caused widgets to be deleted from users’ home screens. Using previously stored user flags to identify widget users, they triggered another &lt;code&gt;requestPinGlanceAppWidget&lt;/code&gt; prompt inviting widget users to use the new modernized widgets. &lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote style="border-color: currentcolor; border-image: initial; border-style: none; border-width: medium; border: none; margin: 0px 0px 0px 40px; padding: 0px;"&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;Developer Tip&lt;/b&gt;: To maintain widget installs while migrating from RemoteViews to Jetpack Glance, ensure your &lt;code&gt;GlanceAppWidgetReceiver&lt;/code&gt; uses the same class name and package as your previous &lt;code&gt;AppWidgetProvider&lt;/code&gt; in the Android Manifest. If a new class name or package location is required, follow the Gratitude’s lead by using in-app pinning to help users restore their widgets.&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;The strategy is working, as &lt;b&gt;10% of total DAU&lt;/b&gt; have adopted widgets.&lt;/div&gt;&lt;div&gt;&amp;nbsp; &lt;br /&gt;&lt;strong&gt;Conclusion&amp;nbsp;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This Gratitude story shows that widgets can be tools for habit formation. By implementing quick actions to self-reflect right from the home screen, the team may have improved user loyalty. Gratitude reduced technical debt and modernized their widgets by adopting Jetpack Glance, and prompted users to add widgets within their app.&lt;/div&gt;&lt;blockquote style="border-color: currentcolor; border-image: initial; border-style: none; border-width: medium; border: none; margin: 0px 0px 0px 40px; padding: 0px;"&gt;&lt;div&gt;&lt;div&gt;&lt;p style="text-align: left;"&gt;&lt;i&gt;“Our experience with Jetpack Glance has been excellent. The Compose-based approach feels much more modern, flexible, and aligned with the way we build the rest of our UI today. It allows us to express widget layouts more naturally, reuse familiar Compose components, and iterate on UI changes much faster. Many of the UI constraints we previously faced with RemoteViews are no longer an issue, which made it easier to build widgets that better match our app’s design and experience.” – &lt;strong&gt;Divij Gupta&lt;/strong&gt;&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;

&lt;p&gt;&lt;strong&gt;Getting Started&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To get started with Jetpack Glance and learn about the technologies mentioned in this post, see these guides:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://developer.android.com/develop/ui/compose/glance"&gt;Jetpack Glance Overview&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://developer.android.com/design/ui/widget"&gt;Widgets on Android&lt;/a&gt; design page&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://developer.android.com/design/ui/mobile/guides/widgets/layouts"&gt;Canonical widget layouts&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://developer.android.com/develop/ui/compose/glance/generated-previews"&gt;Generated Widget Previews&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://developer.android.com/docs/quality-guidelines/widget-quality"&gt;Widget Quality Tiers&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://developer.android.com/develop/ui/compose/glance/pin-in-app"&gt;In-app widget pinning&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://developer.android.com/develop/ui/compose/glance/theme"&gt;Dynamic colors&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://developer.android.com/develop/ui/compose/glance/build-ui#sizemode.exact"&gt;Resizing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://developer.android.com/codelabs/glance#3"&gt;Configuration activities&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;See other widget case studies:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://android-developers.googleblog.com/2023/10/googles-contacts-app-created-new-widget-faster-using-jetpack-glance.html"&gt;Google’s Contacts app created a new widget 25% faster using Jetpack Glance&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://android-developers.googleblog.com/2025/02/soundcloud-uses-jetpack-glance-to-build-liked-tracks-widget-in-just-2-weeks.html"&gt;SoundCloud uses Jetpack Glance to build Liked Tracks widget in just 2 weeks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1: Diniz, G., Korkes, L., Tristão, L. S., Pelegrini, R., Bellodi, P. L., &amp;amp; Bernardo, W. M. (2023). The effects of gratitude interventions: a systematic review and meta-analysis. einstein (Sao Paulo)., 21, eRW0371. &lt;a href="https://doi.org/10.31744/einstein_journal/2023RW0371"&gt;https://doi.org/10.31744/einstein_journal/2023RW0371&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2: Bohlmeijer, E., Kraiss, J., Schotanus-Dijkstra, M., &amp;amp; ten Klooster, P. (2022). Gratitude as mood mediates the effects of a 6-weeks gratitude intervention on mental well-being: post hoc analysis of a randomized controlled trial. Front. Psychol., 12, 799447. &lt;a href="https://doi.org/10.3389/fpsyg.2021.799447"&gt;https://doi.org/10.3389/fpsyg.2021.799447&lt;/a&gt;&lt;/p&gt;
 
&lt;/div&gt;</content><link href="http://android-developers.googleblog.com/feeds/1822663939314447186/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/how-gratitude-widgets-boosted-user-retention-25-percent.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/1822663939314447186" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/1822663939314447186" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/how-gratitude-widgets-boosted-user-retention-25-percent.html" rel="alternate" title="Gratitude saw 25% higher retention for widget users" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw9zpO11QS8dmg_6pmafuky41sX7MilVwP9QIdzQEsam1dVItEczCKcs8LdjX7o8czMmAvrW5ykEjqpzs9E3n5lwMcUUe9jgCJKvdGoK9ZprY7aqoshoscaMdJSs8uEL2B0jgMHxVJFIGmjGLrkT9a0qLKEN_c1accHkg5rOz-q6X4wkb0X9H7YB0gJ6s/s72-c/AANDDM_Gratitude_Meta%20(1).png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-7880967057636970023</id><published>2026-05-07T10:00:00.000-07:00</published><updated>2026-05-07T10:00:58.632-07:00</updated><title type="text">A look ahead: Making it easier and faster to publish safer apps</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/a/AVvXsEhc5qnVxjEEP22gF14N-wmPsBOq1cBVT2FvT2GTugRoicPgmdI1aN9hxuCX4v7a1_w4V8Fogy2J2i4rH6psQovEEmagV2SDTYOApHu71ch5Vpml4SiYHo_7xiLVutMUZvewVD_t5fs_9oFkv6dbBhAzIHaSSAZt1nU_qd3JinS1bTin-V4TaFclPSDFROY" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/a/AVvXsEhc5qnVxjEEP22gF14N-wmPsBOq1cBVT2FvT2GTugRoicPgmdI1aN9hxuCX4v7a1_w4V8Fogy2J2i4rH6psQovEEmagV2SDTYOApHu71ch5Vpml4SiYHo_7xiLVutMUZvewVD_t5fs_9oFkv6dbBhAzIHaSSAZt1nU_qd3JinS1bTin-V4TaFclPSDFROY" style="display: none;" /&gt;&lt;name content="IMG" twitter:image=""&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;em style="text-align: left;"&gt;Posted by&amp;nbsp;&lt;/em&gt;&lt;i style="text-align: left;"&gt;Vijaya Kaza, VP, Product, App &amp;amp; Ecosystem Trust&lt;/i&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLghscaNA3nU6Qa-oyzasBkKehJTJvcxV6PNJ5DGlwO8CML-6rT9DSnoIsQs-1QhmLeAUOd7q6w1zK2ciM8Or3HWfPm3bMWIPMBV2DuvLRUHYegUVBKBETMJolYZQyVYsAnGgqA8Sb8lB_Srjv4h9ZuWgzPM2jnmFGqFNP9IwOsG00VE0bZlQZVRgyM2A/s4209/260429_A%20look%20ahead%20to%202026_Header_4209%20x%201253%20px.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLghscaNA3nU6Qa-oyzasBkKehJTJvcxV6PNJ5DGlwO8CML-6rT9DSnoIsQs-1QhmLeAUOd7q6w1zK2ciM8Or3HWfPm3bMWIPMBV2DuvLRUHYegUVBKBETMJolYZQyVYsAnGgqA8Sb8lB_Srjv4h9ZuWgzPM2jnmFGqFNP9IwOsG00VE0bZlQZVRgyM2A/s16000/260429_A%20look%20ahead%20to%202026_Header_4209%20x%201253%20px.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;The mobile ecosystem is always evolving, bringing both new opportunities and new threats. Through these changes, Android and Google Play remain committed to ensuring that billions of users can continue to enjoy their apps with confidence and developer innovation can thrive. Earlier this year, we shared how &lt;a href="https://security.googleblog.com/2026/02/keeping-google-play-android-app-ecosystem-safe-2025.html"&gt;Android and Google Play kept the ecosystem safe in 2025&lt;/a&gt; by deepening our investments in AI and real-time defenses. Today, we’re giving you a look at how we’re &lt;b&gt;making it easier and faster than ever for millions of developers to publish safer apps.&lt;/b&gt;&lt;/p&gt;&lt;/name&gt;&lt;div class="post-container"&gt;

&lt;h3&gt;Simpler ways to build safer apps from the start&lt;/h3&gt;
&lt;p&gt;To help you catch potential issues before you hit submit, we’re integrating insights and new customized guidance built with AI to your publishing journey:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;Catch policy issues while you code&lt;/b&gt; with expanded Play Policy Insights in Android Studio, which now offer warnings for common issues, like missing login credentials. Later this year, when you choose to connect your Play developer account directly to Android Studio, you’ll get tailored insights.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Choose the right SDKs with confidence&lt;/b&gt; by leveraging &lt;a href="https://play.google.com/sdks"&gt;SDK Index&lt;/a&gt;. Later this year, we are bringing SDK insights directly into your development workflow so you can instantly see which SDKs comply with Play policies.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;


&lt;h3&gt;More powerful protection for your business and users&lt;/h3&gt;
&lt;p&gt;With new ways to stay ahead of fraud and abuse, and better tools to protect your users, we’re also making it easier to secure your app’s revenue and reputation.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;Detect security threats and abuse faster &lt;/b&gt;with our &lt;a href="https://android-developers.googleblog.com/2025/10/stronger-threat-detection-simpler.html"&gt;stronger Play Integrity API&lt;/a&gt;, which developers rely on to make billions of checks everyday to help keep their business secure. With significantly shorter warm-up latency, you can use these real-time checks in your most speed-critical user journeys, like logins or payments, to catch unauthorized access and risky interactions.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Simplify how you manage user privacy&lt;/b&gt; with easy-to-integrate tools like the &lt;a href="https://android-developers.googleblog.com/2026/03/contact-picker-privacy-first-contact.html"&gt;contact picker&lt;/a&gt; and &lt;a href="https://android-developers.googleblog.com/2026/03/location-privacy.html"&gt;location button&lt;/a&gt; to give users clearer choices. We're also &lt;a href="http://android-developers.googleblog.com/2026/04/giving-users-clearer-choice-and-everyone-a-safer-more-trusted-app-ecosystem.html#contact-picker"&gt;updating our policies&lt;/a&gt; to raise the standard for user privacy.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Future-proofing app signing security&lt;/b&gt; on your behalf. We’re adding support for &lt;a href="https://blog.google/security/security-for-the-quantum-era-implementing-post-quantum-cryptography-in-android/"&gt;post-quantum cryptography&lt;/a&gt; in Play App Signing this year, which will protect your apps and app updates from potential threats with the emergence of quantum computing.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;



&lt;h3&gt;Faster, more predictable app publishing&lt;/h3&gt;
&lt;p&gt;We know how important it is to maintain a predictable release cycle, so we’re making the publishing process faster and more transparent.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;Avoid unexpected review rejections&lt;/b&gt; with our expanding pre-review checks, which now identify unnecessary photo permission requests and other common violations before you submit.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Improve the speed and predictability of your review cycles&lt;/b&gt; by using the &lt;a href="https://developers.google.com/android-publisher/api-ref/rest/v3/applications.tracks.releases/list"&gt;new release status API&lt;/a&gt; to check if your release is &lt;a href="https://developers.google.com/android-publisher/api-ref/rest/v3/applications.tracks.releases#releaselifecyclestate"&gt;approved and published&lt;/a&gt;.&amp;nbsp;We also added a new &lt;a href="https://developers.google.com/android-publisher/api-ref/rest/v3/edits/commit#changesinreviewbehaviortype"&gt;way&lt;/a&gt; for you to block new commits if a review is already in progress, so you don’t unintentionally restart your place in the queue.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Publish your releases even faster&lt;/b&gt; when we change our review architecture later this year to enable parallel publishing and faster reviews for your test tracks. You’ll be able to isolate your closed, open, and production tracks so that a review on one track no longer holds up updates on another.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Track your release history with the Submission history log &lt;/b&gt;later this year. Built at your request, this feature provides a complete record of every time you send an app or update for review and its status. This makes it easier for your team to coordinate and troubleshoot without digging through multiple menus.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Manage business changes securely&lt;/b&gt; with the &lt;a href="https://support.google.com/googleplay/android-developer/answer/16909862"&gt;account transfers feature&lt;/a&gt; to help you move ownership to new partners, entities, or team members (&lt;a href="https://goo.gle/account-transfer-video"&gt;video&lt;/a&gt;). We’ve designed this highly developer-requested feature with safeguards to protect your business from fraud and account hijacking.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Get the right policy support when you need it. &lt;/b&gt;In the coming months you'll see&amp;nbsp;AI-powered recommendations &lt;a href="https://play.google.com/console/developers/help-and-support"&gt;directly in your Play Console&lt;/a&gt; that help you resolve minor issues immediately. For more complex issues, you can create a ticket to connect with our policy specialists. We’re also giving new developers more guided support, including new &lt;a href="https://playacademy.exceedlms.com/student/path/1855654-preparing-for-your-app-submission"&gt;Play Academy&lt;/a&gt; courses, to publish their first app with confidence. Later this year, we’ll expand this coaching experience for new developers.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;






&lt;h3&gt;Stronger security across the ecosystem&lt;/h3&gt;
&lt;p&gt;Finally, we’re bringing &lt;a href="https://developer.android.com/developer-verification"&gt;developer verification&lt;/a&gt; to the entire Android ecosystem to add another layer of security and make it much harder for malicious actors to repeatedly spread harm. Starting in September, these protections will roll out in select countries to help users feel more confident in the apps they download and without changing most users’ install experience. We will also update Android Bench to uplift the entire ecosystem’s ability to build and launch safer, higher quality apps using generative AI.&lt;/p&gt;

&lt;h3&gt;What’s next&lt;/h3&gt;
&lt;p&gt;Google Play is committed to helping you grow your business while keeping users safe, and we appreciate your continued feedback on the tools and programs. Thank you for partnering with us to make Android and Google Play a secure, trusted platform for everyone.&lt;/p&gt;
  &lt;ul class="seo-keywords" style="display: none;"&gt;
    &lt;li&gt;Android security ecosystem&lt;/li&gt;
    &lt;li&gt;Play Policy Insights&lt;/li&gt;
    &lt;li&gt;SDK compliance tools&lt;/li&gt;
    &lt;li&gt;Real-time fraud detection&lt;/li&gt;
    &lt;li&gt;Post-quantum cryptography for apps&lt;/li&gt;
    &lt;li&gt;Google Play parallel publishing&lt;/li&gt;
    &lt;li&gt;Release status API&lt;/li&gt;
    &lt;li&gt;Developer account transfers&lt;/li&gt;
    &lt;li&gt;AI-powered developer support&lt;/li&gt;
    &lt;li&gt;Android developer verification&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</content><link href="http://android-developers.googleblog.com/feeds/7880967057636970023/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/making-it-easier-to-build-publish-safer-apps.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/7880967057636970023" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/7880967057636970023" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/making-it-easier-to-build-publish-safer-apps.html" rel="alternate" title="A look ahead: Making it easier and faster to publish safer apps" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/a/AVvXsEhc5qnVxjEEP22gF14N-wmPsBOq1cBVT2FvT2GTugRoicPgmdI1aN9hxuCX4v7a1_w4V8Fogy2J2i4rH6psQovEEmagV2SDTYOApHu71ch5Vpml4SiYHo_7xiLVutMUZvewVD_t5fs_9oFkv6dbBhAzIHaSSAZt1nU_qd3JinS1bTin-V4TaFclPSDFROY=s72-c" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-8100808452965841686</id><published>2026-05-04T10:00:00.000-07:00</published><updated>2026-05-04T10:00:09.425-07:00</updated><title type="text">Gemini and Firebase AI Logic enabled Karrot to increase sales with a translation feature built in under 2 weeks</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/a/AVvXsEjwWH7u_Gt1OfQkQRKsmhUj7mkOrMrg6GZgc8H8EQVzIncVOZh7X6WPlKgWx9uTcqylY7P3MQDyO0crtpGanTGV93cvpcLClogURFnPesiuFrMoKCHsbwqHtryNsSCs5VmY3XRWUZjC72PZdPkNAR_BGooVfJz8uweAtRLUVJTRuNikCInwxSv_A_RyLAY" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/a/AVvXsEjwWH7u_Gt1OfQkQRKsmhUj7mkOrMrg6GZgc8H8EQVzIncVOZh7X6WPlKgWx9uTcqylY7P3MQDyO0crtpGanTGV93cvpcLClogURFnPesiuFrMoKCHsbwqHtryNsSCs5VmY3XRWUZjC72PZdPkNAR_BGooVfJz8uweAtRLUVJTRuNikCInwxSv_A_RyLAY" style="display: none;" /&gt;&lt;div&gt;&lt;i&gt;Posted by Thomas Ezan, Sr Developer Relations Engineer and Tracy Agyemang, Product Marketing Manager&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinHoXQHnmrIN4VGXE0sAMpxV_R8dRoi8-zwlpMIB73wI9RZx24LimkjU-XdTdFJHKZO9_A4oLLlKOLFq7pEE_JnvHdWvs_s47oKM5ZYi_aHqtBijD4WtmGAeiSaxg-5wMldHXNgWOcCkJfGJX6EX7PKekHrc277fDt_cWVlfNdC5gDfdXgvxpfZ3qSKt0/s1280/AndDev_KARROT_Header.gif" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="720" data-original-width="1280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinHoXQHnmrIN4VGXE0sAMpxV_R8dRoi8-zwlpMIB73wI9RZx24LimkjU-XdTdFJHKZO9_A4oLLlKOLFq7pEE_JnvHdWvs_s47oKM5ZYi_aHqtBijD4WtmGAeiSaxg-5wMldHXNgWOcCkJfGJX6EX7PKekHrc277fDt_cWVlfNdC5gDfdXgvxpfZ3qSKt0/s16000/AndDev_KARROT_Header.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.towneers.www&amp;amp;pcampaignid=web_share"&gt;Karrot&lt;/a&gt; is a hyperlocal, community-driven peer-to-peer marketplace app that enables users to buy, sell, and trade items with other verified users. Since launching in South Korea in 2015, the platform has expanded into global markets, amassing over 43 million registered users.&lt;/p&gt;

&lt;p&gt;
  After launching in North America, engineers at Karrot observed that 30% of users in the region use a non-English device language, such as Spanish. To make the app more accessible, the team wanted to bring seamless translation functionality to Karrot quickly and at scale. The developers determined that the most efficient way to implement quality translations would be through integrating an AI service directly into the app, so they selected the Firebase AI Logic and its Android SDK to access Gemini Flash Lite, which led to higher purchasing conversion among non-English users.
&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1fPCSRaq1GzI9qjpHqYa3PDA57A8_gudnJiPi2ZTqM-PY6h26Bo4ihHguT2A8O4Z91WF9SdTAHmJvSScufuddHChXmEevexvx3A21G5Ii3YTdA8kTp3cjDHC1q2GkqqreJvXVRj4EeItkDk9h5Bzd6rE7BXMfbGfFXC8sushy8qaP9YWCswxG2_3e2DU/s1280/AndDev_KARROT_Inline.gif" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="720" data-original-width="1280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1fPCSRaq1GzI9qjpHqYa3PDA57A8_gudnJiPi2ZTqM-PY6h26Bo4ihHguT2A8O4Z91WF9SdTAHmJvSScufuddHChXmEevexvx3A21G5Ii3YTdA8kTp3cjDHC1q2GkqqreJvXVRj4EeItkDk9h5Bzd6rE7BXMfbGfFXC8sushy8qaP9YWCswxG2_3e2DU/s16000/AndDev_KARROT_Inline.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2&gt;Integrating Gemini Firebase AI Logic&lt;/h2&gt;

&lt;p&gt;
  The team initially tested two on-device options: the ML Kit Translation SDK and Gemini Nano. But the team found challenges with each: ML Kit Translation didn’t meet the team’s quality expectations, and Gemini Nano, if it isn’t already on the device, required the user to download the model data.
&lt;/p&gt;

&lt;p&gt;
  The team then tested Firebase AI Logic. By calling the Gemini API directly from the app, Firebase AI Logic delivered accuracy at speeds that mirrored a natural conversational cadence.
&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEg8-MktQzHXmgpLDYb98e9QidJBJekbOXwS81QARD0RH-BJFtBzpWlWvj-OOkrNmLcegtR6KUAIYmmgrX3S51NyG3SKUA7WYCqYSjkVL7ENOZ_cZIQzzwcQa9bU-CTf_jc2cv702LvNizTaDeeLZfzs1SZW-fvZQ_6U4JbVgyN4MffrZF2I2y-jWLIGc/s1280/AANDDM_KARROT_Quote_02.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="720" data-original-width="1280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEg8-MktQzHXmgpLDYb98e9QidJBJekbOXwS81QARD0RH-BJFtBzpWlWvj-OOkrNmLcegtR6KUAIYmmgrX3S51NyG3SKUA7WYCqYSjkVL7ENOZ_cZIQzzwcQa9bU-CTf_jc2cv702LvNizTaDeeLZfzs1SZW-fvZQ_6U4JbVgyN4MffrZF2I2y-jWLIGc/s16000/AANDDM_KARROT_Quote_02.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Integrating Firebase AI Logic into the app was a “remarkably straightforward experience,” according to TaeGyu An, an Android Software Engineer on Karrot’s Mobile Platform team. TaeGyu and the team used the platform’s &lt;a href="https://firebase.google.com/docs/ai-logic/get-started"&gt;documentation&lt;/a&gt; and code samples to build a proof of concept in under three hours.&lt;/p&gt;

&lt;p&gt;
  This allowed the team to spend more time refining prompts and finding optimal configuration values. “Even without extensive experience writing prompts, the official documentation's &lt;a href="https://ai.google.dev/gemini-api/docs/prompting-strategies"&gt;guides and tips&lt;/a&gt; made it easy to quickly identify the right direction for improving translation quality,” said WonJoong Lee, an Android Software Engineer on Karrot’s North America Product Team.
&lt;/p&gt;

&lt;p&gt;
  This low barrier to entry and rapid turnaround time enabled engineers to keep development costs low and go from proof of concept to production code in just two weeks—all without setting up a dedicated backend. That also freed up time to focus on UX and policy design, such as opt-in behavior and the conditions for the translation banner.
&lt;/p&gt;

&lt;h2&gt;Driving sales with enhanced AI features&lt;/h2&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWIjwBKrmL9ifwdF-8pmU6eqOF9flN9wzXNRSRz4Yw6rJld2zuDLWRJczPuteaL343rWAgBSjk8Jx5iPWlVOpyRp83QA8cdKrgXNAE4tYuw3EjJ8oMMInvXTxHKkTBKtF2_TEJIxi9RtQ9S3yNCCOzlOHebEnNdJQHMos5I_im0qPIluqqtpt-SHvK1n4/s1280/AANDDM_KARROT_Quote_01.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="720" data-original-width="1280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWIjwBKrmL9ifwdF-8pmU6eqOF9flN9wzXNRSRz4Yw6rJld2zuDLWRJczPuteaL343rWAgBSjk8Jx5iPWlVOpyRp83QA8cdKrgXNAE4tYuw3EjJ8oMMInvXTxHKkTBKtF2_TEJIxi9RtQ9S3yNCCOzlOHebEnNdJQHMos5I_im0qPIluqqtpt-SHvK1n4/s16000/AANDDM_KARROT_Quote_01.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Since implementing translation using Gemini and Firebase AI Logic, the Karrot team observed higher purchasing conversion among non-English users, indicating that the translation feature is helping drive sales.&lt;/p&gt;

&lt;p&gt;
  Of users who used a non-English device language, &lt;b&gt;one in three of them who were shown the translation banner actively used the feature&lt;/b&gt;. The team has also observed that buyers offered translation functionality were &lt;b&gt;2.4X more likely to start a chat&lt;/b&gt; with a seller than those who weren’t.
&lt;/p&gt;

&lt;p&gt;
  The flexibility and simplicity of deploying Firebase AI Logic has led the team to explore other features to simplify the workstreams of its engineers. “It’s rewarding to build features that scale across diverse Android devices while helping neighbors connect and interact within their local communities,” concluded TaeGyu.
&lt;/p&gt;

&lt;p&gt;
  Going forward, the team plans to implement &lt;a href="https://firebase.google.com/docs/ai-logic/server-prompt-templates/get-started?api=dev"&gt;Server Prompt Templates&lt;/a&gt; to adjust prompts after release without shipping a new version of the app. This, combined with &lt;a href="https://firebase.google.com/docs/remote-config"&gt;Remote Config&lt;/a&gt;, should help the team iterate faster and reduce operational overhead.
&lt;/p&gt;

&lt;h2&gt;Get started&lt;/h2&gt;

&lt;p&gt;
  Learn how to build Gemini-enabled features like AI translations and in-app personalization and more with &lt;a href="https://firebase.google.com/docs/ai-logic/get-started?api=dev"&gt;Firebase AI Logic&lt;/a&gt; to deliver better experiences to your users, faster.
  
  &lt;/p&gt;&lt;div aria-hidden="true" style="display: none; height: 0px; overflow: hidden; visibility: hidden; width: 0px;"&gt;
    Karrot marketplace, hyperlocal P2P app, Gemini Flash Lite integration, 
    Firebase AI Logic for Android, AI-powered app translation, 
    South Korea marketplace global expansion, peer-to-peer trading accessibility, 
    machine learning for mobile apps, increasing purchasing conversion with AI, 
    Gemini API for developers, Firebase SDK translation, 
    Server Prompt Templates, Remote Config Android, 
    non-English user engagement, Gemini Nano vs ML Kit, 
    Karrot North America expansion, community-driven marketplace tech.
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;</content><link href="http://android-developers.googleblog.com/feeds/8100808452965841686/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/how-karrot-increased-sales-with-gemini-firebase-ai-translation.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/8100808452965841686" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/8100808452965841686" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/05/how-karrot-increased-sales-with-gemini-firebase-ai-translation.html" rel="alternate" title="Gemini and Firebase AI Logic enabled Karrot to increase sales with a translation feature built in under 2 weeks" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/a/AVvXsEjwWH7u_Gt1OfQkQRKsmhUj7mkOrMrg6GZgc8H8EQVzIncVOZh7X6WPlKgWx9uTcqylY7P3MQDyO0crtpGanTGV93cvpcLClogURFnPesiuFrMoKCHsbwqHtryNsSCs5VmY3XRWUZjC72PZdPkNAR_BGooVfJz8uweAtRLUVJTRuNikCInwxSv_A_RyLAY=s72-c" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-883571858646595033</id><published>2026-04-22T16:00:00.000-07:00</published><updated>2026-04-27T07:31:17.148-07:00</updated><title type="text">What's new in the Jetpack Compose April '26 release</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/a/AVvXsEhgVW3uXlpqZ7PcHixqBlJ2AG19VCQosSAZfuCaqN5WnsvBCiGJdFo4WersXe30hoBz9w6iNYN6QfyY7ae3pNYaa6BQpveTPDKFXXEhJkMXFfxoJIUOXzoaslEJ6NkAA85VvXU4Kv5oZnfG1BDe5dlxsEVxkeyZ1OECfXLSmbcP46IPw5JBj2eBWascC6A" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/a/AVvXsEhgVW3uXlpqZ7PcHixqBlJ2AG19VCQosSAZfuCaqN5WnsvBCiGJdFo4WersXe30hoBz9w6iNYN6QfyY7ae3pNYaa6BQpveTPDKFXXEhJkMXFfxoJIUOXzoaslEJ6NkAA85VvXU4Kv5oZnfG1BDe5dlxsEVxkeyZ1OECfXLSmbcP46IPw5JBj2eBWascC6A" style="display: none;" /&gt;&lt;div&gt;&lt;i&gt;Posted by Meghan Mehta,&amp;nbsp;Android Developer Relations Engineer&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZHE0FDmx0vqGgZ6V5OvwB9prJFgTdYZbOOkQ1h8bS_5BuTn3TyomD5gYJdqvcJP2rE5Ju4147sThpKYIiCKXQ3DTw2gQtVjWRM23gzPdpDo5jyblVPbjNRqiVVC9bWW92xNYtARsoCDWuyxAiYRyxtgeAQRqI_t6bTR2PFrdQZCHMgXgU82TBolFXXkw/s8583/0420%20Compose%201.11%20_%20Blog%20(1).png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2601" data-original-width="8583" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZHE0FDmx0vqGgZ6V5OvwB9prJFgTdYZbOOkQ1h8bS_5BuTn3TyomD5gYJdqvcJP2rE5Ju4147sThpKYIiCKXQ3DTw2gQtVjWRM23gzPdpDo5jyblVPbjNRqiVVC9bWW92xNYtARsoCDWuyxAiYRyxtgeAQRqI_t6bTR2PFrdQZCHMgXgU82TBolFXXkw/s16000/0420%20Compose%201.11%20_%20Blog%20(1).png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Today, the Jetpack Compose April ‘26 release is stable. This release contains version 1.11 of core Compose modules (see the &lt;a href="https://developer.android.com/jetpack/androidx/releases/compose-bom#bom-mapping"&gt;full BOM mapping&lt;/a&gt;), shared element debug tools, trackpad events, and more. We also have a few experimental APIs that we’d love you to try out and give us feedback on.
&lt;/p&gt;

  To use today’s release, upgrade your &lt;a href="https://developer.android.com/develop/ui/compose/bom"&gt;Compose BOM&lt;/a&gt; version to:

&lt;pre&gt;&lt;code&gt;implementation(platform("androidx.compose:compose-bom:2026.04.01"))&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Changes in Compose 1.11.0&lt;/h3&gt;
&lt;h2&gt;Coroutine execution in tests&lt;/h2&gt;
&lt;p&gt;
  We’re introducing a major update to how Compose handles test timing. Following the opt-in period announced in Compose 1.10, the v2 testing APIs are now the default, and the v1 APIs have been deprecated. The key change is a shift in the default test dispatcher. While the v1 APIs relied on &lt;code&gt;&lt;a href="https://developer.android.com/kotlin/coroutines/test#unconfinedtestdispatcher"&gt;UnconfinedTestDispatcher&lt;/a&gt;&lt;/code&gt;, which executed coroutines immediately, the v2 APIs use the &lt;code&gt;&lt;a href="https://developer.android.com/kotlin/coroutines/test#standardtestdispatcher"&gt;StandardTestDispatcher&lt;/a&gt;&lt;/code&gt;. This means that when a coroutine is launched in your tests, it is now queued and does not execute until the virtual clock is advanced.
&lt;/p&gt;

&lt;p&gt;
  This better mimics production conditions, effectively flushing out race conditions and making your test suite significantly more robust and less flaky.
&lt;/p&gt;

&lt;p&gt;
  To ensure your tests align with standard coroutine behavior and to avoid future compatibility issues, we strongly recommend migrating your test suite. Check out our comprehensive&amp;nbsp;&amp;nbsp;&lt;a href="https://developer.android.com/develop/ui/compose/testing/migrate-v2"&gt;migration guide&lt;/a&gt; for API mappings and common fixes.
&lt;/p&gt;

&lt;h2&gt;Shared element improvements and animation tooling&lt;/h2&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4CPWGQS1YJIuKDoVHrHVoXkXd1CeRWXew-VTXok2Mvh_Dh1k37F8j9GzSw204ICu2xwVs9CtlYlJyAD-iifjyYL07U0vax-5Y1TUw1oX2_BmEmh0prbjuBzznkJE8hcnkqbpjaBk7_jeolgsMyXNF2gKtzLRJBrxQ-B8yiUXCG3Ekmon0CBAERiVqSjE/s836/sharedElement.gif" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="836" data-original-width="376" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4CPWGQS1YJIuKDoVHrHVoXkXd1CeRWXew-VTXok2Mvh_Dh1k37F8j9GzSw204ICu2xwVs9CtlYlJyAD-iifjyYL07U0vax-5Y1TUw1oX2_BmEmh0prbjuBzznkJE8hcnkqbpjaBk7_jeolgsMyXNF2gKtzLRJBrxQ-B8yiUXCG3Ekmon0CBAERiVqSjE/w180-h400/sharedElement.gif" width="180" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;
  We’ve also added some handy visual debugging tools for shared elements and &lt;code&gt;Modifier.animatedBounds&lt;/code&gt;. You can now see exactly what’s happening under the hood—like target bounds, animation trajectories, and how many matches are found—making it much easier to spot why a transition might not be behaving as expected. To use the new tooling, simply surround your &lt;code&gt;SharedTransitionLayout&lt;/code&gt; with the &lt;code&gt;&lt;a href="https://developer.android.com/reference/kotlin/androidx/compose/animation/package-summary#LookaheadAnimationVisualDebugging(kotlin.Boolean,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,kotlin.Boolean,kotlin.Function0)"&gt;LookaheadAnimationVisualDebugging&lt;/a&gt;&lt;/code&gt; composable. 
&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;LookaheadAnimationVisualDebugging(
    overlayColor = Color(0x4AE91E63),
    isEnabled = true,
    multipleMatchesColor = Color.Green,
    isShowKeylabelEnabled = false,
    unmatchedElementColor = Color.Red,
) {
    SharedTransitionLayout {
        CompositionLocalProvider(
            LocalSharedTransitionScope provides this,
        ) {
            // your content
        }
    }
}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Trackpad events&lt;/h2&gt;
&lt;p&gt;
  We’ve revamped Compose support for trackpads, like built-in laptop trackpads, attachable trackpads for tablets, or external/virtual trackpads. Basic trackpad events will now generally be considered &lt;code&gt;PointerType.Mouse&lt;/code&gt; events, aligning mouse and trackpad behavior to better match user expectations. Previously, these trackpad events were interpreted as fake touchscreen fingers of &lt;code&gt;PointerType.Touch&lt;/code&gt;, which led to confusing user experiences. For example, clicking and dragging with a trackpad would scroll instead of selecting. By changing the pointer type these events have in the latest release of Compose, clicking and dragging with a trackpad will no longer scroll.
&lt;/p&gt;

&lt;p&gt;
  We also added support for more complicated trackpad gestures as recognized by the platform since API 34, including &lt;a href="https://developer.android.com/reference/android/view/MotionEvent#CLASSIFICATION_TWO_FINGER_SWIPE"&gt;two finger swipes&lt;/a&gt; and &lt;a href="https://developer.android.com/reference/android/view/MotionEvent#CLASSIFICATION_PINCH"&gt;pinches&lt;/a&gt;. These gestures are automatically recognized by components like &lt;code&gt;Modifier.scrollable&lt;/code&gt; and &lt;code&gt;Modifier.transformable&lt;/code&gt; to have better behavior with trackpads.
&lt;/p&gt;

&lt;p&gt;
  These changes improve behavior for trackpads across built-in components, with redundant touch slop removed, a more intuitive drag-and-drop starting gesture, double-click and triple-click selection in text fields, and desktop-styled context menus in text fields.
&lt;/p&gt;

&lt;p&gt;
  To test trackpad behavior, there are new testing APIs with &lt;code&gt;&lt;a href="https://developer.android.com/reference/kotlin/androidx/compose/ui/test/SemanticsNodeInteraction?hl=en#(androidx.compose.ui.test.SemanticsNodeInteraction).performTrackpadInput(kotlin.Function1)"&gt;performTrackpadInput&lt;/a&gt;&lt;/code&gt;, which allow validating the behavior of your apps when being used with a trackpad. If you have custom gesture detectors, validate behavior across input types, including touchscreens, mice, trackpads, and styluses, and ensure support for mouse scroll wheels and trackpad gestures.
&lt;/p&gt;

&lt;table style="border-collapse: collapse; width: 100%;"&gt;
 &lt;/table&gt;&lt;table style="border-collapse: collapse; width: 100%;"&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style="text-align: center;"&gt;Before&lt;/th&gt;
      &lt;th style="text-align: center;"&gt;After&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style="text-align: center; width: 50%;"&gt;
        &lt;div class="separator" style="clear: both;"&gt;
          &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPrtrimI6TGSfomNIoLe6bnkyrwEBYtIc1mehBgJZxnxGl3kxvlPpOZFMyyfbSThY7ECio5BNtswy2gsmXmi1EMdsqbGK9zDnUyK49PUv_Z1LKHyD6vWLIHxQSo75zEQ8m4tsPTyToitGSN3Ciuj2lTYfggHO9Z3CQhTk3ZjkrGLd9gn8JXkMzzwOeKIs/s1600/before%202.gif" style="display: block; padding: 1em 0px; text-align: center;"&gt;
            &lt;img alt="Before" border="0" data-original-height="360" data-original-width="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPrtrimI6TGSfomNIoLe6bnkyrwEBYtIc1mehBgJZxnxGl3kxvlPpOZFMyyfbSThY7ECio5BNtswy2gsmXmi1EMdsqbGK9zDnUyK49PUv_Z1LKHyD6vWLIHxQSo75zEQ8m4tsPTyToitGSN3Ciuj2lTYfggHO9Z3CQhTk3ZjkrGLd9gn8JXkMzzwOeKIs/s16000/before%202.gif" style="height: auto; width: 100%;" /&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;/td&gt;
      &lt;td style="text-align: center; width: 50%;"&gt;
        &lt;div class="separator" style="clear: both;"&gt;
          &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi24EUtKJ-bdapy5LjBehqxDwV1LS9giT6u4K279a5UVO-XkKAuEAbNpCQqbHHaIqn7JOC0fJZ3xNgAds2c0dBTqhbVKcafFhXh4QuMZNMpfqvDsH8s4IJJ4iNzXRGhnGwctzGczKCgf39X308h5WcP3g3dLrQUHlLrIsRgB_9RgAzUwXk8ZvXzUh46qto/s1600/after%203.gif" style="display: block; padding: 1em 0px; text-align: center;"&gt;
            &lt;img alt="After" border="0" data-original-height="360" data-original-width="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi24EUtKJ-bdapy5LjBehqxDwV1LS9giT6u4K279a5UVO-XkKAuEAbNpCQqbHHaIqn7JOC0fJZ3xNgAds2c0dBTqhbVKcafFhXh4QuMZNMpfqvDsH8s4IJJ4iNzXRGhnGwctzGczKCgf39X308h5WcP3g3dLrQUHlLrIsRgB_9RgAzUwXk8ZvXzUh46qto/s16000/after%203.gif" style="height: auto; width: 100%;" /&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2&gt;Composition host defaults (Compose runtime)&lt;/h2&gt;
&lt;p&gt;
  We introduced &lt;code&gt;&lt;a href="https://developer.android.com/reference/kotlin/androidx/compose/runtime/HostDefaultProvider"&gt;HostDefaultProvider&lt;/a&gt;&lt;/code&gt;, &lt;code&gt;LocalHostDefaultProvider&lt;/code&gt;, &lt;code&gt;HostDefaultKey&lt;/code&gt;, and &lt;code&gt;ViewTreeHostDefaultKey&lt;/code&gt; to supply host-level services directly through compose-runtime. This removes the need for libraries to depend on compose-ui for lookups, better supporting Kotlin Multiplatform. To link these values to the composition tree, library authors can use &lt;code&gt;compositionLocalWithHostDefaultOf&lt;/code&gt; to create a &lt;code&gt;CompositionLocal&lt;/code&gt; that resolves defaults from the host.
&lt;/p&gt;

&lt;h2&gt;Preview wrappers&lt;/h2&gt;
&lt;p&gt;
  Android Studio custom previews is a new feature that allows you to define exactly how the contents of a Compose preview are displayed.
&lt;/p&gt;

&lt;p&gt;
  By implementing the &lt;code&gt;PreviewWrapperProvider&lt;/code&gt; interface and applying the new &lt;code&gt;@PreviewWrapper&lt;/code&gt; annotation, you can easily inject custom logic, such as applying a specific Theme. The annotation can be applied to a function annotated with &lt;code&gt;@Composable&lt;/code&gt; and &lt;code&gt;@Preview&lt;/code&gt; or &lt;code&gt;@MultiPreview&lt;/code&gt;, offering a generic, easy-to-use solution that works across preview features and significantly reduces repetitive code.
&lt;/p&gt;

&lt;pre&gt;&lt;span id="docs-internal-guid-abe8e28a-7fff-d18a-2ace-96633e0a3887"&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;class ThemeWrapper: &lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;PreviewWrapper&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt; {&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Composable&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;override fun Wrap(content: &lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;@Composable&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt; (() -&amp;gt; Unit)) {&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JetsnackTheme {&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;content()&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;@PreviewWrapperProvider&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;(ThemeWrapper::class)&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;@Preview&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;@Composable&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;private fun ButtonPreview() {&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// JetsnackTheme in effect&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button(onClick = {}) {&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(text = "Demo")&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 10pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3&gt;Deprecations and removals&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;As announced in the &lt;a href="https://android-developers.googleblog.com/2025/12/whats-new-in-jetpack-compose-december.html"&gt;Compose 1.10 blog post&lt;/a&gt;, we’re deprecating &lt;code&gt;Modifier.onFirstVisible()&lt;/code&gt;. Its name often led to misconceptions, particularly within lazy layouts, where it would trigger multiple times during scrolling. We recommend migrating to &lt;code&gt;&lt;a href="https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.Modifier).onVisibilityChanged(kotlin.Long,kotlin.Float,androidx.compose.ui.layout.LayoutBoundsHolder,kotlin.Function1)"&gt;Modifier.onVisibilityChanged()&lt;/a&gt;&lt;/code&gt;, which allows for more precise manual tracking of visibility states tailored to your specific use case requirements.
&lt;/li&gt;&lt;li&gt;The &lt;code&gt;ComposeFoundationFlags.isTextFieldDpadNavigationEnabled&lt;/code&gt; flag was removed because D-pad navigation for &lt;code&gt;TextFields&lt;/code&gt; is now always enabled by default. The new behavior ensures that the D-pad events from a gamepad or a TV remote first move the cursor in the given direction. The focus can move to another element only when the cursor reaches the end of the text.
&lt;/li&gt;&lt;/ul&gt;
  &lt;p&gt;&lt;/p&gt;


&lt;h3&gt;Upcoming APIs&lt;/h3&gt;
&lt;p&gt;
  In the upcoming Compose 1.12.0 release, the &lt;code&gt;compileSdk&lt;/code&gt; will be upgraded to &lt;code&gt;compileSdk 37&lt;/code&gt;, with AGP 9 and all apps and libraries that depend on Compose inheriting this requirement. We recommend keeping up to date with the latest released versions, as Compose aims to promptly adopt new &lt;code&gt;compileSdks&lt;/code&gt; to provide access to the latest Android features. Be sure to check out the&amp;nbsp;&lt;a href="https://developer.android.com/build/releases/gradle-plugin#api-level-support"&gt;documentation here&lt;/a&gt; for more information on which version of AGP is supported for different API levels. 
&lt;/p&gt;

&lt;p&gt;
  In Compose 1.11.0, the following APIs are introduced as &lt;code&gt;@Experimental&lt;/code&gt;, and we look forward to hearing your feedback as you explore them in your apps. Note that &lt;code&gt;@Experimental&lt;/code&gt; APIs are provided for early evaluation and feedback and may undergo significant changes or removal in future releases.
&lt;/p&gt;

&lt;h2&gt;Styles (Experimental)&lt;/h2&gt;
&lt;p&gt;
  We are introducing a new experimental foundation API for &lt;a href="https://developer.android.com/develop/ui/compose/styles"&gt;styling&lt;/a&gt;. The Style API is a new paradigm for customizing visual elements of components, which has traditionally been performed with modifiers. It is designed to unlock deeper, easier customization by exposing a standard set of styleable properties with simple state-based styling and animated transitions.&amp;nbsp;With this new API, we’re already seeing promising &lt;a href="https://developer.android.com/develop/ui/compose/styles/performance"&gt;performance benefits&lt;/a&gt;. We plan to adopt Styles in Material components once the Style API stabilizes.&lt;/p&gt;

&lt;p&gt;
  A basic example of overriding a pressed state style background:
&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;@Composable
fun LoginButton(modifier: Modifier = Modifier) {
    Button(
        onClick = {
            // Login logic
        },
        modifier = modifier,
        style = {
            background(
                Brush.linearGradient(
                    listOf(lightPurple, lightBlue)
                )
            )
            width(75.dp)
            height(50.dp)
            textAlign(TextAlign.Center)
            externalPadding(16.dp)

            pressed {
                background(
                    Brush.linearGradient(
                        listOf(Color.Magenta, Color.Red)
                    )
                )
            }
        }
    ){
        Text(
            text = "Login",
        )
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzKgxY8FG0-Yf5HGCa-4OJeBgqmau8GIIODou5Wc4RFgIbI1nPHnO_wOp24UMUdyLoENyIe6iAby97tQLDRQhKVk5RYUVwBt-d5cuC1dcKYjJUVpYqBCKFugjCT4R-d2Hp_oohdUn1YLtJra-VXwQoU4UNgb5YenVsJ2O8H67NtLeZfMMpLLdp1VPJUhE/s900/styles.gif" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="626" data-original-width="900" height="278" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzKgxY8FG0-Yf5HGCa-4OJeBgqmau8GIIODou5Wc4RFgIbI1nPHnO_wOp24UMUdyLoENyIe6iAby97tQLDRQhKVk5RYUVwBt-d5cuC1dcKYjJUVpYqBCKFugjCT4R-d2Hp_oohdUn1YLtJra-VXwQoU4UNgb5YenVsJ2O8H67NtLeZfMMpLLdp1VPJUhE/w400-h278/styles.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Check out the &lt;a href="https://developer.android.com/develop/ui/compose/styles" target="_blank"&gt;documentation&lt;/a&gt; and file any bugs &lt;a href="https://www.google.com/url?q=https://issuetracker.google.com/issues/new?component%3D612128&amp;amp;sa=D&amp;amp;source=docs&amp;amp;ust=1776894674938834&amp;amp;usg=AOvVaw1Kl3kZ7NxHRGsmZUWh6iT7" target="_blank"&gt;here&lt;/a&gt;.&lt;/div&gt;

&lt;h2&gt;MediaQuery (Experimental)&lt;/h2&gt;
&lt;p&gt;
  The new &lt;code&gt;&lt;a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/mediaquery"&gt;mediaQuery&lt;/a&gt;&lt;/code&gt; API provides a declarative and performant way to adapt your UI to its environment. It abstracts complex information retrieval into simple conditions within a &lt;code&gt;&lt;a href="https://developer.android.com/reference/kotlin/androidx/compose/ui/UiMediaScope"&gt;UiMediaScope&lt;/a&gt;&lt;/code&gt;, ensuring recomposition only happens when needed.
&lt;/p&gt;

&lt;p&gt;
  With support for a wide range of environmental signals—from device capabilities like keyboard types and pointer precision, to contextual states like window size and posture—you can build deeply responsive experiences. Performance is baked in with &lt;code&gt;&lt;a href="https://developer.android.com/reference/kotlin/androidx/compose/ui/package-summary#derivedMediaQuery(kotlin.Function1)"&gt;derivedMediaQuery&lt;/a&gt;&lt;/code&gt; to handle high-frequency updates, while the ability to override scopes makes testing and previews seamless across hardware configurations.
&lt;/p&gt;

&lt;p&gt;
  Previously, to get access to certain device properties — like if a device was in &lt;a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/foldables/make-your-app-fold-aware#features_of_foldable_displays"&gt;tabletop mode&lt;/a&gt; — you’d need to write a lot of boilerplate to do so: 
&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;@Composable
fun isTabletopPosture(
    context: Context = LocalContext.current
): Boolean {
    val windowLayoutInfo by
        WindowInfoTracker
            .getOrCreate(context)
            .windowLayoutInfo(context)
            .collectAsStateWithLifecycle(null)

    return windowLayoutInfo.displayFeatures.any { displayFeature -&amp;gt;
        displayFeature is FoldingFeature &amp;amp;&amp;amp;
            displayFeature.state == FoldingFeature.State.HALF_OPENED &amp;amp;&amp;amp;
            displayFeature.orientation == FoldingFeature.Orientation.HORIZONTAL
    }
}

@Composable
fun VideoPlayer() {
    if(isTabletopPosture()) {
        TabletopLayout()
    } else {
        FlatLayout()
    }
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;
  Now, with &lt;code&gt;UIMediaQuery&lt;/code&gt;, you can add the &lt;code&gt;mediaQuery&lt;/code&gt; syntax to query device properties, such as if a device is in tabletop mode:
&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;@OptIn(ExperimentalMediaQueryApi::class)
@Composable
fun VideoPlayer() {
    if (mediaQuery { windowPosture == UiMediaScope.Posture.Tabletop }) {
        TabletopLayout()
    } else {
        FlatLayout()
    }
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;
  Check out the &lt;a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/mediaquery"&gt;documentation&lt;/a&gt; and file any bugs &lt;a href="https://issuetracker.google.com/issues?q=componentid:1876021"&gt;here&lt;/a&gt;.
&lt;/p&gt;

&lt;h2&gt;Grid (Experimental)&lt;/h2&gt;
&lt;p&gt;
  &lt;code&gt;&lt;a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/grid"&gt;Grid&lt;/a&gt;&lt;/code&gt; is a powerful new API for building complex, two-dimensional layouts in Jetpack Compose. While &lt;code&gt;Row&lt;/code&gt; and &lt;code&gt;Column&lt;/code&gt; are great for linear designs, &lt;code&gt;Grid&lt;/code&gt; gives you the structural control needed for screen-level architecture and intricate components without the overhead of a scrollable list.
&lt;/p&gt;

&lt;p&gt;
  &lt;code&gt;Grid&lt;/code&gt; allows you to define your layout using tracks, gaps, and cells, offering familiar sizing options like &lt;code&gt;Dp&lt;/code&gt;, percentages, intrinsic content sizes, and flexible "Fr" units. 
&lt;/p&gt;

&lt;pre&gt;&lt;span id="docs-internal-guid-f771cc35-7fff-11ce-f06a-37fd1c308045"&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;@OptIn&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;(ExperimentalGridApi::&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;class&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-style: italic; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;@Composable&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;fun &lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;GridExample() {&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Grid(&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;config = {&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;repeat(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;4&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;) { column(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;0&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;25f&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;) }&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;repeat(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;2&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;) { row(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;0&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;5f&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;) }&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gap(&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;16&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;.dp)&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;) {&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Card1(modifier = Modifier.gridItem(rowSpan = &lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;2&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Card2(modifier = Modifier.gridItem(colmnSpan = &lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;3&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Card3(modifier = Modifier.gridItem(columnSpan = &lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;2&lt;/span&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Card4()&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.8; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span style="color: #37474f; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 9pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; text-wrap-mode: wrap; vertical-align: baseline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
  You can place items automatically or explicitly span them across multiple rows and columns for precision. Best of all, it’s highly adaptive—you can dynamically reconfigure your grid tracks and spans to respond to device states like tabletop mode or orientation changes, ensuring your UI looks great across form factors.
&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTDUrQltkehSG0RuoiwDzVefCFsJBOn4I4zVYiee1NMYS5UeNdK9j4rP28myI7IwH8Me12xUDF_O5_MOH2dMWnysVD5dc6yx2Ag454bG1ShjuC_0UlX-bv15SJbW0bjSvrMHGbrit9qaNMa8PsDasFzKaoV1gdep3d7tgdaixqd7zvL-CrGbJ_lRIx7KI/s554/Grid.gif" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="550" data-original-width="554" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTDUrQltkehSG0RuoiwDzVefCFsJBOn4I4zVYiee1NMYS5UeNdK9j4rP28myI7IwH8Me12xUDF_O5_MOH2dMWnysVD5dc6yx2Ag454bG1ShjuC_0UlX-bv15SJbW0bjSvrMHGbrit9qaNMa8PsDasFzKaoV1gdep3d7tgdaixqd7zvL-CrGbJ_lRIx7KI/w400-h398/Grid.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;
  Check out the &lt;a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/grid" target="_blank"&gt;documentation&lt;/a&gt; and&amp;nbsp;file any bugs &lt;a href="https://issuetracker.google.com/issues/new?component=1876021&amp;amp;template=1424126" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;FlexBox (Experimental)&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/package-summary#FlexBox(androidx.compose.ui.Modifier,androidx.compose.foundation.layout.FlexBoxConfig,kotlin.Function1)"&gt;FlexBox&lt;/a&gt; is a layout container designed for high performance, adaptive UIs. It manages item sizing and space distribution based on available container dimensions. It handles complex tasks like wrapping (&lt;code&gt;wrap&lt;/code&gt;) and multi-axis alignment of items (&lt;code&gt;justifyContent&lt;/code&gt;, &lt;code&gt;alignItems&lt;/code&gt;, &lt;code&gt;alignContent&lt;/code&gt;). It allows items to grow (&lt;code&gt;grow&lt;/code&gt;) or shrink (&lt;code&gt;shrink&lt;/code&gt;) to fill the container.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;@OptIn(ExperimentalFlexBoxApi::class)
fun FlexBoxWrapping(){
    FlexBox(
        config = {
            wrap(FlexWrap.Wrap)
            gap(8.dp)
        }
    ) {
        RedRoundedBox()
        BlueRoundedBox()
        GreenRoundedBox(modifier = Modifier.width(350.dp).flex { grow(1.0f) })
        OrangeRoundedBox(modifier = Modifier.width(200.dp).flex { grow(0.7f) })
        PinkRoundedBox(modifier = Modifier.width(200.dp).flex { grow(0.3f) })
    }
}&lt;/code&gt;&lt;/pre&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmcEvU3D7gpqW-gwblZmbXvzJo-cxVbSJJN0Q5UA4JACUThZ3x1xMUKKRqezPh4LSIWFcj1agYgdmYRwCovI9lCJ48sHZXNyY5bVi8Ow_WNc7718kc5njqAnSjLCDflE1gWcUiZ-lShOlRHDE3jXQygdCVKQqN2yaGIchpbVZaycj2Os-fVgsOzrrU230/s3092/AnimationGif.gif" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1080" data-original-width="3092" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmcEvU3D7gpqW-gwblZmbXvzJo-cxVbSJJN0Q5UA4JACUThZ3x1xMUKKRqezPh4LSIWFcj1agYgdmYRwCovI9lCJ48sHZXNyY5bVi8Ow_WNc7718kc5njqAnSjLCDflE1gWcUiZ-lShOlRHDE3jXQygdCVKQqN2yaGIchpbVZaycj2Os-fVgsOzrrU230/s16000/AnimationGif.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3&gt;&lt;br /&gt;&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;Check out the&amp;nbsp;&lt;a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/flexbox"&gt;documentation&lt;/a&gt;&amp;nbsp;and file any bugs&amp;nbsp;&lt;a href="https://b.corp.google.com/issues/new?component=1876021&amp;amp;title=%5BFlexBox%5D&amp;amp;pli=1&amp;amp;template=0"&gt;here&lt;/a&gt;.&lt;h2&gt;New SlotTable implementation (Experimental)&lt;/h2&gt;
&lt;p&gt;
  We’ve introduced a new implementation of the &lt;code&gt;SlotTable&lt;/code&gt;, which is disabled by default in this release. &lt;code&gt;SlotTable&lt;/code&gt; is the internal data structure that the Compose runtime uses to track the state of your composition hierarchy, track invalidations/recompositions, store remembered values, and track all metadata of the composition at runtime. This new implementation is designed to improve performance, primarily around random edits.
&lt;/p&gt;

&lt;p&gt;
  To try the new &lt;code&gt;SlotTable&lt;/code&gt;, enable &lt;code&gt;&lt;a href="https://developer.android.com/reference/kotlin/androidx/compose/runtime/ComposeRuntimeFlags?hl=en#isLinkBufferComposerEnabled()"&gt;ComposeRuntimeFlags.isLinkBufferComposerEnabled&lt;/a&gt;&lt;/code&gt;. 
&lt;/p&gt;

&lt;h3&gt;Start coding today!&lt;/h3&gt;
&lt;p&gt;
  With so many exciting new APIs in Jetpack Compose, and many more coming up, it's never been a better time to &lt;a href="https://developer.android.com/develop/ui/compose/migrate/migrate-xml-views-to-jetpack-compose"&gt;migrate to Jetpack Compose&lt;/a&gt;. As always, we value your feedback and feature requests (especially on &lt;code&gt;@Experimental&lt;/code&gt; features that are still baking) — please file them &lt;a href="https://issuetracker.google.com/issues/new?component=612128"&gt;here&lt;/a&gt;. Happy composing!
&lt;/p&gt;&lt;/div&gt;</content><link href="http://android-developers.googleblog.com/feeds/883571858646595033/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/04/jetpack-compose-april-2026-updates.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/883571858646595033" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/883571858646595033" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/04/jetpack-compose-april-2026-updates.html" rel="alternate" title="What's new in the Jetpack Compose April '26 release" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/a/AVvXsEhgVW3uXlpqZ7PcHixqBlJ2AG19VCQosSAZfuCaqN5WnsvBCiGJdFo4WersXe30hoBz9w6iNYN6QfyY7ae3pNYaa6BQpveTPDKFXXEhJkMXFfxoJIUOXzoaslEJ6NkAA85VvXU4Kv5oZnfG1BDe5dlxsEVxkeyZ1OECfXLSmbcP46IPw5JBj2eBWascC6A=s72-c" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-2628020676055539899</id><published>2026-04-22T13:00:00.000-07:00</published><updated>2026-04-27T07:29:15.403-07:00</updated><title type="text"> Streamline User Journeys with Verified Email via Credential Manager</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/a/AVvXsEgseJ0HOa6wGI4egBEWBTC4Pawhiiv3BQIDm5R3XjY2D0uBRcZJaNTWcsHkMXY8VnbtA98-sojfdwKttHh6x82yQSg1sCsAWSKb8QXgVo5bQk4wtoi2LoM5u-TXYeIDD-fbqkA3SJssiUWgFTWsf44BAjzk06Iov-uDeIXJm6elMrcsNQoEU2KbVYN6SQo" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/meta&gt;
&lt;img src="https://blogger.googleusercontent.com/img/a/AVvXsEgseJ0HOa6wGI4egBEWBTC4Pawhiiv3BQIDm5R3XjY2D0uBRcZJaNTWcsHkMXY8VnbtA98-sojfdwKttHh6x82yQSg1sCsAWSKb8QXgVo5bQk4wtoi2LoM5u-TXYeIDD-fbqkA3SJssiUWgFTWsf44BAjzk06Iov-uDeIXJm6elMrcsNQoEU2KbVYN6SQo" style="display: none;" /&gt;&lt;div class="entry-content"&gt;&lt;i&gt;Posted by Niharika Arora, Senior Developer Relations Engineer and Jean-Pierre Pralle, Product Manager, Credential Manager&lt;/i&gt;&lt;/div&gt;&lt;div class="entry-content"&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrkwBoNh5swqed4VY1XpXFkClSeuytxVntwZHc1t33e6_N49ra3ja_C4d9m_kE9GUuA2AvXz7696z08MAop8fcK1Ac69MB9QnQcBc4Qy-VYPwjjksvUEVzvSwvFRPocxWEVUv71EodUFWOMgBDiTI7TDTys7kqKMVHCpi4R-yDpzGkJVJpPx5Im1r2Yqk/s8419/Streamline-user-animation-V02%20Blog.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;"&gt;&lt;img border="0" data-original-height="2507" data-original-width="8419" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrkwBoNh5swqed4VY1XpXFkClSeuytxVntwZHc1t33e6_N49ra3ja_C4d9m_kE9GUuA2AvXz7696z08MAop8fcK1Ac69MB9QnQcBc4Qy-VYPwjjksvUEVzvSwvFRPocxWEVUv71EodUFWOMgBDiTI7TDTys7kqKMVHCpi4R-yDpzGkJVJpPx5Im1r2Yqk/s16000/Streamline-user-animation-V02%20Blog.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="text-align: center;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;In the modern digital landscape, the first encounter a user has with an app is often the most critical. Yet, for decades, this initial interaction has been hindered by the friction of traditional verification methods. Today, we're excited to announce a &lt;a href="https://developer.android.com/identity/digital-credentials/email-verification"&gt;new verified email credential issued by Google&lt;/a&gt;, which developers can now retrieve directly from Android’s Credential Manager Digital Credential API.&lt;/p&gt;

  &lt;h2&gt;The Problem: Authentication Friction in the Modern Era&lt;/h2&gt;
  &lt;p&gt;The "current era" of authentication is defined by a trade-off between security and convenience. To ensure that a user owns the email address they provide, you typically rely on One-Time Passwords (OTPs) or "magic links" sent by email or SMS.&lt;/p&gt;
  
  &lt;p&gt;While effective, these traditional steps introduce significant hurdles:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Context switching:&lt;/strong&gt; Users must leave the app, open their inbox or messaging app, find the code, and return, a process where many potential users simply drop off.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Delivery issues:&lt;/strong&gt; While Emails are free, they can be delayed or diverted to spam folders.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Onboarding friction:&lt;/strong&gt; Every extra second spent in the "verification loop" is a second where a user might lose interest, directly impacting conversion rates.&lt;/li&gt;
  &lt;/ul&gt;

  &lt;h2&gt;The Solution: Seamless, Verified Email&lt;/h2&gt;
  &lt;p&gt;Google now issues a cryptographically verified email credential directly to Android devices. This verified email credential is delivered through the &lt;a href="https://developer.android.com/identity/credential-manager"&gt;Credential Manager API&lt;/a&gt;, which is Android's implementation of the&lt;a href="https://www.w3.org/TR/digital-credentials/"&gt; W3C's Digital Credential API&lt;/a&gt; standard.&lt;/p&gt;
  
  &lt;p&gt;For users, this completely removes the need to manually verify their email through external channels. For developers, the API securely delivers these verified user claims for any scenario whether you are building an account creation flow, a recovery process, or a high-risk step-up authentication.&lt;/p&gt;
  
  &lt;p&gt;While this specific verified email address is sourced securely from the user's Google Account on their device, the underlying Digital Credentials API is issuer-agnostic. This fosters an open ecosystem, allowing any holder of a digital credential with an email claim to offer that verification to your app.&lt;/p&gt;

  &lt;h2&gt;User Experience&lt;/h2&gt;
  &lt;p&gt;The beauty of this API lies in its simplicity for the end user. Instead of hunting for OTP codes, the experience is integrated directly into the Android OS:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Initiation:&lt;/strong&gt; The process begins when a user focuses on an email input field or taps a "Sign up" or "Recover account" button. You can also initiate the process on page load.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Transparency:&lt;/strong&gt; A native Android bottom sheet appears, clearly detailing exactly what data is being requested (for example, user’s verified email address).&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;One-tap consent:&lt;/strong&gt; The user simply taps "Agree and continue" to share the data.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Immediate progress:&lt;/strong&gt; Once consent is given, the app receives the data instantly. For sign-up or account recovery flows, you can then seamlessly transition the user into passkey creation, ensuring:
      &lt;ul&gt;
        &lt;li&gt;Users do not have to enter any user information manually, as compared to the traditional username/password registration.&lt;/li&gt;
        &lt;li&gt;Their next login is even faster and more secure.&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
  &lt;/ul&gt;

  &lt;h2&gt;Use case 1. Sign up&lt;/h2&gt;
  &lt;p&gt;Accelerate onboarding by fetching a verified email the moment the user taps "Sign up". We strongly recommend you pair the verified email retrieval with passkey creation, also part of the Credential Manager API:&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB0XD7gJHIVNibV1Ha-Nc9gt6ZtetHbj3Q-kEdl4T2LdraGEjhjuw2_vIu4oJypeeFIVt17ilknHKW6YtLtqVgGG3bu1STEB57NVaquTUzMitGQ6_Kx0rQFTqVCm9Xh16dpx9dnohMoEay851uoBmmyzbE-8FI6BRpKbr7eLz1f4I-vmV_fjXYIp3FDtc/s11200/%E2%80%A2%20(7).png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="5000" data-original-width="11200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB0XD7gJHIVNibV1Ha-Nc9gt6ZtetHbj3Q-kEdl4T2LdraGEjhjuw2_vIu4oJypeeFIVt17ilknHKW6YtLtqVgGG3bu1STEB57NVaquTUzMitGQ6_Kx0rQFTqVCm9Xh16dpx9dnohMoEay851uoBmmyzbE-8FI6BRpKbr7eLz1f4I-vmV_fjXYIp3FDtc/s16000/%E2%80%A2%20(7).png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;p&gt;&lt;em&gt;Note: You can also fetch other unverified fields such as a user’s given name, family name, name, profile picture and the hosted domain connected with the verified email.&lt;/em&gt;&lt;/p&gt;

  &lt;h2&gt;Use case 2. Account recovery&lt;/h2&gt;
  &lt;p&gt;Eliminate the frustration of users hunting for recovery codes in their spam folders by allowing them to recover their account using the verified email securely stored on their device.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxvTQN0G2H_TJQ8T4lIMNEdmTbeLZ3NocqBv8ilMHZhPz-2W4lyjSYnByGJgf2H6gVBfUqhz7A8BELqWS1eo6xUnp44lzeHD1nG3n0iqrrnpfV7iyUyIIZv7Arfk8MGYr5frMdsA1cyDsR0Bx7zVpcXQD2-g3pTf1HuPj-GimaUXlb47gKT_995Hv5yEw/s11200/%E2%80%A2%20(8).png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="5000" data-original-width="11200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxvTQN0G2H_TJQ8T4lIMNEdmTbeLZ3NocqBv8ilMHZhPz-2W4lyjSYnByGJgf2H6gVBfUqhz7A8BELqWS1eo6xUnp44lzeHD1nG3n0iqrrnpfV7iyUyIIZv7Arfk8MGYr5frMdsA1cyDsR0Bx7zVpcXQD2-g3pTf1HuPj-GimaUXlb47gKT_995Hv5yEw/s16000/%E2%80%A2%20(8).png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

  &lt;h2&gt;Use case 3. Re-authentication for sensitive actions&lt;/h2&gt;
  &lt;p&gt;Protect sensitive user actions, such as changing settings or updating profile details, by requiring a quick re-authentication step. Instead of an OTP, you can provide a low-friction verification using the device's verified email.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdxwdKc_D_ZADn0IGuUsPHJNmyXxQPgevHU9JgbjVJDF7B6smZCiCUcEJlUfKxejRvCs0gTDLv3XkxLZ7Zu_gPcQ4oY5oxmTCNvLTB9ECY7SPFQ0W5PwREzvEvZUfiq7uFcrR3Ts8bEmn2xa97yzRPam1Ei1J0CyWDZ43e8pWT8nr6FArwu5jlN8jxdVM/s8408/%E2%80%A2%20(9).png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="4644" data-original-width="8408" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdxwdKc_D_ZADn0IGuUsPHJNmyXxQPgevHU9JgbjVJDF7B6smZCiCUcEJlUfKxejRvCs0gTDLv3XkxLZ7Zu_gPcQ4oY5oxmTCNvLTB9ECY7SPFQ0W5PwREzvEvZUfiq7uFcrR3Ts8bEmn2xa97yzRPam1Ei1J0CyWDZ43e8pWT8nr6FArwu5jlN8jxdVM/s16000/%E2%80%A2%20(9).png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

  &lt;h2&gt;Important Considerations&lt;/h2&gt;
  &lt;p&gt;As you design your authentication architecture around the Digital Credentials API, keep the following details in mind:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Account support:&lt;/strong&gt; For the specific email credential issued by Google, only regular consumer Google Accounts are supported (Workspace and supervised accounts are currently not supported). Keep in mind that the Credential Manager API itself is issuer-agnostic, meaning other identity providers can issue credentials with their own account support policies.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Other user data:&lt;/strong&gt; Beyond email, you can request the user's given name, family name, full name, and profile picture. However, note that only the email is verified by Google.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Auto verify your @gmail accounts:&lt;/strong&gt; The API provides verified emails for all consumer Google Accounts. We recommend auto-verifying @gmail.com users and routing custom domains to your existing verification flow - for example, an OTP flow. This ensures you maintain long-term access for external domains not directly managed by Google.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Complementary to Sign in with Google:&lt;/strong&gt; While both the new verified email credential &amp;amp; Sign in with Google API provides a verified email, the choice depends on the intended user experience:
      &lt;ul&gt;
        &lt;li&gt;Use Sign in with Google when your users want to create a federated login session.&lt;/li&gt;
        &lt;li&gt;Use Verified Email when your users want to sign in traditionally with a username/password or passkey but want to auto-verify the email address without the manual chore of an OTP.&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
  &lt;/ul&gt;

  &lt;h2&gt;Conclusion and Next steps&lt;/h2&gt;
  &lt;p&gt;By integrating &lt;a href="https://developer.android.com/identity/digital-credentials/email-verification"&gt;the new verified email via Credential Manager API&lt;/a&gt;, you can drastically reduce onboarding friction and provide users with a more streamlined, secure authentication journey. This represents a shift toward a future where "verification" is no longer a manual chore for the user, but a seamless, integrated part of the native mobile experience.&lt;/p&gt;
  
  &lt;p&gt;Ready to see how this fits into your own app? To get started, update your project to the latest Credential Manager API and explore our &lt;a href="https://developer.android.com/identity/digital-credentials/email-verification"&gt;Integration Guide&lt;/a&gt;. We encourage you to explore how this streamlined verification can simplify your critical user journeys from optimizing account creation, to enhancing re-authentication flows.&lt;/p&gt;
&lt;/div&gt;</content><link href="http://android-developers.googleblog.com/feeds/2628020676055539899/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/04/streamline-auth-credential-manager-verified-email.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/2628020676055539899" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/2628020676055539899" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/04/streamline-auth-credential-manager-verified-email.html" rel="alternate" title=" Streamline User Journeys with Verified Email via Credential Manager" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/a/AVvXsEgseJ0HOa6wGI4egBEWBTC4Pawhiiv3BQIDm5R3XjY2D0uBRcZJaNTWcsHkMXY8VnbtA98-sojfdwKttHh6x82yQSg1sCsAWSKb8QXgVo5bQk4wtoi2LoM5u-TXYeIDD-fbqkA3SJssiUWgFTWsf44BAjzk06Iov-uDeIXJm6elMrcsNQoEU2KbVYN6SQo=s72-c" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-258317609077000702</id><published>2026-04-21T07:00:00.000-07:00</published><updated>2026-04-21T09:55:50.265-07:00</updated><title type="text">Level up your development with Planning Mode and Next Edit Prediction in Android Studio Panda 4 </title><content type="html">&lt;img alt="Panda Statics Metadata Card" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCeyqbTYSKHw74pe8taXGIeibsDPTF3E2HfJ6FdOSS1Ks5oZf57MawULThH8WnWs-H8Rd-mh4gDAYWhJgKqVUoFPWY5uBRawb0qOagSEKEjJ3F4__Zd3u1rxkA15l_9L_6h8cVpsNA3_60pFredcBWYlC7_MOqRhD_ZCxdH28qvfVMBRhMPhtU7FpoYd0/s2048/Panda-Statics-METACARD_Panda4.png" style="height: 1px; left: -9999px; opacity: 0.01; position: absolute; width: 1px;" /&gt;
&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCeyqbTYSKHw74pe8taXGIeibsDPTF3E2HfJ6FdOSS1Ks5oZf57MawULThH8WnWs-H8Rd-mh4gDAYWhJgKqVUoFPWY5uBRawb0qOagSEKEjJ3F4__Zd3u1rxkA15l_9L_6h8cVpsNA3_60pFredcBWYlC7_MOqRhD_ZCxdH28qvfVMBRhMPhtU7FpoYd0/s2048/Panda-Statics-METACARD_Panda4.png" property="og:image"&gt;&lt;/meta&gt;

&lt;meta content="summary_large_image" name="twitter:card"&gt;&lt;/meta&gt;
&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCeyqbTYSKHw74pe8taXGIeibsDPTF3E2HfJ6FdOSS1Ks5oZf57MawULThH8WnWs-H8Rd-mh4gDAYWhJgKqVUoFPWY5uBRawb0qOagSEKEjJ3F4__Zd3u1rxkA15l_9L_6h8cVpsNA3_60pFredcBWYlC7_MOqRhD_ZCxdH28qvfVMBRhMPhtU7FpoYd0/s2048/Panda-Statics-METACARD_Panda4.png" name="twitter:image"&gt;&lt;/meta&gt;

&lt;img alt="Panda Statics Metadata Card" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCeyqbTYSKHw74pe8taXGIeibsDPTF3E2HfJ6FdOSS1Ks5oZf57MawULThH8WnWs-H8Rd-mh4gDAYWhJgKqVUoFPWY5uBRawb0qOagSEKEjJ3F4__Zd3u1rxkA15l_9L_6h8cVpsNA3_60pFredcBWYlC7_MOqRhD_ZCxdH28qvfVMBRhMPhtU7FpoYd0/s2048/Panda-Statics-METACARD_Panda4.png" style="display: none;" /&gt;
&lt;div class="post-body"&gt;&lt;i&gt;Posted by Matt Dyor, Senior Product Manager&lt;/i&gt;&lt;/div&gt;&lt;div class="post-body"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcwLhIy1lD7aMRSF6IpZ9m_d4-jTxSfboP6LwtATN69Q8FHbYwpuSI1GKnVf9g6pu26Z9HsABZ0GDPh5fCAhR75WxlwiLT3Pnq38YPXO7gBKnCwm4ae42U1xovkkPX1OMHBegOKcda85ZrDhKL1rePhSH7I-U6DrVFMP1w1Y8ZpdReF_P0LZ9zsvdLCmk/s800/Android_PandaYawn.gif" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="507" data-original-width="800" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcwLhIy1lD7aMRSF6IpZ9m_d4-jTxSfboP6LwtATN69Q8FHbYwpuSI1GKnVf9g6pu26Z9HsABZ0GDPh5fCAhR75WxlwiLT3Pnq38YPXO7gBKnCwm4ae42U1xovkkPX1OMHBegOKcda85ZrDhKL1rePhSH7I-U6DrVFMP1w1Y8ZpdReF_P0LZ9zsvdLCmk/s16000/Android_PandaYawn.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
    &lt;p&gt;Android Studio Panda 4 is now stable and ready for you to use in production. This release brings Planning Mode, Next Edit Prediction, and more, making it easier than ever to build high-quality Android apps.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe allowfullscreen="" class="BLOG_video_class" height="342" src="https://www.youtube.com/embed/ThfXy_Cx4gg" width="563" youtube-src-id="ThfXy_Cx4gg"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;

    &lt;p&gt;Here’s a deep dive into what’s new:&lt;/p&gt;
    &lt;h2 style="margin-bottom: 8px; margin-top: 4px;"&gt;Planning Mode&lt;/h2&gt;Before the Agent starts working on complex tasks for you, it would be helpful if it could come up with a detailed plan. Jumping straight into a large coding project without a design often leads to technical debt or logic errors; the same is true for AI. That’s why we’re adding Planning Mode. &lt;br /&gt;&lt;br /&gt;In this mode, the Agent comes up with a detailed project plan before executing tasks. Instead of a single pass where the model directly predicts the next token of code, Planning Mode facilitates a multi-stage reasoning process — giving the agent additional space to evaluate its own proposed logic for potential issues before presenting it to you. This is especially useful for complex and long-running tasks which demand a high degree of architectural precision.&lt;br /&gt;&lt;br /&gt;To use Planning Mode, switch your conversation mode to "Planning" in the agent input box and enter your prompt. to “Planning” and enter your prompt.&lt;/div&gt;&lt;div class="post-body"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6oJ9nrugOLWIXvPgtOJdAF7y7YppNlMRZr17ZcW9bdv8S8RuCUt3LmM-LA_KB611DsB7ToBkACvTln2Vt2OgAm1F3sKtMNXSBoTzYLkxW2lFfZScJtr6SAgLc-A_1HIAMkE0vK5BD1_JftXt3X_2DhGZcDHzhDK7NOMfXHQRUYdl0_dOO_tyGEfuCIwI/s818/2-5-walkthrough-artifact.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="590" data-original-width="818" height="462" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6oJ9nrugOLWIXvPgtOJdAF7y7YppNlMRZr17ZcW9bdv8S8RuCUt3LmM-LA_KB611DsB7ToBkACvTln2Vt2OgAm1F3sKtMNXSBoTzYLkxW2lFfZScJtr6SAgLc-A_1HIAMkE0vK5BD1_JftXt3X_2DhGZcDHzhDK7NOMfXHQRUYdl0_dOO_tyGEfuCIwI/w640-h462/2-5-walkthrough-artifact.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Switch to Planning Mode&lt;/i&gt;&lt;/div&gt;&lt;/i&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;In Planning Mode, the agent examines your request and may generate an implementation plan for large or complex tasks. You have the opportunity to fix mistakes or clarify which approaches to use—all before the agent has spent any time or tokens heading in the wrong direction.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;

    &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif4x9HhMisD87G7aWsHT68gFho8pkkd1xKkfz-oa9YEwFlah43j9jhH2_AlBunLYjCwTWyTBebcDJyGcL1uXhxqSAx0t9wdgbwyhZrWY-gDLQWLOQBisyEBZyFCkSqVRfEtrAmFOY4QOgXO50ansB0h3SDFOwv5wdg2OKb53Y6MQ3ph_XOmDyt9YNEEDM/s1880/2-2-open-implementation-plan.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="668" data-original-width="1880" height="230" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif4x9HhMisD87G7aWsHT68gFho8pkkd1xKkfz-oa9YEwFlah43j9jhH2_AlBunLYjCwTWyTBebcDJyGcL1uXhxqSAx0t9wdgbwyhZrWY-gDLQWLOQBisyEBZyFCkSqVRfEtrAmFOY4QOgXO50ansB0h3SDFOwv5wdg2OKb53Y6MQ3ph_XOmDyt9YNEEDM/w640-h230/2-2-open-implementation-plan.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Open Implementation Plan&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;/i&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIDkhVTjmbMgGsPuIOA6a7LbrQrC7s9D4dZaV2pYBPfxCebBlPgVuRaEgf7HYh204mcGlWobaJFKnBFFr-EUWx9aia9nlOm-mgObdWa0vEK1nbrTTFEwLOExQoh-qXTMTTwbPfXdMo-oPVeSEuQn4I_GpovrWxrdHo_jM7Z60VJ-krMpP39o0DbeFwKJM/s1314/2-3-add-comments-to-implementation.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1188" data-original-width="1314" height="578" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIDkhVTjmbMgGsPuIOA6a7LbrQrC7s9D4dZaV2pYBPfxCebBlPgVuRaEgf7HYh204mcGlWobaJFKnBFFr-EUWx9aia9nlOm-mgObdWa0vEK1nbrTTFEwLOExQoh-qXTMTTwbPfXdMo-oPVeSEuQn4I_GpovrWxrdHo_jM7Z60VJ-krMpP39o0DbeFwKJM/w640-h578/2-3-add-comments-to-implementation.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Add Comments to Implementation Plan&lt;/i&gt;&lt;/div&gt;&lt;/i&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;After adding comments, simply hit “Submit Comments” and the agent will use your feedback to revise the implementation plan. To stay on track during execution—which is particularly important with larger changes—the agent organizes its work and generates a &lt;strong&gt;"&lt;/strong&gt;Task List" artifact. You can sit back and watch as the agent methodically completes all of the tasks.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;

    &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDpN_9KcvJhOGO7zkRUwNS8Sx7Ne7dbL2HQaXg7DpMoUvm1YJdJ2wgj14lUac_v_ahn5ku50GryfAVx7iykD2mOBx0bgtxojYGLG6ZDIKy1hu1k9tIfCkKOTDwt9rWOCI5jUiZbmxmPpGmdjB279oNfim_XV_9VVbgas_2rUBpzXhsH_EbezzLB-vQiAE/s1330/2-4=task-list-artifact.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1084" data-original-width="1330" height="522" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDpN_9KcvJhOGO7zkRUwNS8Sx7Ne7dbL2HQaXg7DpMoUvm1YJdJ2wgj14lUac_v_ahn5ku50GryfAVx7iykD2mOBx0bgtxojYGLG6ZDIKy1hu1k9tIfCkKOTDwt9rWOCI5jUiZbmxmPpGmdjB279oNfim_XV_9VVbgas_2rUBpzXhsH_EbezzLB-vQiAE/w640-h522/2-4=task-list-artifact.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Task List Artifact&lt;/i&gt;&lt;/div&gt;&lt;/i&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;After the work is done, the agent produces a “Walkthrough” artifact, giving you a clear summary of exactly what has been changed—making it easy to review the agent's changes. Build with more confidence and control using Planning Mode in the latest release of Android Studio.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;

    &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdZds1C9AsXkKCiN7BJwXcJlWA6hwvt1FYPPs1Zy4xSpmKjVUCydXktrlDxEROk24MNYuKWGVUQlhoLqBBOLJbZEYOZLxH02Wx4Zm87x58ojU2j_WH3PigrR2L2wp7VXrAiUYddN6kOLh3A2bbmNHRl2ikEH_XQ9oa8752yIiYKKPQXYS9gqwf1lxVXmo/s1066/2-1-switch-to-planning-mode.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1066" data-original-width="948" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdZds1C9AsXkKCiN7BJwXcJlWA6hwvt1FYPPs1Zy4xSpmKjVUCydXktrlDxEROk24MNYuKWGVUQlhoLqBBOLJbZEYOZLxH02Wx4Zm87x58ojU2j_WH3PigrR2L2wp7VXrAiUYddN6kOLh3A2bbmNHRl2ikEH_XQ9oa8752yIiYKKPQXYS9gqwf1lxVXmo/w570-h640/2-1-switch-to-planning-mode.png" width="570" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Add Comments to Implementation Plan&lt;/i&gt;&lt;/div&gt;&lt;/i&gt;&lt;h2&gt;Next Edit Prediction&lt;/h2&gt;Classic autocomplete is great for finishing your sentences, but coding is rarely a linear path. Often, a change in one place requires a secondary change elsewhere—like adding a new parameter to a function and then needing to update its invocations, or a UI preview update when a Composable is changed. Traditionally, this meant breaking your focus to hunt down the related lines of code that need attention.&lt;br /&gt;&lt;br /&gt;Next Edit Prediction (NEP) evolves code completion by anticipating your next move, even when it’s not at your current cursor position. By analyzing your recent edits, Android Studio recognizes the logical pattern of your workflow. If you modify a data class or update a constructor, NEP can suggest the next relevant edit—perhaps in a distant function—allowing you to jump straight to the fix.&lt;br /&gt;&lt;br /&gt;Instead of manually navigating back and forth, you can accept these multi-location suggestions with a single keystroke. This keeps you deep in the "flow state," reducing the cognitive load of routine updates and letting you focus on the complex logic that truly matters to your application. Experience a more intuitive, non-linear way to code in the latest version of Android Studio.&lt;/div&gt;&lt;div class="post-body"&gt;&lt;br /&gt;&amp;nbsp;

    &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKq8ewj9R9p615zFs_G9FqSKJhWtEa_dh2ooTPilsTtg81XdaICe9UNiilbHU4-nMLamd3HSEFwArCdatMOMAKLiaNX6sUnWXEocCOVbR52eSKyWaWxjUOfOTrAFRCK_c-2jogM2fcRU0T6Ht8y2robm_f7mgfSZCBQ99Hb_fyWxwySO-7Z3BuziA2B5w/s974/3-1-nep-update.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="613" data-original-width="974" height="402" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKq8ewj9R9p615zFs_G9FqSKJhWtEa_dh2ooTPilsTtg81XdaICe9UNiilbHU4-nMLamd3HSEFwArCdatMOMAKLiaNX6sUnWXEocCOVbR52eSKyWaWxjUOfOTrAFRCK_c-2jogM2fcRU0T6Ht8y2robm_f7mgfSZCBQ99Hb_fyWxwySO-7Z3BuziA2B5w/w640-h402/3-1-nep-update.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;NEP Updating Function Name&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;em&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;

    &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2PxN_g14yXOFXOeBqQ8wC5GbPaeIWFQQ3AqkXzreTjnMMPJb-AM8V6wGs68ufeJDozAnRQzuXV2JgKs6lJwi8LHJq4iaQ_3jqOXkMFouGSYF4WNepHFgnkyUn153WCNOBFQ8rtJpIm77H720uywImSTRqvFm-3NWi0HtDzf2K9Lj1Y4y7ctecclyNoKI/s812/3-2-nep-addition.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="290" data-original-width="812" height="229" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2PxN_g14yXOFXOeBqQ8wC5GbPaeIWFQQ3AqkXzreTjnMMPJb-AM8V6wGs68ufeJDozAnRQzuXV2JgKs6lJwi8LHJq4iaQ_3jqOXkMFouGSYF4WNepHFgnkyUn153WCNOBFQ8rtJpIm77H720uywImSTRqvFm-3NWi0HtDzf2K9Lj1Y4y7ctecclyNoKI/w640-h229/3-2-nep-addition.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;NEP Adding New Line&lt;/i&gt;&lt;/div&gt;

    &lt;h2&gt;Gemini API Starter Template&lt;/h2&gt;Adding powerful AI features to your app just got easier, introducing the Gemini API Starter Template for Android Studio! &lt;br /&gt;&lt;br /&gt;Integrating generative AI into your Android application used to mean managing complex backend plumbing and worrying about API key security. With the new Gemini API Starter template in Android Studio, developers can now jump straight into building features rather than spending time configuring infrastructure.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Key benefits include:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;b&gt;Zero API key management: &lt;/b&gt;Stop worrying about provisioning or rotating keys. By leveraging Firebase AI Logic, the template eliminates the need to embed sensitive credentials in your client-side code.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Automated Firebase integration: &lt;/b&gt;The backend plumbing is handled for you. The template automatically connects your project to Firebase services, ensuring a secure bridge between your app and Google’s Gemini models.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Built to scale: &lt;/b&gt;This isn't just for prototypes. The production-ready architecture allows you to scale from a local test to a global user base without redesigning your foundation.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Multimodal processing:&lt;/b&gt; Supports text, image, video, and audio inputs. You can build features like real-time image analysis, video summarization, and audio transcription.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;
    &lt;/ul&gt;

    &lt;h3 style="text-align: left;"&gt;&lt;b&gt;Get Started&lt;/b&gt;&lt;/h3&gt;
    &lt;ol&gt;
        &lt;li&gt;Open Android Studio.&lt;/li&gt;
        &lt;li&gt;Navigate to &lt;strong&gt;File &amp;gt; New &amp;gt; New Project&lt;/strong&gt;.&lt;/li&gt;
        &lt;li&gt;Select the &lt;strong&gt;Gemini API Starter&lt;/strong&gt; template from the gallery.&lt;/li&gt;
    &lt;/ol&gt;

    &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_3gKI_SyCoB8EHqBbWe2Yr8cM7cZ7Fh4NqP4dx9OE0LalkaMIKZ3vKwLEzBehECmlUD-8hGCP_Ysux5bFH94VsCIYHE6UTvE8OwRZ_ua_LnE0BchYyRxd8w7mTmvRM7KC5XTS485VFbzuWEqWGCyKU4tTSNUT0yICxSJ1-M8jlqf6XhEYAgjtnRo10qk/s621/4-1-gemini-api-template.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="466" data-original-width="621" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_3gKI_SyCoB8EHqBbWe2Yr8cM7cZ7Fh4NqP4dx9OE0LalkaMIKZ3vKwLEzBehECmlUD-8hGCP_Ysux5bFH94VsCIYHE6UTvE8OwRZ_ua_LnE0BchYyRxd8w7mTmvRM7KC5XTS485VFbzuWEqWGCyKU4tTSNUT0yICxSJ1-M8jlqf6XhEYAgjtnRo10qk/w640-h480/4-1-gemini-api-template.png" width="640" /&gt;&lt;/a&gt;&lt;i&gt;Gemini API Starter new project template&lt;/i&gt;&lt;/div&gt;

    &lt;h2&gt;Agent Web Search&lt;/h2&gt;When you’re deep in development, the right answer is often just a search away—but leaving your IDE to find it can snap you out of your flow. Whether you need the exact version number for a dependency or the latest API changes for a third-party library, the Agent Web Search tool is here to help without you ever having to leave Android Studio.&lt;br /&gt;&lt;br /&gt;While Android Studio’s agent already leverages the &lt;a href="https://developer.android.com/studio/gemini/knowledge-base"&gt;Android Knowledge Base&lt;/a&gt; for official documentation, modern Android development relies on a vast ecosystem of external libraries. Agent Web Search expands Gemini's reach, allowing it to query Google directly to fetch current reference material from across the web. From checking the latest setup guides for Coil to finding advanced configuration tips for Koin or Moshi, the agent can now pull in the most up-to-date information in real time.&lt;br /&gt;&lt;br /&gt;The Agent Web Search tool is designed to be helpful but unobtrusive; it will automatically trigger a web search when it identifies a gap in its local knowledge. You can also take the wheel by asking it to find something specific—simply include "search the web for..." in your prompt. By integrating live web results directly into your workspace, Agent Web Search ensures you’re always building with the most current data available, speeding up your workflow and keeping your project on the cutting edge.&lt;/div&gt;&lt;div class="post-body"&gt;&lt;br /&gt;&amp;nbsp;

    &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwPIwFg4HbmO-2534wIfXsZ96IHw82RsxXRJwNT8XCXcILpr88_rC8fzCvM1GwWLEEOIs6iCIYnpYkjKXcAod_gKGa5OWCOGScQBnVYD4DqEaRGShSfP6-unwc24x8hm4j-kgQytEGOy9IXTxt8wfZbDo10JI8ngngT8hqjgmOZ0U0DrVxWnxIGP9X0Dg/s597/trash-5-1-aws-invocation.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="336" data-original-width="597" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwPIwFg4HbmO-2534wIfXsZ96IHw82RsxXRJwNT8XCXcILpr88_rC8fzCvM1GwWLEEOIs6iCIYnpYkjKXcAod_gKGa5OWCOGScQBnVYD4DqEaRGShSfP6-unwc24x8hm4j-kgQytEGOy9IXTxt8wfZbDo10JI8ngngT8hqjgmOZ0U0DrVxWnxIGP9X0Dg/w640-h360/trash-5-1-aws-invocation.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;Agent Web Search Tool Invocation&lt;/i&gt;&lt;/div&gt;

    &lt;h3 style="text-align: left;"&gt;Android Studio Panda Releases&lt;/h3&gt;
&lt;div&gt;
  Panda 4 continues Android Studio’s focus on accelerating developer productivity with AI. 
  Check out &lt;a href="https://android-developers.googleblog.com/2026/05/go-from-prompt-to-working-prototype.html" style="color: #1a73e8; text-decoration: none;" target="_blank"&gt;Go from prompt to working prototype with Android Studio Panda 2&lt;/a&gt; 
  and&amp;nbsp;&lt;a href="https://android-developers.googleblog.com/2026/04/Increase-Guidance-and-Control-over-Agent-Mode-with-Android-Studio-Panda-3.html" style="color: #1a73e8; text-decoration: none;"&gt;Increase Guidance and Control over Agent Mode with Android Studio Panda 3&lt;/a&gt;.
&lt;/div&gt;

&lt;p&gt;
  &lt;a href="https://android-developers.googleblog.com/2026/05/go-from-prompt-to-working-prototype.html" style="color: #1a73e8; font-size: 1.1em; text-decoration: none;" target="_blank"&gt;
    &lt;b&gt;Android Studio Panda 2&lt;/b&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;ul style="line-height: 1.6; text-align: left;"&gt;
  &lt;li&gt;&lt;b&gt;AI-powered New Project flow:&lt;/b&gt; Allows you to build a working app prototype with a single prompt. The agent manages initial setup, navigation configuration, and proper dependencies, and features an autonomous generation loop to handle build errors and deploy to an emulator.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Version Upgrade Assistant:&lt;/b&gt; Automates dependency management and updates, iteratively attempting builds and resolving conflicts until a stable configuration is found.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
  &lt;a href="https://android-developers.googleblog.com/2026/04/Increase-Guidance-and-Control-over-Agent-Mode-with-Android-Studio-Panda-3.html" style="color: #1a73e8; font-size: 1.1em; text-decoration: none;" target="_blank"&gt;
    &lt;b&gt;Android Studio Panda 3&lt;/b&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;ul style="line-height: 1.6; text-align: left;"&gt;
  &lt;li&gt;&lt;b&gt;Agent skills:&lt;/b&gt; Specialized, user-defined instructions (stored in a .skills directory) that teach the AI agent project-specific capabilities, coding standards, or library usage.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Agent permissions:&lt;/b&gt; Provides fine-grained control over what agents can do, with features like "Always Allow" rules for trusted operations. For even more security, you can also use an optional sandbox to enforce strict, isolated control over the agent.&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Empty Car App Library App template:&lt;/b&gt; Simplifies building driving-optimized apps for Android Auto and Android Automotive OS by handling required boilerplate code.&lt;/li&gt;
&lt;/ul&gt;&lt;h3 style="text-align: left;"&gt;Get started&lt;/h3&gt;&lt;div style="text-align: left;"&gt;Dive in and accelerate your development. &lt;a href="https://developer.android.com/studio" target="_blank"&gt;Download&lt;/a&gt; Android Studio Panda 4 and start exploring these powerful new agentic features today.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;As always, your feedback is crucial to us. &lt;a href="https://developer.android.com/studio/known-issues" target="_blank"&gt;Check known issues&lt;/a&gt;, &lt;a href="https://developer.android.com/studio/report-bugs" target="_blank"&gt;report bugs&lt;/a&gt;, and be part of our vibrant community on &lt;a href="https://www.linkedin.com/showcase/androiddev/posts/?feedView=all" target="_blank"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://medium.com/androiddevelopers" target="_blank"&gt;Medium&lt;/a&gt;, &lt;a href="https://www.youtube.com/c/AndroidDevelopers/videos" target="_blank"&gt;YouTube&lt;/a&gt;, or &lt;a href="https://twitter.com/androidstudio" target="_blank"&gt;X&lt;/a&gt;. Happy coding!&lt;/div&gt;

&lt;div style="height: 0px; left: -9999px; overflow: hidden; position: absolute;"&gt;
  Android Studio, androidstudio, Android Studio Panda, featured, 
  Gemini in Android Studio, AI-powered new project flow, version upgrade assistant
&lt;/div&gt;
&lt;/div&gt;</content><link href="http://android-developers.googleblog.com/feeds/258317609077000702/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/04/android-studio-panda-4-planning-mode-next-edit-prediction.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/258317609077000702" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/258317609077000702" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/04/android-studio-panda-4-planning-mode-next-edit-prediction.html" rel="alternate" title="Level up your development with Planning Mode and Next Edit Prediction in Android Studio Panda 4 " type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCeyqbTYSKHw74pe8taXGIeibsDPTF3E2HfJ6FdOSS1Ks5oZf57MawULThH8WnWs-H8Rd-mh4gDAYWhJgKqVUoFPWY5uBRawb0qOagSEKEjJ3F4__Zd3u1rxkA15l_9L_6h8cVpsNA3_60pFredcBWYlC7_MOqRhD_ZCxdH28qvfVMBRhMPhtU7FpoYd0/s72-c/Panda-Statics-METACARD_Panda4.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-4806905801068539873</id><published>2026-04-17T13:00:00.000-07:00</published><updated>2026-04-17T13:15:00.398-07:00</updated><title type="text">Experimental hybrid inference and new Gemini models for Android</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoPylOD-Ekyhe8AVg3iMvz6S1rsvUT_2Eb4m-77FRH4eebi5psKE8VJwu6xVxCzKXyTXpoxb3-k04e21C6-8KX0BQw0qiCBGToSHJzVYQRckBYqby9csdOCHWp_23DTfPOpWqfjFTL-vJh86Q-DhGLZnbs1L62q4iUsaHHWlpQ2oyLXo3OO0rGsH9ngxw/s1600/Hybrid%20inference%20solution%20for%20Android%20%20-%20Meta.png" property="og:image"&gt;&lt;/meta&gt;
&lt;div style="display: none;"&gt;
  &lt;img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoPylOD-Ekyhe8AVg3iMvz6S1rsvUT_2Eb4m-77FRH4eebi5psKE8VJwu6xVxCzKXyTXpoxb3-k04e21C6-8KX0BQw0qiCBGToSHJzVYQRckBYqby9csdOCHWp_23DTfPOpWqfjFTL-vJh86Q-DhGLZnbs1L62q4iUsaHHWlpQ2oyLXo3OO0rGsH9ngxw/s1600/Hybrid%20inference%20solution%20for%20Android%20%20-%20Meta.png" /&gt;
&lt;/div&gt;&lt;i&gt;Posted by Thomas Ezan, Senior Developer Relations Engineer&lt;/i&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4_6pZO5RgA6G3e721iCaVVSfrwZStUKlddvxF2XgQc7M0VGtG8_KPiv7ZEkx4_a7xo2HiltuDyw55rGH7KoVn58oSU7xJ4LOWkaBfNn6TfdBxN9aCBsW-KMW9cN0wF-4NIFTXAOu4pBs0xP-43SDm3mpQ5yODRQ-NAdwP4SH6virP8z0CTDlC9fvOE9Y/s8419/Hybrid%20inference%20solution%20for%20Android%20-%20Blog%20%20(1).png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2507" data-original-width="8419" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4_6pZO5RgA6G3e721iCaVVSfrwZStUKlddvxF2XgQc7M0VGtG8_KPiv7ZEkx4_a7xo2HiltuDyw55rGH7KoVn58oSU7xJ4LOWkaBfNn6TfdBxN9aCBsW-KMW9cN0wF-4NIFTXAOu4pBs0xP-43SDm3mpQ5yODRQ-NAdwP4SH6virP8z0CTDlC9fvOE9Y/s16000/Hybrid%20inference%20solution%20for%20Android%20-%20Blog%20%20(1).png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;p&gt;If you are an Android developer looking to implement innovative AI features into your app, we recently launched powerful new updates: Hybrid inference, a new API for Firebase AI Logic to leverage both on-device and Cloud inference, and support for new Gemini models including the latest Nano Banana models for image generation.&lt;/p&gt;

&lt;p&gt;Let’s jump in!&lt;/p&gt;

&lt;h2&gt;Experiment with hybrid inference&lt;/h2&gt;

&lt;p&gt;With the new &lt;a href="https://firebase.google.com/docs/ai-logic/hybrid/android/get-started?api=dev"&gt;Firebase API for hybrid inference&lt;/a&gt;, we implemented a simple rule-based routing approach as an initial solution to let you use both on-device and cloud inference via a unified API. We are planning on providing more sophisticated routing capabilities in the future.&lt;/p&gt;

&lt;p&gt;It allows your app to dynamically switch between Gemini Nano running locally on the device and cloud-hosted Gemini models. The on-device execution uses ML Kit's Prompt API. The cloud inference supports all the Gemini models from Firebase AI Logic in both Vertex AI and the Developer API.&lt;/p&gt;

&lt;p&gt;To use it, add the &lt;code&gt;firebase-ai-ondevice&lt;/code&gt; dependencies to your app along with Firebase AI Logic:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;dependencies {
 [...] 
 implementation("com.google.firebase:firebase-ai:17.11.0")
 implementation("com.google.firebase:firebase-ai-ondevice:16.0.0-beta01")
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;During initialization, you create a &lt;code&gt;GenerativeModel&lt;/code&gt; instance and configure it with specific inference modes, such as &lt;code&gt;PREFER_ON_DEVICE&lt;/code&gt; (falls back to cloud if&amp;nbsp;Gemini Nano is not available on the device) or &lt;code&gt;PREFER_IN_CLOUD&lt;/code&gt; (falls back to on-device inference if offline):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        modelName = "gemini-3.1-flash-lite",
        onDeviceConfig = OnDeviceConfig(
           mode = InferenceMode.PREFER_ON_DEVICE
        )
    )

val response = model.generateContent(prompt)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The Firebase API for hybrid inference for Android is still experimental, and we encourage you to try it in your app, especially if you are already using Firebase AI Logic. Currently, on-device models are specialized for single-turn text generation based on text or single Bitmap image inputs. Review the &lt;a href="https://firebase.google.com/docs/ai-logic/hybrid/android/get-started?api=dev#features-not-yet-available"&gt;limitations&lt;/a&gt; for more details.&lt;/p&gt;

&lt;p&gt;We just published a &lt;a href="https://github.com/android/ai-samples/tree/main/samples/gemini-hybrid"&gt;new sample in the AI Sample Catalog leveraging the Firebase API for hybrid&lt;/a&gt;; it demonstrates how the Firebase API for hybrid inference can be used to generate a review based on a few selected topics and then translating it into various languages. Check out the code to see it in action!&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6VaPz5_ZUBQI0yLu4Pkr0FVCWhKv-6TfUr3wmN3SMoVGZJLolOEP8vS966Y42P0bvC-EdQQocotdvE232ho72Ld772uWp8PNi-OdFq_IMNgQVjPNSJGoo38cDZZNYKgDH1lVi9nimXoTaaVqFm4eJNsBulaGIHmQnEM-7L2H5GgkVSou6tDfxIhXGftE/s1440/Hybrid_Inference-Inline-imagery%20(1).gif" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1440" data-original-width="1440" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6VaPz5_ZUBQI0yLu4Pkr0FVCWhKv-6TfUr3wmN3SMoVGZJLolOEP8vS966Y42P0bvC-EdQQocotdvE232ho72Ld772uWp8PNi-OdFq_IMNgQVjPNSJGoo38cDZZNYKgDH1lVi9nimXoTaaVqFm4eJNsBulaGIHmQnEM-7L2H5GgkVSou6tDfxIhXGftE/w640-h640/Hybrid_Inference-Inline-imagery%20(1).gif" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;div style="text-align: center;"&gt;&lt;i style="font-weight: normal;"&gt;The new hybrid inference sample in action&lt;/i&gt;&lt;/div&gt;

&lt;h2&gt;Try our new models&lt;/h2&gt;

&lt;p&gt;As part of the new Gemini models, we've released two models particularly helpful to Android developers and easy to integrate in your application via the Firebase AI Logic SDK.&lt;/p&gt;

&lt;h3&gt;Nano Banana&lt;/h3&gt;
&lt;p&gt;Last year we released Nano Banana, a state-of-the-art image generation model. And a few weeks ago, we released a couple of new Nano Banana models.&lt;/p&gt;

&lt;a href="https://deepmind.google/models/gemini-image/pro/"&gt;Nano Banana Pro (Gemini 3 Pro Image)&lt;/a&gt; is designed for professional asset production and can render high-fidelity text, even in a specific font or simulating different types of handwriting.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="https://deepmind.google/models/gemini-image/flash/"&gt;Nano Banana 2 (Gemini 3.1 Flash Image)&lt;/a&gt; is the high-efficiency counterpart to Nano Banana Pro. It's optimized for speed and high-volume use cases. It can be used for a broad range of use cases (infographics, virtual stickers, contextual illustrations, etc.).&lt;br /&gt;&lt;ul&gt;
&lt;/ul&gt;

&lt;p&gt;The new Nano Banana models leverage real-world knowledge and deep reasoning capabilities to generate precise and detailed images.&lt;/p&gt;

&lt;p&gt;We updated our Magic Selfie sample (use image generation to change the background of your selfie!) to use Nano Banana 2. The background segmentation is now handled directly with the image generation model which makes the implementation easier and lets Nano Banana 2 improved image generation capabilities shine. See it in action &lt;a href="https://github.com/android/ai-samples/tree/main/samples/magic-selfie"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;div style="text-align: center;"&gt;&lt;img height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEgtCKSZ8de610IYRl704wX8u30O56GNCKj10heNFZohoC92VVRGOJcZtYRY36DvVnHxy46KVeuunNTd8FNWmlFavvfDXn7EwwDNnUXEBXnTzBYHxL2Td1jvL30QuL-FozQ5IiDVAFaj8fyBkjmz5VTOAsASSjlY_AYZnHy_kAAuNit_C51uJgL7EeXHz7Q=w304-h640" width="304" /&gt;&lt;/div&gt;&lt;i&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;The updated Magic Selfie sample uses Nano Banana 2 to update a selfie background&lt;/i&gt;&lt;/div&gt;&lt;/i&gt;&lt;p&gt;You can use it via Firebase AI Logic SDK. Read more about it in the &lt;a href="https://developer.android.com/ai/gemini/developer-api#generate-images"&gt;Android documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Gemini 3.1 Flash-Lite&lt;/h3&gt;
&lt;p&gt;We also released &lt;a href="https://deepmind.google/models/model-cards/gemini-3-1-flash-lite/"&gt;Gemini 3.1 Flash-Lite&lt;/a&gt;, a new version of the Gemini Flash-Lite family. The Gemini Flash-Lite models have been particularly favored by Android developers for its good quality/latency ratio and low inference cost. It’s been used by Android developers for various use-cases such as in-app messaging translation or generating a recipe from a picture of a dish.&lt;/p&gt;

&lt;p&gt;Gemini 3.1 Flash-Lite, currently in preview, will enable more advanced use cases with latency comparable to Gemini 2.5 Flash-Lite. To learn more about this model, review the &lt;a href="https://firebase.google.com/docs/ai-logic/models"&gt;Firebase documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;It’s a great time to explore the new Hybrid sample in our catalog to see these capabilities in action and understand the benefits of routing between on-device and cloud inference. We also encourage you to check out our documentation to test the new Gemini models.&lt;/p&gt;&lt;/div&gt;</content><link href="http://android-developers.googleblog.com/feeds/4806905801068539873/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/04/Hybrid-inference-and-new-AI-models-are-coming-to-Android.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/4806905801068539873" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/4806905801068539873" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/04/Hybrid-inference-and-new-AI-models-are-coming-to-Android.html" rel="alternate" title="Experimental hybrid inference and new Gemini models for Android" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoPylOD-Ekyhe8AVg3iMvz6S1rsvUT_2Eb4m-77FRH4eebi5psKE8VJwu6xVxCzKXyTXpoxb3-k04e21C6-8KX0BQw0qiCBGToSHJzVYQRckBYqby9csdOCHWp_23DTfPOpWqfjFTL-vJh86Q-DhGLZnbs1L62q4iUsaHHWlpQ2oyLXo3OO0rGsH9ngxw/s72-c/Hybrid%20inference%20solution%20for%20Android%20%20-%20Meta.png" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-6716496097147764449</id><published>2026-04-16T13:00:00.000-07:00</published><updated>2026-04-21T03:49:37.579-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android17"/><category scheme="http://www.blogger.com/atom/ns#" term="Beta"/><title type="text">The Fourth Beta of Android 17</title><content type="html">&lt;meta content="https://blogger.googleusercontent.com/img/a/AVvXsEjRi_pfW7jI2yTebiDh4niQsTN1UL9MmUbO1DUy_ensXVVhStxJt5PUfBSQVOkpOC4ReJ1G2OMtpOZj0fq_3XiUY3fVq91hldHzZU-FPcHkLnG33NAEAV9Wxl4PVZWJHUwbbi1mZxUzQA5YIOGMhDC6mL00CYZei7fNAGDpMhK1JqtlwIOtoIVmIZn2XTE" property="og:image"&gt;&lt;/meta&gt;

&lt;meta content="summary_large_image" name="twitter:card"&gt;&lt;/meta&gt;
&lt;meta content="https://blogger.googleusercontent.com/img/a/AVvXsEjRi_pfW7jI2yTebiDh4niQsTN1UL9MmUbO1DUy_ensXVVhStxJt5PUfBSQVOkpOC4ReJ1G2OMtpOZj0fq_3XiUY3fVq91hldHzZU-FPcHkLnG33NAEAV9Wxl4PVZWJHUwbbi1mZxUzQA5YIOGMhDC6mL00CYZei7fNAGDpMhK1JqtlwIOtoIVmIZn2XTE" name="twitter:image"&gt;&lt;/meta&gt;

&lt;img alt="Featured Metadata Image" src="https://blogger.googleusercontent.com/img/a/AVvXsEjRi_pfW7jI2yTebiDh4niQsTN1UL9MmUbO1DUy_ensXVVhStxJt5PUfBSQVOkpOC4ReJ1G2OMtpOZj0fq_3XiUY3fVq91hldHzZU-FPcHkLnG33NAEAV9Wxl4PVZWJHUwbbi1mZxUzQA5YIOGMhDC6mL00CYZei7fNAGDpMhK1JqtlwIOtoIVmIZn2XTE" style="height: 1px; left: -9999px; opacity: 0.01; position: absolute; width: 1px;" /&gt;
&lt;div&gt;&lt;i&gt;Posted by Dan Galpin, Developer Relations Engineer&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEq1ZzmrzFT6TQrAQEnFFtGjEewn6KV8agh0vWMj1DDmokXVbYQns14dj-zgya-ALvJoS-CQd118t-RgMncsR6zfOPqNvvYOm_ETomGHIExmUwC2sJ3QqLJvS5wjRNhn2qESbefeVRJzcL_rQ5-LCgwgkFMMbdFikuEJUUgVdgKTFztSwaATcS9GYfHiw/s6314/Android%2017%20Beta-3%20Banner%20(1).png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1880" data-original-width="6314" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEq1ZzmrzFT6TQrAQEnFFtGjEewn6KV8agh0vWMj1DDmokXVbYQns14dj-zgya-ALvJoS-CQd118t-RgMncsR6zfOPqNvvYOm_ETomGHIExmUwC2sJ3QqLJvS5wjRNhn2qESbefeVRJzcL_rQ5-LCgwgkFMMbdFikuEJUUgVdgKTFztSwaATcS9GYfHiw/s16000/Android%2017%20Beta-3%20Banner%20(1).png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;p&gt;Android 17 has reached beta 4, the last scheduled beta of this release cycle, a critical milestone for app compatibility and platform stability. Whether you're fine-tuning your app's user experience, ensuring smooth edge-to-edge rendering, or leveraging the newest APIs, Beta 4 provides the near-final environment you need to be testing with.&lt;/p&gt;

&lt;h3&gt;Get your apps, libraries, tools, and game engines ready!&lt;/h3&gt;
&lt;p&gt;If you develop an Android SDK, library, tool, or game engine, it's critical to prepare any necessary updates now 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 downstream developers know if updates are needed to fully support Android 17.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_sAqwsBgETGFvPCfaavnq5fNx4S-ey-UzxhfTp6A1Sji7v1ZrbVRF9gAkq_5VMcmV_R4PdWIE5HphsWTqujq6Q9FlRiUoBak1Gjt5VOl9f-__nzxX4JRm4rnVIyhRYiFqriSoliTmSGqRRN6iq8uDsWS1rI8ivYEAOBDdk8ARCUmR9_McCvuuU4ahGQ8/s3840/Android%2017%20Timeline%2001%20V02%20(2)%20(1).png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2161" data-original-width="3840" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_sAqwsBgETGFvPCfaavnq5fNx4S-ey-UzxhfTp6A1Sji7v1ZrbVRF9gAkq_5VMcmV_R4PdWIE5HphsWTqujq6Q9FlRiUoBak1Gjt5VOl9f-__nzxX4JRm4rnVIyhRYiFqriSoliTmSGqRRN6iq8uDsWS1rI8ivYEAOBDdk8ARCUmR9_McCvuuU4ahGQ8/s16000/Android%2017%20Timeline%2001%20V02%20(2)%20(1).png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p style="text-align: center;"&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Testing involves installing your production app or a test app making use of your library or engine using Google Play or other means onto a device or emulator running Android 17 Beta 4. Work through all your app's flows and look for functional or UI issues. Each release of Android contains platform changes that improve privacy, security, and overall user experience; review the app impacting behavior changes for apps &lt;a href="https://developer.android.com/about/versions/17/behavior-changes-all"&gt;running on&lt;/a&gt; and &lt;a href="https://developer.android.com/about/versions/17/behavior-changes-17"&gt;targeting&lt;/a&gt; Android 17 to focus your testing, including the following:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Resizability on large screens:&lt;/strong&gt; Once you target Android 17, you can no longer opt out of maintaining orientation, resizability and aspect ratio constraints &lt;a href="https://developer.android.com/about/versions/17/changes/ff-restrictions-ignored"&gt;on large screens&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Dynamic code loading:&lt;/strong&gt; If your app targets Android 17 or higher, the Safer Dynamic Code Loading (DCL) protection &lt;a href="https://developer.android.com/about/versions/14/behavior-changes-14#safer-dynamic-code-loading"&gt;introduced in Android 14&lt;/a&gt; for DEX and JAR files now extends to native libraries. All native files loaded using System.load() must be marked as read-only. Otherwise, the system throws UnsatisfiedLinkError.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Enable CT by default:&lt;/strong&gt; &lt;a href="https://developer.android.com/privacy-and-security/security-config#CertificateTransparencySummary"&gt;Certificate transparency (CT)&lt;/a&gt; is enabled by default. (On Android 16, CT is available but apps had to &lt;a href="https://developer.android.com/privacy-and-security/security-config#certificateTransparency"&gt;opt in&lt;/a&gt;.)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Local network protections:&lt;/strong&gt; Apps targeting Android 17 or higher have &lt;a href="https://developer.android.com/privacy-and-security/local-network-permission#android-17-enforcement"&gt;local network access blocked by default&lt;/a&gt;. Switch to using privacy preserving pickers if possible, and use the new &lt;a href="https://developer.android.com/reference/kotlin/android/Manifest.permission#access_local_network"&gt;ACCESS_LOCAL_NETWORK&lt;/a&gt; permission for broad, persistent access.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Background audio hardening:&lt;/strong&gt; Starting in Android 17, the audio framework enforces &lt;a href="https://developer.android.com/about/versions/17/changes/bg-audio"&gt;restrictions on background audio interactions&lt;/a&gt; including audio playback, &lt;a href="https://developer.android.com/media/optimize/audio-focus"&gt;audio focus&lt;/a&gt; requests, and &lt;a href="https://developer.android.com/reference/android/media/AudioManager#adjustStreamVolume(int,%20int,%20int)"&gt;volume change&lt;/a&gt; APIs. Based on your feedback, we’ve made some changes since beta 2, including targetSDK gating while-in-use FGS enforcement and exempting alarm audio. Full details available in &lt;a href="https://developer.android.com/about/versions/17/changes/bg-audio"&gt;updated guidance&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;App memory limits&lt;/h3&gt;
&lt;p&gt;Android is introducing app memory limits based on the device's total RAM to create a more stable and deterministic environment for your applications and Android users. In Android 17, limits are set conservatively to establish system baselines, targeting extreme memory leaks and other outliers before they trigger system-wide instability resulting in UI stuttering, higher battery drain, and apps being killed. While we anticipate minimal impact on the vast majority of app sessions, we recommend the &lt;a href="https://developer.android.com/topic/performance/memory"&gt;following memory best practices&lt;/a&gt;, including establishing a baseline for memory.&lt;/p&gt;

&lt;p&gt;In the current implementation, &lt;a href="https://developer.android.com/reference/android/app/ApplicationExitInfo#getDescription()"&gt;getDescription&lt;/a&gt; in &lt;a href="https://developer.android.com/reference/kotlin/android/app/ApplicationExitInfo"&gt;ApplicationExitInfo&lt;/a&gt;&amp;nbsp;will contain the string "MemoryLimiter" if your app was impacted. You can also use &lt;a href="https://developer.android.com/topic/performance/tracing/profiling-manager/trigger-based-capture"&gt;trigger-based profiling&lt;/a&gt; with &lt;a href="https://developer.android.com/reference/android/os/ProfilingTrigger#TRIGGER_TYPE_ANOMALY"&gt;TRIGGER_TYPE_ANOMALY&lt;/a&gt; to get heap dumps that are collected when the memory limit is hit.&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;span id="docs-internal-guid-d4861f27-7fff-b96d-4122-2c1bbd6bff29"&gt;&lt;span face="&amp;quot;Google Sans&amp;quot;, sans-serif" style="font-size: 11pt; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-emoji: normal; font-variant-numeric: normal; font-variant-position: normal; vertical-align: baseline; white-space-collapse: preserve;"&gt;&lt;span style="border: none; display: inline-block; height: 295px; overflow: hidden; width: 624px;"&gt;&lt;img height="295" src="https://blogger.googleusercontent.com/img/a/AVvXsEg-8qL-AbPrbUrvk9Othuvb2JjbGvZwc--3CFZ3UrBMMEo4PMkcLGkEXioFkeNmGZX3TBmIYZ0iCeZ5hVKxnW2IvE4Q3SFsSNUXrx2bRRsbOdnvkjbtpr_SsNXMQvNIQGFaWI-yHM5wZlp8zby27MQW-JRL4YkKwEfUupEuOtt72ePjRSac518BqsHuTgg" style="margin-left: 0px; margin-top: 0px;" width="624" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;i&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;The LeakCanary task in the Android Studio Profiler&lt;/i&gt;&lt;/div&gt;&lt;/i&gt;&lt;p&gt;To help you find memory leaks, Android Studio Panda adds LeakCanary integration directly in the Android Studio Profiler as a dedicated task, contextualized within the IDE and fully integrated with your source code.&lt;/p&gt;

&lt;p&gt;A lighter memory footprint translates directly to smoother performance, longer battery life, and a premium experience across all form factors. Let’s build a faster, more reliable future for the Android ecosystem together!&lt;/p&gt;

&lt;h3&gt;Profiling triggers for app anomalies&lt;/h3&gt;
&lt;p&gt;Android introduces an on-device anomaly detection service that monitors for resource-intensive behaviors and potential compatibility regressions. Integrated with &lt;a href="https://developer.android.com/topic/performance/tracing/profiling-manager/overview"&gt;ProfilingManager&lt;/a&gt;, this service allows your app to receive profiling artifacts triggered by specific system-detected events.&lt;/p&gt;

&lt;p&gt;Use the &lt;a href="https://developer.android.com/reference/kotlin/android/os/ProfilingTrigger#trigger_type_anomaly"&gt;TRIGGER_TYPE_ANOMALY&lt;/a&gt; trigger to detect system performance issues such as excessive binder calls and excessive memory usage. When an app breaches OS-defined memory limits, the anomaly trigger allows developers to receive app-specific heap dumps to help identify and fix memory issues. Additionally, for excessive binder spam, the anomaly trigger provides a stack sampling profile on binder transactions.&lt;/p&gt;

&lt;p&gt;This API callback occurs prior to any system imposed enforcements. For example, it can help developers collect debug data before the app is terminated by the system due exceeding memory limits. To understand how to use the trigger check out our documentation on &lt;a href="https://developer.android.com/topic/performance/tracing/profiling-manager/trigger-based-capture"&gt;trigger based profiling&lt;/a&gt;.&lt;/p&gt;

&lt;pre class="prettyprint"&gt;val profilingManager = applicationContext.getSystemService(ProfilingManager::class.java)
val triggers = ArrayList&amp;lt;ProfilingTrigger&amp;gt;()  
triggers.add(ProfilingTrigger.Builder(
             ProfilingTrigger.TRIGGER_TYPE_ANOMALY))
val mainExecutor: Executor = Executors.newSingleThreadExecutor()
val resultCallback = Consumer&amp;lt;ProfilingResult&amp;gt; { profilingResult -&amp;gt;
    if (profilingResult.errorCode != ProfilingResult.ERROR_NONE) {
        // upload profile result to server for further analysis          
        setupProfileUploadWorker(profilingResult.resultFilePath)
    } 
}
profilingManager.registerForAllProfilingResults(mainExecutor, resultCallback)
profilingManager.addProfilingTriggers(triggers)
&lt;/pre&gt;

&lt;h3&gt;Post-Quantum Cryptography (PQC) in Android Keystore&lt;/h3&gt;
&lt;p&gt;Android Keystore &lt;a href="https://security.googleblog.com/2026/03/post-quantum-cryptography-in-android.html"&gt;added support&lt;/a&gt; for the &lt;a href="https://csrc.nist.gov/pubs/fips/204/final"&gt;NIST-standardized&lt;/a&gt; ML-DSA (Module-Lattice-Based Digital Signature Algorithm). On supported devices, you can generate ML-DSA keys and use them to produce quantum-safe signatures, entirely in the device’s secure hardware. Android Keystore exposes the ML-DSA-65 and ML-DSA-87 algorithm variants through the standard Java Cryptographic Architecture APIs: &lt;a href="https://developer.android.com/reference/java/security/KeyPairGenerator"&gt;KeyPairGenerator,&lt;/a&gt; &lt;a href="https://developer.android.com/reference/java/security/KeyFactory"&gt;KeyFactory&lt;/a&gt;, and &lt;a href="https://developer.android.com/reference/java/security/Signature"&gt;Signature&lt;/a&gt;. For further details, see our &lt;a href="https://developer.android.com/reference/android/security/keystore/KeyGenParameterSpec#example:-ml-dsa-key-pair-for-signing"&gt;developer documentation.&lt;/a&gt;&lt;/p&gt;

&lt;pre class="prettyprint"&gt;KeyPairGenerator generator = KeyPairGenerator.getInstance(
        “ML-DSA-65”, "AndroidKeyStore");
generator.initialize(
        new KeyGenParameterSpec.Builder(
                “my-key-alias”,
                KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
        .build());
KeyPair keyPair = generator.generateKeyPair();
&lt;/pre&gt;

&lt;h3&gt;Get started with Android 17&lt;/h3&gt;
&lt;p&gt;You can &lt;a href="https://www.google.com/android/beta"&gt;enroll any supported Pixel device&lt;/a&gt; to get this and future Android Beta updates over-the-air. If you don’t have a Pixel device, you can &lt;a href="https://developer.android.com/about/versions/17/get#on_emulator"&gt;use the 64-bit system images with the Android Emulator&lt;/a&gt; in Android Studio.&lt;/p&gt;

&lt;p&gt;If you are currently in the Android Beta program, you will be offered an over-the-air update to Beta 4. Continue to &lt;a href="https://developer.android.com/about/versions/17/feedback"&gt;report issues and submit feature requests&lt;/a&gt; on the &lt;a href="https://developer.android.com/about/versions/16/feedback"&gt;feedback page&lt;/a&gt;. The earlier we get your feedback, the more we can include in our work on the final release.&lt;/p&gt;

&lt;p&gt;For the best development experience with Android 17, we recommend that you use the latest preview of &lt;a href="https://developer.android.com/studio/preview"&gt;Android Studio (Panda)&lt;/a&gt;. Once you’re set up, here are some of the things you should do:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Compile against the new SDK, test in CI environments, and report any issues in our tracker on the &lt;a href="https://developer.android.com/about/versions/17/feedback"&gt;feedback page&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Test your current app for compatibility, learn whether your app is affected by changes in Android 17, and install your app onto a device or emulator running Android 17 and extensively test it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’ll update the &lt;a href="https://developer.android.com/about/versions/17/download"&gt;preview/beta system images&lt;/a&gt; and SDK regularly throughout the Android 17 release cycle. Once you’ve installed a beta build, you’ll automatically get future updates over-the-air for all later previews and Betas. For complete information, visit the &lt;a href="https://developer.android.com/about/versions/17"&gt;Android 17 developer site&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Join the conversation&lt;/h3&gt;
&lt;p&gt;Your feedback remains our most valuable asset. Whether you’re an &lt;a href="https://www.reddit.com/r/android_canary/"&gt;early adopter on the Canary channel&lt;/a&gt; or an &lt;a href="https://www.reddit.com/r/android_beta/"&gt;app developer testing on Beta 4&lt;/a&gt;, consider joining our communities and filing feedback. We’re listening.&lt;/p&gt;&lt;/div&gt;</content><link href="http://android-developers.googleblog.com/feeds/6716496097147764449/comments/default" rel="replies" title="Post Comments" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/04/the-fourth-beta-of-android-17.html#comment-form" rel="replies" title="0 Comments" type="text/html"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/6716496097147764449" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/6755709643044947179/posts/default/6716496097147764449" rel="self" type="application/atom+xml"/><link href="http://android-developers.googleblog.com/2026/04/the-fourth-beta-of-android-17.html" rel="alternate" title="The Fourth Beta of Android 17" type="text/html"/><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/a/AVvXsEjRi_pfW7jI2yTebiDh4niQsTN1UL9MmUbO1DUy_ensXVVhStxJt5PUfBSQVOkpOC4ReJ1G2OMtpOZj0fq_3XiUY3fVq91hldHzZU-FPcHkLnG33NAEAV9Wxl4PVZWJHUwbbi1mZxUzQA5YIOGMhDC6mL00CYZei7fNAGDpMhK1JqtlwIOtoIVmIZn2XTE=s72-c" width="72"/><thr:total>0</thr:total></entry></feed>