CINXE.COM
Large screen app quality | App quality | Android Developers
<!doctype html> <html lang="en" dir="ltr"> <head> <meta name="google-signin-client-id" content="721724668570-nbkv1cfusk7kk4eni4pjvepaus73b13t.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="Android Developers"> <meta property="og:type" content="website"><meta name="theme-color" content="#34a853"><meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/_pwa/android/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.googleapis.com" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Google+Sans:400,500,600,700|Google+Sans+Text:400,400italic,500,500italic,600,600italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/android/css/app.css"> <link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/android/css/dark-theme.css" disabled> <link rel="shortcut icon" href="https://www.gstatic.com/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/android/images/favicon.svg"> <link rel="apple-touch-icon" href="https://www.gstatic.com/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/android/images/touchicon-180.png"><link rel="canonical" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality"><link rel="search" type="application/opensearchdescription+xml" title="Android Developers" href="https://developer.android.com/s/opensearch.xml"> <link rel="alternate" hreflang="en" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality" /><link rel="alternate" hreflang="x-default" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality" /><link rel="alternate" hreflang="ar" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=ar" /><link rel="alternate" hreflang="bn" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=bn" /><link rel="alternate" hreflang="zh-Hans" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=zh-tw" /><link rel="alternate" hreflang="fa" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=fa" /><link rel="alternate" hreflang="fr" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=fr" /><link rel="alternate" hreflang="de" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=de" /><link rel="alternate" hreflang="he" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=he" /><link rel="alternate" hreflang="hi" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=hi" /><link rel="alternate" hreflang="id" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=id" /><link rel="alternate" hreflang="it" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=it" /><link rel="alternate" hreflang="ja" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=ja" /><link rel="alternate" hreflang="ko" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=ko" /><link rel="alternate" hreflang="pl" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=pl" /><link rel="alternate" hreflang="pt-BR" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=pt-br" /><link rel="alternate" hreflang="ru" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=ru" /><link rel="alternate" hreflang="es-419" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=es-419" /><link rel="alternate" hreflang="th" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=th" /><link rel="alternate" hreflang="tr" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=tr" /><link rel="alternate" hreflang="vi" href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality?hl=vi" /><title>Large screen app quality | App quality | Android Developers</title> <meta property="og:title" content="Large screen app quality | App quality | Android Developers"><meta property="og:url" content="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality"><meta property="og:image" content="https://developer.android.com/static/images/social/android-developers.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="675"><meta property="og:locale" content="en"><meta name="twitter:card" content="summary_large_image"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "Large screen app quality" } </script><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "App quality", "item": "https://developer.android.com/quality" },{ "@type": "ListItem", "position": 2, "name": "Large screen app quality", "item": "https://developer.android.com/docs/quality-guidelines/large-screen-app-quality" }] } </script> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="page" theme="android-theme" type="article" appearance layout="docs" display-toc pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <a href="#main-content" class="skip-link button"> Skip to main content </a> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner"> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="androidDevelopers" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <source srcset="https://www.gstatic.com/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/android/images/lockup-dark-theme.svg" media="(prefers-color-scheme: dark)" class="devsite-dark-theme" alt="Android Developers"> <img src="https://www.gstatic.com/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/android/images/lockup.svg" class="devsite-site-logo" alt="Android Developers"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> <devsite-tabs class="upper-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Upper tabs"> <tab class="devsite-dropdown devsite-dropdown-full "> <a href="https://developer.android.com/get-started" class="devsite-tabs-content gc-analytics-event android-dropdown-tab" track-metadata-eventdetail="https://developer.android.com/get-started" track-type="nav" track-metadata-position="nav - essentials" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Essentials" track-name="essentials" > Essentials </a> <button aria-haspopup="menu" aria-expanded="false" aria-label="Dropdown menu for Essentials" track-type="nav" track-metadata-eventdetail="https://developer.android.com/get-started" track-metadata-position="nav - essentials" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Essentials" track-name="essentials" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></button> <div class="devsite-tabs-dropdown" role="menu" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column android-dropdown android-dropdown-primary android-dropdown-studio"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Gemini in Android Studio</li> <li class="devsite-nav-description">Your AI development companion for Android development. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/gemini-in-android" track-type="nav" track-metadata-eventdetail="https://developer.android.com/gemini-in-android" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="gemini in android studio" tooltip class="button button-primary" > <div class="devsite-nav-item-title"> Learn more </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/studio" track-type="nav" track-metadata-eventdetail="https://developer.android.com/studio" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="gemini in android studio" tooltip class="button button-white" > <div class="devsite-nav-item-title"> Get Android Studio </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-launch"> <li class="devsite-nav-title" role="heading" tooltip>Get started</li> <li class="devsite-nav-description">Start by creating your first app. Go deeper with our training courses or explore app development on your own. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/get-started/overview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/get-started/overview" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Hello world </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/courses" track-type="nav" track-metadata-eventdetail="https://developer.android.com/courses" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Training courses </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/get-started/codelabs" track-type="nav" track-metadata-eventdetail="https://developer.android.com/get-started/codelabs" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Tutorials </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/develop/ui/compose/adopt" track-type="nav" track-metadata-eventdetail="https://developer.android.com/develop/ui/compose/adopt" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Compose for teams </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/kotlin" track-type="nav" track-metadata-eventdetail="https://developer.android.com/kotlin" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Kotlin for Android </div> </a> </li> <li class="devsite-nav-item"> <a href="https://play.google.com/console/about/guides/monetize/" track-type="nav" track-metadata-eventdetail="https://play.google.com/console/about/guides/monetize/" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Monetization with Play ↗️ </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-multiple-screens"> <li class="devsite-nav-title" role="heading" tooltip>Extend by device</li> <li class="devsite-nav-description">Build apps that give your users seamless experiences from phones to tablets, watches, headsets, and more. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/adaptive-apps" track-type="nav" track-metadata-eventdetail="https://developer.android.com/adaptive-apps" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> Adaptive apps </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/xr" track-type="nav" track-metadata-eventdetail="https://developer.android.com/xr" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> Android XR </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/wear" track-type="nav" track-metadata-eventdetail="https://developer.android.com/wear" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> Wear OS </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/cars" track-type="nav" track-metadata-eventdetail="https://developer.android.com/cars" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> Android for Cars </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/tv" track-type="nav" track-metadata-eventdetail="https://developer.android.com/tv" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> Android TV </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/chrome-os" track-type="nav" track-metadata-eventdetail="https://developer.android.com/chrome-os" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> ChromeOS </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-platform"> <li class="devsite-nav-title" role="heading" tooltip>Build by category</li> <li class="devsite-nav-description">Learn to build for your use case by following Google's prescriptive and opinionated guidance. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/games" track-type="nav" track-metadata-eventdetail="https://developer.android.com/games" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Games </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/media" track-type="nav" track-metadata-eventdetail="https://developer.android.com/media" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Camera & media </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/social-and-messaging" track-type="nav" track-metadata-eventdetail="https://developer.android.com/social-and-messaging" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Social & messaging </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/health-and-fitness" track-type="nav" track-metadata-eventdetail="https://developer.android.com/health-and-fitness" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Health & fitness </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/productivity" track-type="nav" track-metadata-eventdetail="https://developer.android.com/productivity" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Productivity </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/work/overview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/work/overview" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Enterprise apps </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-stars"> <li class="devsite-nav-title" role="heading" tooltip>Get the latest</li> <li class="devsite-nav-description">Stay in touch with the latest releases throughout the year, join our preview programs, and give us your feedback. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/latest-updates" track-type="nav" track-metadata-eventdetail="https://developer.android.com/latest-updates" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Latest updates </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/latest-updates/experimental" track-type="nav" track-metadata-eventdetail="https://developer.android.com/latest-updates/experimental" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Experimental updates </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/studio/preview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/studio/preview" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Android Studio preview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/jetpack/androidx/versions" track-type="nav" track-metadata-eventdetail="https://developer.android.com/jetpack/androidx/versions" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Jetpack & Compose libraries </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/wearables/versions/4" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/wearables/versions/4" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Wear OS preview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design-for-safety/privacy-sandbox" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design-for-safety/privacy-sandbox" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Privacy Sandbox </div> </a> </li> </ul> </div> </div> </div> </tab> <tab class="devsite-dropdown devsite-dropdown-full devsite-active "> <a href="https://developer.android.com/design" class="devsite-tabs-content gc-analytics-event android-dropdown-tab" track-metadata-eventdetail="https://developer.android.com/design" track-type="nav" track-metadata-position="nav - design & plan" track-metadata-module="primary nav" aria-label="Design & Plan, selected" data-category="Site-Wide Custom Events" data-label="Tab: Design & Plan" track-name="design & plan" > Design & Plan </a> <button aria-haspopup="menu" aria-expanded="false" aria-label="Dropdown menu for Design & Plan" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design" track-metadata-position="nav - design & plan" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Design & Plan" track-name="design & plan" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></button> <div class="devsite-tabs-dropdown" role="menu" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-layout"> <li class="devsite-nav-title" role="heading" tooltip>UI Design</li> <li class="devsite-nav-description">Design a beautiful user interface using Android best practices.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Design for Android </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui/mobile" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui/mobile" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Mobile </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui/large-screens" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui/large-screens" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Adaptive UI </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui/xr" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui/xr" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Android XR </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui/widget" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui/widget" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Widgets </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui/wear" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui/wear" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Wear OS </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui/tv" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui/tv" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Android TV </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-design"> <li class="devsite-nav-title" role="heading" tooltip>Architecture</li> <li class="devsite-nav-description">Design robust, testable, and maintainable app logic and services.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/topic/architecture/intro" track-type="nav" track-metadata-eventdetail="https://developer.android.com/topic/architecture/intro" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="architecture" tooltip > <div class="devsite-nav-item-title"> Introduction </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/topic/libraries/view-binding" track-type="nav" track-metadata-eventdetail="https://developer.android.com/topic/libraries/view-binding" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="architecture" tooltip > <div class="devsite-nav-item-title"> Libraries </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/navigation/navigation-principles" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/navigation/navigation-principles" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="architecture" tooltip > <div class="devsite-nav-item-title"> Navigation </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/topic/modularization" track-type="nav" track-metadata-eventdetail="https://developer.android.com/topic/modularization" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="architecture" tooltip > <div class="devsite-nav-item-title"> Modularization </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/testing/fundamentals" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/testing/fundamentals" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="architecture" tooltip > <div class="devsite-nav-item-title"> Testing </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-vitals"> <li class="devsite-nav-title" role="heading" tooltip>Quality</li> <li class="devsite-nav-description">Plan for app quality and align with Play store guidelines.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/quality" track-type="nav" track-metadata-eventdetail="https://developer.android.com/quality" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="quality" tooltip > <div class="devsite-nav-item-title"> Overview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/quality/core-value" track-type="nav" track-metadata-eventdetail="https://developer.android.com/quality/core-value" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="quality" tooltip > <div class="devsite-nav-item-title"> Core value </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/quality/user-experience" track-type="nav" track-metadata-eventdetail="https://developer.android.com/quality/user-experience" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="quality" tooltip > <div class="devsite-nav-item-title"> User experience </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/topics/ui/accessibility" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/topics/ui/accessibility" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="quality" tooltip > <div class="devsite-nav-item-title"> Accessibility </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/quality/technical" track-type="nav" track-metadata-eventdetail="https://developer.android.com/quality/technical" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="quality" tooltip > <div class="devsite-nav-item-title"> Technical quality </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/quality/privacy-and-security" track-type="nav" track-metadata-eventdetail="https://developer.android.com/quality/privacy-and-security" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="quality" tooltip > <div class="devsite-nav-item-title"> Security </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-security-2"> <li class="devsite-nav-title" role="heading" tooltip>Security</li> <li class="devsite-nav-description">Safeguard users against threats and ensure a secure Android experience.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/security" track-type="nav" track-metadata-eventdetail="https://developer.android.com/security" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="security" tooltip > <div class="devsite-nav-item-title"> Overview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/privacy-and-security/about" track-type="nav" track-metadata-eventdetail="https://developer.android.com/privacy-and-security/about" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="security" tooltip > <div class="devsite-nav-item-title"> Privacy </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/topics/permissions/overview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/topics/permissions/overview" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="security" tooltip > <div class="devsite-nav-item-title"> Permissions </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/identity" track-type="nav" track-metadata-eventdetail="https://developer.android.com/identity" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="security" tooltip > <div class="devsite-nav-item-title"> Identity </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/security/fraud-prevention" track-type="nav" track-metadata-eventdetail="https://developer.android.com/security/fraud-prevention" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="security" tooltip > <div class="devsite-nav-item-title"> Fraud prevention </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-earth"> <li class="devsite-nav-title" role="heading" tooltip>Build for Billions</li> <li class="devsite-nav-description">Create the best experience for entry-level devices</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/build-for-billions" track-type="nav" track-metadata-eventdetail="https://developer.android.com/build-for-billions" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="build for billions" tooltip > <div class="devsite-nav-item-title"> Overview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/docs/quality-guidelines/build-for-billions" track-type="nav" track-metadata-eventdetail="https://developer.android.com/docs/quality-guidelines/build-for-billions" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="build for billions" tooltip > <div class="devsite-nav-item-title"> About new markets </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/topics/androidgo" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/topics/androidgo" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="build for billions" tooltip > <div class="devsite-nav-item-title"> Android (Go edition) </div> </a> </li> </ul> </div> </div> </div> </tab> <tab class="devsite-dropdown devsite-dropdown-full "> <a href="https://developer.android.com/develop" class="devsite-tabs-content gc-analytics-event android-dropdown-tab" track-metadata-eventdetail="https://developer.android.com/develop" track-type="nav" track-metadata-position="nav - develop" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Develop" track-name="develop" > Develop </a> <button aria-haspopup="menu" aria-expanded="false" aria-label="Dropdown menu for Develop" track-type="nav" track-metadata-eventdetail="https://developer.android.com/develop" track-metadata-position="nav - develop" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Develop" track-name="develop" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></button> <div class="devsite-tabs-dropdown" role="menu" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column android-dropdown android-dropdown-primary android-dropdown-ai"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Build AI experiences</li> <li class="devsite-nav-description">Build AI-powered Android apps with Gemini APIs and more. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/ai" track-type="nav" track-metadata-eventdetail="https://developer.android.com/ai" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="build ai experiences" tooltip class="button button-primary" > <div class="devsite-nav-item-title"> Get started </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-flag"> <li class="devsite-nav-title" role="heading" tooltip>Core areas</li> <li class="devsite-nav-description">Get the samples and docs for the features you need.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/samples" track-type="nav" track-metadata-eventdetail="https://developer.android.com/samples" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> Samples </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/develop/ui" track-type="nav" track-metadata-eventdetail="https://developer.android.com/develop/ui" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> User interfaces </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/develop/background-work" track-type="nav" track-metadata-eventdetail="https://developer.android.com/develop/background-work" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> Background work </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/topics/data" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/topics/data" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> Data and files </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/develop/connectivity" track-type="nav" track-metadata-eventdetail="https://developer.android.com/develop/connectivity" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> Connectivity </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/develop#core-areas" track-type="nav" track-metadata-eventdetail="https://developer.android.com/develop#core-areas" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> All core areas ⤵️ </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-tools-2"> <li class="devsite-nav-title" role="heading" tooltip>Tools and workflow</li> <li class="devsite-nav-description">Use the IDE to write and build your app, or create your own pipeline.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/studio/write" track-type="nav" track-metadata-eventdetail="https://developer.android.com/studio/write" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Write and debug code </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/build/gradle-build-overview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/build/gradle-build-overview" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Build projects </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/testing" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/testing" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Test your app </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/topic/performance/overview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/topic/performance/overview" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Performance </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/tools" track-type="nav" track-metadata-eventdetail="https://developer.android.com/tools" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Command-line tools </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/reference/tools/gradle-api" track-type="nav" track-metadata-eventdetail="https://developer.android.com/reference/tools/gradle-api" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Gradle plugin API </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-multiple-screens"> <li class="devsite-nav-title" role="heading" tooltip>Device tech</li> <li class="devsite-nav-description">Write code for form factors. Connect devices and share data.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/topics/large-screens/get-started-with-large-screens" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/topics/large-screens/get-started-with-large-screens" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Adaptive UI </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/wearables" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/wearables" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Wear OS </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/develop/xr" track-type="nav" track-metadata-eventdetail="https://developer.android.com/develop/xr" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Android XR </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/health-and-fitness/guides" track-type="nav" track-metadata-eventdetail="https://developer.android.com/health-and-fitness/guides" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Android Health </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/cars" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/cars" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Android for Cars </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/tv" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/tv" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Android TV </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/develop#devices" track-type="nav" track-metadata-eventdetail="https://developer.android.com/develop#devices" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> All devices ⤵️ </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-core-library"> <li class="devsite-nav-title" role="heading" tooltip>Libraries</li> <li class="devsite-nav-description">Browse API reference documentation with all the details.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/reference/packages" track-type="nav" track-metadata-eventdetail="https://developer.android.com/reference/packages" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> Android platform </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/jetpack/androidx/explorer" track-type="nav" track-metadata-eventdetail="https://developer.android.com/jetpack/androidx/explorer" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> Jetpack libraries </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/jetpack/androidx/releases/compose" track-type="nav" track-metadata-eventdetail="https://developer.android.com/jetpack/androidx/releases/compose" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> Compose libraries </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/android/reference/packages" track-type="nav" track-metadata-eventdetail="https://developers.google.com/android/reference/packages" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> Google Play services ↗️ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://play.google.com/sdks" track-type="nav" track-metadata-eventdetail="https://play.google.com/sdks" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> Google Play SDK index ↗️ </div> </a> </li> </ul> </div> </div> </div> </tab> <tab > <a href="https://developer.android.com/distribute" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://developer.android.com/distribute" track-type="nav" track-metadata-position="nav - google play" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Google Play" track-name="google play" > Google Play </a> </tab> <tab > <a href="https://developer.android.com/community" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://developer.android.com/community" track-type="nav" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" > Community </a> </tab> </nav> </devsite-tabs> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="App quality" tenant-name="Android Developers" > <form class="devsite-search-form" action="https://developer.android.com/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value="" > <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-appearance-selector></devsite-appearance-selector> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> <a class="devsite-header-link devsite-top-button button gc-analytics-event" href="https://developer.android.com/studio" data-category="Site-Wide Custom Events" data-label="Site header link" > Android Studio </a> <devsite-user enable-profiles id="devsite-user"> <span class="button devsite-top-button" aria-hidden="true" visually-hidden>Sign in</span> </devsite-user> </div> </div> </div> <div class="devsite-collapsible-section "> <div class="devsite-header-background"> <div class="devsite-product-id-row" > <div class="devsite-product-description-row"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> <a href="https://developer.android.com/quality" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Lower Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="App quality" > App quality </a> </li> </ul> </div> </div> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Lower tabs"> <tab > <a href="https://developer.android.com/quality" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://developer.android.com/quality" track-type="nav" track-metadata-position="nav - overview" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview" > Overview </a> </tab> <tab > <a href="https://developer.android.com/quality/core-value" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://developer.android.com/quality/core-value" track-type="nav" track-metadata-position="nav - core value" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Core value" track-name="core value" > Core value </a> </tab> <tab class="devsite-active"> <a href="https://developer.android.com/quality/user-experience" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://developer.android.com/quality/user-experience" track-type="nav" track-metadata-position="nav - user experience" track-metadata-module="primary nav" aria-label="User experience, selected" data-category="Site-Wide Custom Events" data-label="Tab: User experience" track-name="user experience" > User experience </a> </tab> <tab > <a href="https://developer.android.com/quality/technical" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://developer.android.com/quality/technical" track-type="nav" track-metadata-position="nav - technical quality" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Technical quality" track-name="technical quality" > Technical quality </a> </tab> <tab > <a href="https://developer.android.com/quality/privacy-and-security" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://developer.android.com/quality/privacy-and-security" track-type="nav" track-metadata-position="nav - privacy & security" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Privacy & Security" track-name="privacy & security" > Privacy & Security </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars > <div class="devsite-book-nav-filter" > <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="androidDevelopers" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <source srcset="https://www.gstatic.com/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/android/images/lockup-dark-theme.svg" media="(prefers-color-scheme: dark)" class="devsite-dark-theme" alt="Android Developers"> <img src="https://www.gstatic.com/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/android/images/lockup.svg" class="devsite-site-logo" alt="Android Developers"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/get-started" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Essentials" track-name="essentials" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Essentials" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Essentials </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Essentials" track-name="essentials" > <span class="devsite-nav-text" tooltip menu="Essentials"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Essentials"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/design" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Design & Plan" track-name="design & plan" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Design & Plan" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Design & Plan </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Design & Plan" track-name="design & plan" > <span class="devsite-nav-text" tooltip menu="Design & Plan"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Design & Plan"> </span> </span> </li> </ul> <ul class="devsite-nav-responsive-tabs"> <li class="devsite-nav-item"> <a href="/quality" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/core-value" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Core value" track-name="core value" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Core value" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Core value </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/user-experience" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: User experience" track-name="user experience" data-category="Site-Wide Custom Events" data-label="Responsive Tab: User experience" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip menu="_book"> User experience </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="_book"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/technical" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Technical quality" track-name="technical quality" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Technical quality" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Technical quality </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/privacy-and-security" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Privacy & Security" track-name="privacy & security" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Privacy & Security" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Privacy & Security </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/develop" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Develop" track-name="develop" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Develop" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Develop </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Develop" track-name="develop" > <span class="devsite-nav-text" tooltip menu="Develop"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Develop"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/distribute" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Google Play" track-name="google play" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Play" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Play </span> </a> </li> <li class="devsite-nav-item"> <a href="/community" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Community" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Community </span> </a> </li> <li class="devsite-nav-item"> <a href="/studio" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android Studio" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android Studio </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="_book"> <li class="devsite-nav-item"><a href="/quality/user-experience" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /quality/user-experience" track-type="bookNav" track-name="click" track-metadata-eventdetail="/quality/user-experience" ><span class="devsite-nav-text" tooltip>Overview</span></a></li> <li class="devsite-nav-item"><a href="/docs/quality-guidelines/core-app-quality" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/quality-guidelines/core-app-quality" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/quality-guidelines/core-app-quality" ><span class="devsite-nav-text" tooltip>Core app quality</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Form factors</span> </div></li> <li class="devsite-nav-item"><a href="/docs/quality-guidelines/large-screen-app-quality" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/quality-guidelines/large-screen-app-quality" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/quality-guidelines/large-screen-app-quality" ><span class="devsite-nav-text" tooltip>Large screen app quality</span></a></li> <li class="devsite-nav-item"><a href="/docs/quality-guidelines/wear-app-quality" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/quality-guidelines/wear-app-quality" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/quality-guidelines/wear-app-quality" ><span class="devsite-nav-text" tooltip>Wear OS app quality</span></a></li> <li class="devsite-nav-item devsite-nav-preview"><a href="/docs/quality-guidelines/android-xr" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/quality-guidelines/android-xr" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/quality-guidelines/android-xr" ><span class="devsite-nav-text" tooltip>Android XR app quality</span><span class="devsite-nav-icon material-icons" data-icon="preview" data-title="Preview" aria-hidden="true"></span></a></li> <li class="devsite-nav-item"><a href="/docs/quality-guidelines/tv-app-quality" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/quality-guidelines/tv-app-quality" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/quality-guidelines/tv-app-quality" ><span class="devsite-nav-text" tooltip>TV app quality</span></a></li> <li class="devsite-nav-item"><a href="/docs/quality-guidelines/car-app-quality" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/quality-guidelines/car-app-quality" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/quality-guidelines/car-app-quality" ><span class="devsite-nav-text" tooltip>Car app quality</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Accessibility</span> </div></li> <li class="devsite-nav-item"><a href="/guide/topics/ui/accessibility" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /guide/topics/ui/accessibility" track-type="bookNav" track-name="click" track-metadata-eventdetail="/guide/topics/ui/accessibility" ><span class="devsite-nav-text" tooltip>In this guide</span></a></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Build and test apps for accessibility</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/guide/topics/ui/accessibility/apps" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /guide/topics/ui/accessibility/apps" track-type="bookNav" track-name="click" track-metadata-eventdetail="/guide/topics/ui/accessibility/apps" ><span class="devsite-nav-text" tooltip>Make apps more accessible</span></a></li><li class="devsite-nav-item"><a href="/guide/topics/ui/accessibility/principles" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /guide/topics/ui/accessibility/principles" track-type="bookNav" track-name="click" track-metadata-eventdetail="/guide/topics/ui/accessibility/principles" ><span class="devsite-nav-text" tooltip>Principles for improving app accessibility</span></a></li><li class="devsite-nav-item"><a href="/guide/topics/ui/accessibility/testing" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /guide/topics/ui/accessibility/testing" track-type="bookNav" track-name="click" track-metadata-eventdetail="/guide/topics/ui/accessibility/testing" ><span class="devsite-nav-text" tooltip>Test your app's accessibility</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Advanced topics</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/guide/topics/ui/accessibility/custom-views" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /guide/topics/ui/accessibility/custom-views" track-type="bookNav" track-name="click" track-metadata-eventdetail="/guide/topics/ui/accessibility/custom-views" ><span class="devsite-nav-text" tooltip>Make custom views more accessible</span></a></li><li class="devsite-nav-item"><a href="/guide/topics/ui/accessibility/service" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /guide/topics/ui/accessibility/service" track-type="bookNav" track-name="click" track-metadata-eventdetail="/guide/topics/ui/accessibility/service" ><span class="devsite-nav-text" tooltip>Create your own accessibility service</span></a></li></ul></div></li> <li class="devsite-nav-item"><a href="/guide/topics/ui/accessibility/additional-resources" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /guide/topics/ui/accessibility/additional-resources" track-type="bookNav" track-name="click" track-metadata-eventdetail="/guide/topics/ui/accessibility/additional-resources" ><span class="devsite-nav-text" tooltip>Additional resources</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>On Google Play</span> </div></li> <li class="devsite-nav-item devsite-nav-external"><a href="https://developers.google.com/games/services/checklist" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: https://developers.google.com/games/services/checklist" track-type="bookNav" track-name="click" track-metadata-eventdetail="https://developers.google.com/games/services/checklist" ><span class="devsite-nav-text" tooltip>Play games quality</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li> </ul> <ul class="devsite-nav-list" menu="Essentials" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Gemini in Android Studio </span> </span> </li> <li class="devsite-nav-item"> <a href="/gemini-in-android" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Learn more" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Learn more </span> </a> </li> <li class="devsite-nav-item"> <a href="/studio" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Get Android Studio" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Get Android Studio </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Get started </span> </span> </li> <li class="devsite-nav-item"> <a href="/get-started/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Hello world" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Hello world </span> </a> </li> <li class="devsite-nav-item"> <a href="/courses" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Training courses" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Training courses </span> </a> </li> <li class="devsite-nav-item"> <a href="/get-started/codelabs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Tutorials" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Tutorials </span> </a> </li> <li class="devsite-nav-item"> <a href="/develop/ui/compose/adopt" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Compose for teams" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Compose for teams </span> </a> </li> <li class="devsite-nav-item"> <a href="/kotlin" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Kotlin for Android" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Kotlin for Android </span> </a> </li> <li class="devsite-nav-item"> <a href="https://play.google.com/console/about/guides/monetize/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Monetization with Play ↗️" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Monetization with Play ↗️ </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Extend by device </span> </span> </li> <li class="devsite-nav-item"> <a href="/adaptive-apps" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Adaptive apps" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Adaptive apps </span> </a> </li> <li class="devsite-nav-item"> <a href="/xr" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android XR" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android XR </span> </a> </li> <li class="devsite-nav-item"> <a href="/wear" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Wear OS" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Wear OS </span> </a> </li> <li class="devsite-nav-item"> <a href="/cars" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android for Cars" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android for Cars </span> </a> </li> <li class="devsite-nav-item"> <a href="/tv" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android TV" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android TV </span> </a> </li> <li class="devsite-nav-item"> <a href="/chrome-os" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ChromeOS" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ChromeOS </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Build by category </span> </span> </li> <li class="devsite-nav-item"> <a href="/games" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Games" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Games </span> </a> </li> <li class="devsite-nav-item"> <a href="/media" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Camera & media" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Camera & media </span> </a> </li> <li class="devsite-nav-item"> <a href="/social-and-messaging" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Social & messaging" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Social & messaging </span> </a> </li> <li class="devsite-nav-item"> <a href="/health-and-fitness" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Health & fitness" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Health & fitness </span> </a> </li> <li class="devsite-nav-item"> <a href="/productivity" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Productivity" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Productivity </span> </a> </li> <li class="devsite-nav-item"> <a href="/work/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Enterprise apps" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Enterprise apps </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Get the latest </span> </span> </li> <li class="devsite-nav-item"> <a href="/latest-updates" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Latest updates" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Latest updates </span> </a> </li> <li class="devsite-nav-item"> <a href="/latest-updates/experimental" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Experimental updates" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Experimental updates </span> </a> </li> <li class="devsite-nav-item"> <a href="/studio/preview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android Studio preview" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android Studio preview </span> </a> </li> <li class="devsite-nav-item"> <a href="/jetpack/androidx/versions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Jetpack & Compose libraries" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Jetpack & Compose libraries </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/wearables/versions/4" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Wear OS preview" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Wear OS preview </span> </a> </li> <li class="devsite-nav-item"> <a href="/design-for-safety/privacy-sandbox" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Privacy Sandbox" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Privacy Sandbox </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Design & Plan" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > UI Design </span> </span> </li> <li class="devsite-nav-item"> <a href="/design/ui" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Design for Android" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Design for Android </span> </a> </li> <li class="devsite-nav-item"> <a href="/design/ui/mobile" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Mobile" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Mobile </span> </a> </li> <li class="devsite-nav-item"> <a href="/design/ui/large-screens" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Adaptive UI" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Adaptive UI </span> </a> </li> <li class="devsite-nav-item"> <a href="/design/ui/xr" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android XR" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android XR </span> </a> </li> <li class="devsite-nav-item"> <a href="/design/ui/widget" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Widgets" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Widgets </span> </a> </li> <li class="devsite-nav-item"> <a href="/design/ui/wear" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Wear OS" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Wear OS </span> </a> </li> <li class="devsite-nav-item"> <a href="/design/ui/tv" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android TV" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android TV </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Architecture </span> </span> </li> <li class="devsite-nav-item"> <a href="/topic/architecture/intro" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Introduction" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Introduction </span> </a> </li> <li class="devsite-nav-item"> <a href="/topic/libraries/view-binding" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Libraries" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Libraries </span> </a> </li> <li class="devsite-nav-item"> <a href="/guide/navigation/navigation-principles" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Navigation" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Navigation </span> </a> </li> <li class="devsite-nav-item"> <a href="/topic/modularization" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Modularization" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Modularization </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/testing/fundamentals" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Testing" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Testing </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Quality </span> </span> </li> <li class="devsite-nav-item"> <a href="/quality" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/core-value" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Core value" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Core value </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/user-experience" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: User experience" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > User experience </span> </a> </li> <li class="devsite-nav-item"> <a href="/guide/topics/ui/accessibility" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Accessibility" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Accessibility </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/technical" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Technical quality" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Technical quality </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/privacy-and-security" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Security" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Security </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Security </span> </span> </li> <li class="devsite-nav-item"> <a href="/security" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/privacy-and-security/about" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Privacy" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Privacy </span> </a> </li> <li class="devsite-nav-item"> <a href="/guide/topics/permissions/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Permissions" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Permissions </span> </a> </li> <li class="devsite-nav-item"> <a href="/identity" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Identity" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Identity </span> </a> </li> <li class="devsite-nav-item"> <a href="/security/fraud-prevention" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Fraud prevention" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Fraud prevention </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Build for Billions </span> </span> </li> <li class="devsite-nav-item"> <a href="/build-for-billions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/quality-guidelines/build-for-billions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: About new markets" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > About new markets </span> </a> </li> <li class="devsite-nav-item"> <a href="/guide/topics/androidgo" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android (Go edition)" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android (Go edition) </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Develop" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Build AI experiences </span> </span> </li> <li class="devsite-nav-item"> <a href="/ai" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Get started" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Get started </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Core areas </span> </span> </li> <li class="devsite-nav-item"> <a href="/samples" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Samples" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Samples </span> </a> </li> <li class="devsite-nav-item"> <a href="/develop/ui" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: User interfaces" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > User interfaces </span> </a> </li> <li class="devsite-nav-item"> <a href="/develop/background-work" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Background work" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Background work </span> </a> </li> <li class="devsite-nav-item"> <a href="/guide/topics/data" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Data and files" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Data and files </span> </a> </li> <li class="devsite-nav-item"> <a href="/develop/connectivity" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Connectivity" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Connectivity </span> </a> </li> <li class="devsite-nav-item"> <a href="/develop#core-areas" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: All core areas ⤵️" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > All core areas ⤵️ </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Tools and workflow </span> </span> </li> <li class="devsite-nav-item"> <a href="/studio/write" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Write and debug code" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Write and debug code </span> </a> </li> <li class="devsite-nav-item"> <a href="/build/gradle-build-overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Build projects" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Build projects </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/testing" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Test your app" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Test your app </span> </a> </li> <li class="devsite-nav-item"> <a href="/topic/performance/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Performance" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Performance </span> </a> </li> <li class="devsite-nav-item"> <a href="/tools" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Command-line tools" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Command-line tools </span> </a> </li> <li class="devsite-nav-item"> <a href="/reference/tools/gradle-api" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Gradle plugin API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Gradle plugin API </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Device tech </span> </span> </li> <li class="devsite-nav-item"> <a href="/guide/topics/large-screens/get-started-with-large-screens" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Adaptive UI" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Adaptive UI </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/wearables" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Wear OS" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Wear OS </span> </a> </li> <li class="devsite-nav-item"> <a href="/develop/xr" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android XR" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android XR </span> </a> </li> <li class="devsite-nav-item"> <a href="/health-and-fitness/guides" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android Health" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android Health </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/cars" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android for Cars" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android for Cars </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/tv" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android TV" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android TV </span> </a> </li> <li class="devsite-nav-item"> <a href="/develop#devices" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: All devices ⤵️" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > All devices ⤵️ </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Libraries </span> </span> </li> <li class="devsite-nav-item"> <a href="/reference/packages" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android platform" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android platform </span> </a> </li> <li class="devsite-nav-item"> <a href="/jetpack/androidx/explorer" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Jetpack libraries" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Jetpack libraries </span> </a> </li> <li class="devsite-nav-item"> <a href="/jetpack/androidx/releases/compose" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Compose libraries" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Compose libraries </span> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/android/reference/packages" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Play services ↗️" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Play services ↗️ </span> </a> </li> <li class="devsite-nav-item"> <a href="https://play.google.com/sdks" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Play SDK index ↗️" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Play SDK index ↗️ </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" id="main-content" class="devsite-main-content" has-book-nav has-sidebar > <div class="devsite-sidebar"> <div class="devsite-sidebar-content"> <devsite-toc class="devsite-nav" role="navigation" aria-label="On this page" depth="2" scrollbars ></devsite-toc> <devsite-recommendations-sidebar class="nocontent devsite-nav"> </devsite-recommendations-sidebar> </div> </div> <devsite-content> <article class="devsite-article"> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://developer.android.com/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Android Developers" > Android Developers </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developer.android.com/design" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="" > Design & Plan </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developer.android.com/quality" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail="App quality" > App quality </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developer.android.com/quality/user-experience" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="4" track-type="globalNav" track-name="breadcrumb" track-metadata-position="4" track-metadata-eventdetail="" > User experience </a> </li> </ul> <devsite-thumb-rating position="header"> </devsite-thumb-rating> </div> <h1 class="devsite-page-title" tabindex="-1"> Large screen app quality </h1> <devsite-feature-tooltip ack-key="AckCollectionsBookmarkTooltipDismiss" analytics-category="Site-Wide Custom Events" analytics-action-show="Callout Profile displayed" analytics-action-close="Callout Profile dismissed" analytics-label="Create Collection Callout" class="devsite-page-bookmark-tooltip nocontent" dismiss-button="true" id="devsite-collections-dropdown" dismiss-button-text="Dismiss" close-button-text="Got it"> <devsite-bookmark></devsite-bookmark> <span slot="popout-heading"> Stay organized with collections </span> <span slot="popout-contents"> Save and categorize content based on your preferences. </span> </devsite-feature-tooltip> <div class="devsite-page-title-meta"><devsite-view-release-notes></devsite-view-release-notes></div> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded > </devsite-toc> <devsite-recommendations-dropdown class="nocontent"></devsite-recommendations-dropdown> <div class="devsite-article-body clearfix "> <style> .description-icon { float: left; margin-right: 0.65rem; margin-top: -6px; width: 32px; height: 32px; } .description { font: 18px/24px Google Sans,Noto Sans,Noto Sans JP,Noto Sans KR,Noto Naskh Arabic,Noto Sans Thai,Noto Sans Hebrew,Noto Sans Bengali,sans-serif; margin: 26px 0 32px 0; } img, video { border-radius: 8px } /* Flex containers */ .flex-container-1 { display: flex; } .flex-container-1 > div { padding: 1rem; } .flex-container-1 > div > h3 { margin-top: 0; } .flex-container-1 div:nth-of-type(1) { flex-basis: 100px; flex-grow: 0; } .flex-container-1 div:nth-of-type(2) { flex-basis: 100%; flex-grow: 1; } .flex-container-2 { display: flex; margin-bottom: 8px; } .flex-container-2 > div { padding: 20px 20px 0 0; border-radius: 8px; background-color: #f4f8fd; } .color-scheme--dark .flex-container-2 > div { background-color: #1a3c51; color: #fff; } .color-scheme--dark .flex-container-2 > div a { color: #93d2fa; } .flex-container-2 > div > h4 { margin-top: 0; width: 4.05rem; padding-left: 20px; } .flex-container-2 > div > p { margin-top: 2px; padding-left: 10px; } .flex-container-2 div:nth-of-type(1) { flex-basis: 0; flex-grow: 0; } /* Tier overviews */ .guideline_reference { font-size: 0.85rem; } /* Applied to divs that contain Do's and Don'ts captions. */ .android-caption { margin-top: 15px; margin-bottom: 0; } /* Applied to divs that contain Do's and Don'ts images. */ .android-caption-image-container { margin-bottom: 2rem; } .dos-donts-container { display: flex; border-radius: 8px; } .do { margin-right: 20px; } .dont { margin-left: 20px; } /** Quality guidelines **/ .tier-icon { width: 50px; margin-top: 2rem; } .tier-icon-small { float: left; width: 26px; margin-right: 0.65rem; margin-top: -3px; } .tier-heading { margin-top: 0; margin-bottom: 1.5rem; } .unordered-sublist { margin-top: 0.75rem; list-style-type: circle; } /** Canonical layouts **/ .gallery-callout { border-radius: 10px; padding: 32px; background-color: #eaead6; } .color-scheme--dark .gallery-callout { background-color: #775; } .gallery-callout-heading { font: bold 24px/32px Google Sans,Noto Sans,Noto Sans JP,Noto Sans KR,Noto Naskh Arabic,Noto Sans Thai,Noto Sans Hebrew,Noto Sans Bengali,sans-serif; margin-top: 0; } </style> <p class="description">Android devices come in a variety of form factors—phones, tablets, foldables, ChromeOS devices—which have a wide range of screen sizes. Android supports multiple display modes, including multi-window, multi-display, multi-instance, and picture-in-picture. Foldable devices can be in various folded states, or postures, such as tabletop posture or book posture. </p> <p><img style="width: 100%;" src="/static/images/guide/topics/large-screens/quality-guidelines/quality_guidelines_header.png" alt="Depiction of the three quality tiers as layers stacked vertically."/></p> <p>To ensure your app provides a great user experience regardless of device form factor, screen size, display mode, or posture, complete the large screen compatibility <a href="#large_screen_checklists">checklists</a> and <a href="#large_screen_compatibility_tests">tests</a>.</p> <p>The checklists and tests define a comprehensive set of quality requirements for most types of Android apps. Your app probably won't need to meet all of the requirements. Implement the ones that make sense for your app's use cases.</p> <p class="note">As you enhance your app with large screen capabilities, help users better understand your app's large screen experience by updating your app listing on Google Play. Upload screenshots that show off the app on large screens. Call attention to large screen features in your app description. For more information and best practices, see <a href="https://support.google.com/googleplay/android-developer/answer/9866151">Google Play Help</a>. </p> <p class="key-point">For examples of optimized and differentiated large screen layouts, see the <a href="/large-screens/gallery">large screen gallery</a>. </p> <h2 id="large_screen_checklists" data-text="Large screen compatibility checklists" tabindex="-1">Large screen compatibility checklists</h2> <p>The compatibility checklists define criteria to help you assess the level of support your app provides for large screens.</p> <p>Levels of support include the following:</p> <p><img class="tier-icon" src="/static/images/guide/topics/large-screens/quality-guidelines/tier-3/tier_3_icon.svg" /></p> <h3 id="tier_3_basic_large_screen_ready" class="hide-from-toc tier-heading" data-text="TIER 3 (basic) — Large screen ready" tabindex="-1">TIER 3 (basic) — Large screen ready</h3> <p>Users can complete critical task flows but with a less than optimal user experience. Your app runs full screen (or full window in multi-window mode), but app layout might not be ideal. The app is not letterboxed; it does not run in compatibility mode. The app provides basic support for external input devices, including keyboard, mouse, trackpad, and stylus.</p> <p><img class="tier-icon" src="/static/images/guide/topics/large-screens/quality-guidelines/tier-2/tier_2_icon.svg" /></p> <h3 id="tier_2_better_large_screen_optimized" class="hide-from-toc tier-heading" data-text="TIER 2 (better) — Large screen optimized" tabindex="-1">TIER 2 (better) — Large screen optimized</h3> <p>Your app implements layout optimizations for all screen sizes and device configurations along with enhanced support for external input devices.</p> <p><img class="tier-icon" src="/static/images/guide/topics/large-screens/quality-guidelines/tier-1/tier_1_icon.svg" /></p> <h3 id="tier_1_best_large_screen_differentiated" class="hide-from-toc tier-heading" data-text="TIER 1 (best) — Large screen differentiated" tabindex="-1">TIER 1 (best) — Large screen differentiated</h3> <p>Your app provides a user experience designed for tablets, foldables, and ChromeOS devices. Where applicable, the app supports multitasking, foldable postures, drag and drop, and stylus input.</p> <p>Complete the Tier 2 requirements to enable your app to provide an excellent user experience on all Android devices. To make your app outstanding on large screens, complete Tier 1.</p> <hr> <p><img class="tier-icon-small" alt="Tier 3 icon" src="/static/images/guide/topics/large-screens/quality-guidelines/tier-3/tier_3_icon.svg"/></p> <p>TIER 3</p> <h3 id="large_screen_ready" class="tier-heading" data-text="Large screen ready" tabindex="-1">Large screen ready</h3> <p>Large screen ready apps must first fulfill the <a href="/docs/quality-guidelines/core-app-quality">core app quality</a> requirements—in particular, the <a href="/docs/quality-guidelines/core-app-quality#ui_and_graphics">UI and Graphics</a> requirements.</p> <p>Apps must also meet the following large screen requirements:</p> <table style="width:100%"> <tr> <th style="width:20%;">Category</th> <th style="width:13%;">ID</th> <th style="width:12%;">Test</th> <th style="width:55%;">Description</th> </tr> <tr> <td rowspan="2" id="t3_configuration_continuity">Configuration and continuity</td> <td id="LS-C1">LS-C1</td> <td><a href="#T3-1">T3-1</a>, <a href="#T3-2">T3-2</a></td> <td><p>App fills the available display area—the entire screen or, in multi-window mode, the app window. App is not <a href="/guide/practices/enhanced-letterboxing">letterboxed</a>; it does not run in <a href="/guide/topics/manifest/supports-screens-element#compat-mode">compatibility mode</a>.</p> <p>App handles configuration changes and retains or restores its state as the device goes through configuration changes such as device rotation, folding and unfolding, and window resizing in split‑screen and desktop windowing modes, for example:</p> <ul> <li>Scroll position of scrollable fields is maintained</li> <li>Text typed into text fields is retained and the keyboard state is restored</li> <li>Media playback resumes where it left off when the configuration change was initiated</li> </ul> </td> </tr> <tr> <td id="LS-C2">LS-C2</td> <td><a href="#T3-3">T3-3</a></td> <td>App handles combinations of configuration changes, such as window resizing followed by device rotation, or rotation followed by device folding or unfolding.</td> </tr> <tr> <td rowspan="2" id="t3_multi-window_multi-resume">Multi-window mode and multi-resume</td> <td id="LS-M1">LS-M1</td> <td><a href="#T3-4">T3-4</a></td> <td><p>App is fully functional in multi-window mode. See <a href="/develop/ui/compose/layouts/adaptive/support-multi-window-mode">Support multi-window mode</a>.</p> <p><b>Note:</b> Unity apps should be on Unity Long Term Support (LTS) version 2019 or later. See <a href="/develop/ui/compose/layouts/adaptive/support-multi-window-mode#testing">Multi-window mode verification</a>.</p></td> </tr> <tr> <td id="LS-M2">LS-M2</td> <td><a href="#T3-5">T3-5</a>, <a href="#T3-6">T3-6</a></td> <td>App fully supports <a href="/develop/ui/compose/layouts/adaptive/support-multi-window-mode#multi-resume">multi-resume</a>. App updates its UI (continues playing media, incorporates new messages, updates download progress, etc.) when the app is not the top focused app. In addition, the app handles the loss of exclusive resources such as cameras and microphones in multi-window scenarios. See <a href="/develop/ui/compose/layouts/adaptive/support-multi-window-mode#lifecycle">Activity lifecycle in multi-window mode</a>.</td> </tr> <tr> <td rowspan="2" id="t3_camera_preview_media_projection">Camera preview and media projection</td> <td id="LS-CM1">LS-CM1</td> <td><a href="#T3-7">T3-7</a></td> <td>App provides camera preview in landscape and portrait orientations, folded and unfolded device states, and multi-window mode. Preview is properly proportioned and in the correct orientation.</td> </tr> <tr> <td id="LS-CM2">LS-CM2</td> <td><a href="#T3-8">T3-8</a></td> <td>App supports <a href="/media/grow/media-projection">media projection</a> in landscape and portrait orientations, folded and unfolded device states, and multi-window mode. Projection is properly proportioned and in the correct orientation.</td> </tr> <tr> <td rowspan="2" id="t3_keyboard_mouse_trackpad">Keyboard, mouse, and trackpad</td> <td id="LS-I1">LS-I1</td> <td><a href="#T3-9">T3-9</a></td> <td>App supports text input using external keyboard and switches between physical and virtual keyboards when an external keyboard is connected or disconnected without relaunching the app.</td> </tr> <tr> <td id="LS-I2">LS-I2</td> <td><a href="#T3-10">T3-10</a></td> <td><p>App supports basic mouse or trackpad interactions:</p> <ul> <li>Click: Any clickable element, including buttons, drop‑down menus, text entry fields, and navigation icons</li> <li>Select: Any selectable element, including radio buttons, checkboxes, and text (by swiping or double clicking)</li> <li>Scroll: Vertically and horizontally in scrollable elements such as lists and pickers</li> </ul> </td> </tr> <tr> <td rowspan="2" id="t3_stylus">Stylus</td> <td id="LS-S1">LS-S1</td> <td><a href="#T3-11">T3-11</a></td> <td><p>App provides basic support for stylus‑equipped tablets, foldables, and ChromeOS devices. The stylus can be used to select and manipulate UI elements, including scrolling through lists, pickers, and other scrollable content.</p> <p>See <a href="/guide/topics/large-screens/input-compatibility-large-screens#stylus">Stylus</a> in <a href="/guide/topics/large-screens/input-compatibility-large-screens">Input compatibility on large screens</a>.</p> <p><b>Note:</b> Basic stylus input is the same as touch input, which is fully supported by Android. All apps support basic stylus input with no special development required.</p></td> </tr> <tr> <td id="LS-S1.1">LS-S1.1</td> <td><a href="#T3-12">T3-12</a></td> <td><p>On Android 14 (API level 34) and higher, users can write and edit text in text input fields using a stylus. On ChromeOS M114 and higher, a stylus can be used to write and edit text in text input fields in <a href="/reference/kotlin/android/webkit/WebView"><code translate="no" dir="ltr">WebView</code></a> components.</p> <p><b>Note:</b> On Android 14 and higher, <a href="/reference/kotlin/android/widget/EditText"><code translate="no" dir="ltr">EditText</code></a> components support input using a stylus by default; no special development is required. On ChromeOS M114 and higher, <code translate="no" dir="ltr">WebView</code> supports stylus input in text fields by default.</p></td> </tr> </table> <p><img class="tier-icon-small" alt="Tier 2 icon" src="/static/images/guide/topics/large-screens/quality-guidelines/tier-2/tier_2_icon.svg"/></p> <p>TIER 2</p> <h3 id="large_screen_optimized" class="tier-heading" data-text="Large screen optimized" tabindex="-1">Large screen optimized</h3> <p>Optimized apps fully support all screen types and device states, including state transitions.</p> <table style="width:100%"> <tr> <th style="width:20%;">Category</th> <th style="width:13%;">ID</th> <th style="width:12%;">Test</th> <th style="width:55%;">Description</th> </tr> <tr> <td rowspan="4" id="t2_ux">UX</td> <td id="LS-U1">LS-U1</td> <td><a href="#T2-1">T2-1</a></td> <td><p>App has responsive and adaptive layouts designed for large screens. All layouts are responsive (see <a href="/guide/topics/large-screens/migrate-to-responsive-layouts">Migrate your UI to responsive layouts</a>). Implementation of adaptive layouts is determined by <a href="/develop/ui/compose/layouts/adaptive/window-size-classes">window size classes</a>.</p> <p>The app UI can include the following:</p> <ul> <li>Leading‑edge navigation rails that expand on larger window sizes into full navigation panels</li> <li>Grid layouts that scale the number of columns to accommodate window size changes</li> <li>Columns of text on large screens</li> <li>Trailing‑edge panels that are open by default on laptop and desktop screen sizes; closed, on smaller screens</li> </ul> <p>Create two-pane layouts, where appropriate, to take advantage of the large screen space. See <a href="/develop/ui/compose/layouts/adaptive/canonical-layouts">Canonical layouts</a>.</p> <p><a href="/develop/ui/views/layout/activity-embedding">Activity embedding</a> enables activity-based apps to create multi‑pane layouts by displaying activities side by side.</p></td> </tr> <tr> <td id="LS-U2">LS-U2</td> <td><a href="#T2-1">T2-1</a></td> <td><p>Modals, options menus, and other secondary elements are properly formatted on all screen types and device states, for example:</p> <ul> <li>Bottom sheets are not full width on large screens. (Apply a maximum width to avoid stretching.) See <a href="https://material.io/components/sheets-bottom#behavior">Behavior</a> in <a href="https://material.io/components/sheets-bottom">Sheets: bottom</a>.</li> <li>Buttons are not full width on large screens. See <a href="https://material.io/components/buttons#behavior">Behavior</a> in <a href="https://material.io/components/buttons">Buttons</a>.</li> <li>Text fields and boxes do not stretch to full width on large screens. See <a href="https://material.io/components/text-fields#behavior">Behavior</a> in <a href="https://material.io/components/text-fields">Text fields</a>.</li> <li>Small edit menus or modals do not cover the entire screen and maintain context for the user as much as possible. See <a href="https://material.io/components/menus">Menus</a>.</li> <li>Options menus appear next to the item the user selected. See the "Contextual menu" topic in <a href="https://material.io/components/menus">Menus</a>.</li> <li>Navigation rails replace navigation bars for better ergonomics. Rails can also complement other navigation components, such as navigation bars. See <a href="https://material.io/components/navigation-rail">Navigation rail</a>.</li> <li>Navigation drawers are updated to the latest material component. See <a href="https://material.io/components/navigation-drawer">Navigation drawer</a>.</li> <li>Dialog boxes are updated to the latest material component. See <a href="https://material.io/components/dialogs">Dialogs</a>.</li> <li>Images are displayed at a proper resolution and are not stretched or cropped.</li> </ul> </td> </tr> <tr> <td id="LS-U3">LS-U3</td> <td><a href="#T2-2">T2-2</a></td> <td>Touch targets are least 48dp. See the Material Design <a href="https://material.io/design/usability/accessibility.html#layout-and-typography">Layout and typography</a> guidelines.</td> </tr> <tr> <td id="LS-U4">LS-U4</td> <td><a href="#T2-3">T2-3</a></td> <td>A focused state is created for custom drawables that are interactive. A custom drawable is any visual UI element not provided by the Android framework. If users can interact with a custom drawable, the drawable must be focusable when the device is not in <a href="/reference/kotlin/android/view/View#touch-mode">Touch Mode</a>, and a visual indication of the focused state must be apparent.</td> </tr> <tr> <td rowspan="7" id="t2_keyboard_mouse_trackpad">Keyboard, mouse, and trackpad</td> <td id="LS-I3">LS-I3</td> <td><a href="#T2-4">T2-4</a></td> <td>The main task flows in the app support keyboard navigation, including <kbd>Tab</kbd> and arrow key navigation. See <a href="/guide/topics/ui/accessibility">Build more accessible apps</a>.</td> </tr> <tr> <td id="LS-I4">LS-I4</td> <td><a href="#T2-5">T2-5</a></td> <td>App supports keyboard shortcuts for commonly used actions such as select, cut, copy, paste, undo, and redo. See <a href="https://chromeos.dev/en/android/input-compatibility">Input compatibility</a>.</td> </tr> <tr> <td id="LS-I5">LS-I5</td> <td><a href="#T2-6">T2-6</a></td> <td>Keyboard can be used to control media playback; for example, the <kbd>Spacebar</kbd> plays and pauses media.</td> </tr> <tr> <td id="LS-I6">LS-I6</td> <td><a href="#T2-7">T2-7</a></td> <td>Keyboard <kbd>Enter</kbd> key performs a <i>send</i> function in communication apps.</td> </tr> <tr> <td id="LS-I7">LS-I7</td> <td><a href="#T2-8">T2-8</a></td> <td>Options menus are accessible by typical mouse and trackpad right‑click (secondary mouse button or secondary tap) behavior.</td> </tr> <tr> <td id="LS-I8">LS-I8</td> <td><a href="#T2-9">T2-9</a></td> <td>App content can be zoomed using the mouse scroll wheel (in conjunction with pressing the <kbd>Control</kbd>, or <kbd>Ctrl</kbd>, key) and trackpad pinch gestures.</td> </tr> <tr> <td id="LS-I9">LS-I9</td> <td><a href="#T2-10">T2-10</a></td> <td>Actionable UI elements have hover states (where appropriate) to indicate to mouse and trackpad users that the elements are interactive.</td> </tr> </table> <p><img class="tier-icon-small" alt="Tier 1 icon" src="/static/images/guide/topics/large-screens/quality-guidelines/tier-1/tier_1_icon.svg"/></p> <p>TIER 1</p> <h3 id="large_screen_differentiated" class="tier-heading" data-text="Large screen differentiated" tabindex="-1">Large screen differentiated</h3> <p>Large screen differentiated apps use the large screen form factor to its full potential. Differentiated apps offer a premium user experience that's productive and enjoyable.</p> <aside class="note"><strong>Note:</strong><span> Because Tier 1 apps are highly differentiated, some of the listed capabilities are applicable only to specific types of apps. Choose the capabilities that are appropriate for your application.</span></aside> <table style="width:100%"> <tr> <th style="width:20%;">Category</th> <th style="width:13%;">ID</th> <th style="width:12%;">Test</th> <th style="width:55%;">Description</th> </tr> <tr> <td rowspan="2" id="t1_multitasking_multi-instance">Multitasking and multi‑instance</td> <td id="LS-M3">LS-M3</td> <td> <a href="#T1-1">T1-1</a>, <a href="#T1-2">T1-2</a>, <a href="#T1-3">T1‑3</a> </td> <td><p>App supports various multitasking scenarios, for example:</p> <ul> <li>Picture-in-picture mode: App is able to enter and exit picture-in-picture mode in portrait and landscape orientations, with the device folded and unfolded, and in multi-window mode. See <a href="/guide/topics/ui/picture-in-picture">Picture-in-picture (PiP) support</a>.</li> <li>Multi-window mode: App can open another application in a separate window from a deep link; for example, a contact management app opens a link to an email message which is displayed in an email app in a new window. See <a href="/reference/kotlin/android/content/Intent#flag_activity_launch_adjacent"><code translate="no" dir="ltr">FLAG_ACTIVITY_LAUNCH_ADJACENT</code></a>.</li> <li>Attachments: Messaging apps can open attachments (such as videos) in a separate window.</li> </ul> </td> </tr> <tr> <td id="LS-M4">LS-M4</td> <td><a href="#T1-4">T1-4</a></td> <td>App is able to launch multiple instances of itself in separate windows. Use cases include document editing, web browsing, file management apps, and product comparisons in shopping apps. See <a href="/develop/ui/compose/layouts/adaptive/support-multi-window-mode#multi-instance">Multi-instance</a> in <a href="/develop/ui/compose/layouts/adaptive/support-multi-window-mode">Support multi-window mode.</a></td> </tr> <tr> <td rowspan="2" id="t1_foldable_postures_states">Foldable postures and states</td> <td id="LS-F1">LS-F1</td> <td><a href="#T1-5">T1-5</a></td> <td><p>App supports all foldable postures and related use cases:</p> <ul> <li>Tabletop posture — Video calling and video or audio playback.</li> <li>Book posture — Reading lengthy text content.</li> <li>Dual display — Front and back screen preview for camera apps. Support for dual-screen devices.</li> </ul> See <a href="/develop/ui/compose/layouts/adaptive/foldables/learn-about-foldables">Learn about foldables</a>. </td> </tr> <tr> <td id="LS-F2">LS-F2</td> <td><a href="#T1-6">T1-6</a></td> <td>Camera apps adjust their preview for folded and unfolded states and support front and back screen preview.</td> </tr> <tr> <td id="t1_drag_drop">Drag and drop</td> <td id="LS-D1">LS-D1</td> <td><a href="#T1-7">T1-7</a></td> <td>App supports drag and drop between views within the app and, in multi-window mode, to and from other apps using touch input, mouse, trackpad, and stylus. See <a href="/develop/ui/views/touch-and-input/drag-drop">Enable drag and drop</a>. See also <a href="#LS-S3">LS-S3</a>.</td> </tr> <tr> <td rowspan="7" id="t1_keyboard_mouse_trackpad">Keyboard, mouse, and trackpad</td> <td id="LS-I10">LS-I10</td> <td><a href="#T1-8">T1-8</a></td> <td>App provides a comprehensive set of keyboard shortcuts while supporting conventional shortcuts such as <kbd>Ctrl-C</kbd> for copy and <kbd>Ctrl-Z</kbd> for undo. App maintains keyboard shortcut parity with equivalent web or desktop versions of the app whenever possible.</td> </tr> <tr> <td id="LS-I11">LS-I11</td> <td><a href="#T1-9">T1-9</a></td> <td>Keyboard and mouse or trackpad combinations, such as <kbd>Ctrl</kbd>+click or <kbd>Ctrl</kbd>+tap and <kbd>Shift</kbd>+click or <kbd>Shift</kbd>+tap, provide enhanced capabilities, including the selection of ranges of adjacent items or multiple separated items.</td> </tr> <tr> <td id="LS-I12">LS-I12</td> <td><a href="#T1-10">T1-10</a></td> <td>App displays a scrollbar while content is being scrolled using a mouse or trackpad.</td> </tr> <tr> <td id="LS-I13">LS-I13</td> <td><a href="#T1-11">T1-11</a></td> <td>Where applicable, UI elements display additional content such as fly‑out menus or tooltips on mouse or trackpad hover. App maintains hover state parity with equivalent web or desktop versions of the app whenever possible.</td> </tr> <tr> <td id="LS-I14">LS-I14</td> <td><a href="#T1-12">T1-12</a></td> <td>Desktop-style menus and context menus are used where appropriate.</td> </tr> <tr> <td id="LS-I15">LS-I15</td> <td><a href="#T1-13">T1-13</a></td> <td>UI panels in multi-panel layouts are reconfigurable using a mouse or trackpad. Reconfigurable panels enable users to adjust the app layout for increased productivity, for example, by changing the size of the detail panel of a <a href="https://m3.material.io/foundations/adaptive-design/canonical-layouts#e6337592-71a6-4572-ac5a-15316bb64b8b">list-detail</a> layout or by rearranging panels on screen. <b>Note:</b> This does not apply to navigation bars, rails, or drawers.</td> </tr> <tr> <td id="LS-I16">LS-I16</td> <td><a href="#T1-14">T1-14</a></td> <td>Triple clicking or tapping using a mouse or trackpad selects entire lines or paragraphs of text.</td> </tr> <tr> <td rowspan="3" id="t1_stylus">Stylus</td> <td id="LS-S2">LS-S2</td> <td><a href="#T1-15">T1-15</a></td> <td>App supports drawing and writing with a stylus. Drawings and writing can be erased with the stylus.</td> </tr> <tr> <td id="LS-S3">LS-S3</td> <td><a href="#T1-16">T1-16</a></td> <td>App provides stylus support for dragging and dropping content between views within the app and, in multi-window mode, to and from other apps. See <a href="/develop/ui/views/touch-and-input/drag-drop">Enable drag and drop</a>.</td> </tr> <tr> <td id="LS-S4">LS-S4</td> <td><a href="#T1-17">T1-17</a></td> <td><p>App provides enhanced stylus support, including:</p> <ul> <li>Low latency and motion prediction to improve responsiveness </li> <li>Pressure sensitivity for drawing strokes of varying width</li> <li>Tilt detection for creating shading strokes</li> <li>Palm and finger rejection to prevent stray marks</li> </ul> See <a href="/develop/ui/compose/touch-input/stylus-input/advanced-stylus-features#low-latency">Advanced stylus features</a>. </td> </tr> <tr> <td id="t1_custom_cursors">Custom cursors</td> <td id="LS-P1">LS-P1</td> <td><a href="#T1-18">T1-18</a></td> <td><p>App displays customized cursors to indicate how and when users can interact with UI elements and content, for example:</p> <ul> <li>System cursors provided by the Android framework <ul class="unordered-sublist"> <li>I-beam for text</li> <li>Resize handles at resizable layer edges</li> <li>Processing spinners</li> </ul> </li> <li>Specialty cursors that you provide <ul class="unordered-sublist"> <li>Crosshairs when hovering over targets in games</li> <li>A magnifying glass when hovering over zoomable content</li> <li>Tools in drawing or illustration apps</li> </ul> </li> </ul> See <a href="/reference/kotlin/android/view/PointerIcon"><code translate="no" dir="ltr">PointerIcon</code></a> and <a href="https://chromeos.dev/en/android/pointer-styling">Mouse pointer icons</a>. </td> </tr> </table> <h2 id="large_screen_compatibility_tests" data-text="Large screen compatibility tests" tabindex="-1">Large screen compatibility tests</h2> <p>The following tests help you discover quality issues in your app. You can combine the tests or integrate groups of tests together in your own test plans.</p> <p>For layout and UX purposes, test on at least the following device types:</p> <ul> <li>Foldable (841x701 dp)</li> <li>8-inch tablet (1024x640 dp)</li> <li>10.5-inch tablet (1280x800 dp)</li> <li>13-inch Chromebook (1600x900 dp)</li> </ul> <p></p> <p>Use the following Android emulators to test large screen device compatibility:</p> <ul> <li>Foldable phone — 7.6" Fold-in with outer display</li> <li>Tablet — Pixel C 9.94"</li> <li>Dual-display foldable — Microsoft Surface Duo</li> </ul> <hr> <p><img class="tier-icon-small" alt="Tier 3 icon" src="/static/images/guide/topics/large-screens/quality-guidelines/tier-3/tier_3_icon.svg"/></p> <p>TIER 3</p> <h3 id="large_screen_ready_tests" class="tier-heading" data-text="Large screen ready" tabindex="-1">Large screen ready</h3> <table style="width:100%"> <tr> <th style="width:20%;">Category</th> <th style="width:10%;">ID</th> <th style="width:15%;">Feature</th> <th style="width:55%;">Description</th> </tr> <tr> <td rowspan="3">Configuration and continuity</td> <td id="T3-1">T3-1</td> <td><a href="#LS-C1">LS-C1</a></td> <td>Verify that the app is not <a href="/guide/practices/enhanced-letterboxing">letterboxed</a> and is not running in <a href="/guide/topics/manifest/supports-screens-element#compat-mode">compatibility mode</a> in portrait and landscape orientations, in multi-window mode, or when a large screen foldable device is unfolded in portrait and landscape orientations. <p>Resize the app window in multi-window mode, including split-screen and desktop windowing modes. On ChromeOS devices, minimize and restore the app window, maximize and restore the app window. Verify that the app assumes the proper orientation and maintains state in all window sizes.</p> <p><b>Note:</b> Test on a large screen device (sw >= 600dp) running Android 12 (API level 31) or higher to ensure the device supports the following:</p> <ul> <li>All device orientations regardless of orientation restrictions set with the <a href="/guide/topics/manifest/activity-element#screen"><code translate="no" dir="ltr">android:screenOrientation</code></a> app manifest element</li> <li>Multi-window mode, even for apps that have specified <a href="/guide/topics/manifest/application-element#resizeableActivity"><code translate="no" dir="ltr">android:resizeableActivity="false"</code></a> in the app manifest</li> </ul> </td> </tr> <tr> <td id="T3-2">T3-2</td> <td><a href="#LS-C1">LS-C1</a></td> <td><p>From each app screen that has scrollable content, continuous playback content, or text entry fields, do the following:</p> <ul> <li>Scrollable content: Scroll the content</li> <li>Playback content: Begin playback</li> <li>Text entry fields: Enter text in multiple fields</li> </ul> <p>Rotate the device between landscape and portrait orientations, fold and unfold the device (if applicable), span and unspan your app across two screens (if you have a dual-screen device) and resize the app window in multi-window mode. Minimize and restore the app window on ChromeOS devices; maximize and restore the app window. Verify the following:</p> <ul> <li>Scrollable content: The scroll position remains the same</li> <li>Playback content: Playback resumes where it left off when the configuration change was initiated</li> <li>Text entry fields: Previously entered text is retained in input fields</li> </ul></td> </tr> <tr> <td id="T3-3">T3-3</td> <td><a href="#LS-C2">LS-C2</a></td> <td>From each app screen, perform combinations of rotating the device between landscape and portrait orientations, folding and unfolding the device (if applicable), and resizing the app window in multi-window mode.</td> </tr> <tr> <td rowspan="3">Multi-window mode and multi-resume</td> <td id="T3-4">T3-4</td> <td><a href="#LS-M1">LS-M1</a></td> <td><p>Open the app in <a href="/develop/ui/compose/layouts/adaptive/support-multi-window-mode#split-screen_mode_activation">multi-window mode</a>. Check whether the app is fully functional in all window sizes, device orientations, and foldable device states. Resize the app window in each orientation. For foldable devices, fold and unfold the device in each orientation.</p> <p><b>Unity apps</b></p> <p>Open an app other than your Unity app. Go to the Recents screen. Select the app icon and put the app in split-screen mode. Open your Unity app, which should launch in split-screen mode beside or below the first app. Go to the Home screen to hide the pair of apps. Go to the Recents screen. Select the split-screen app pair that includes your Unity app. Verify that the Unity app resumes its activity and the app's layout in the split-screen window is correct with all UI elements accessible.</p></td> </tr> <tr> <td id="T3-5">T3-5</td> <td><a href="#LS-M2">LS-M2</a></td> <td>Open the app and initiate a process, such as playing a video, that continuously updates the app. Open another app and make the new app the top focused app. Verify that the non-focused app continues to update its content (for example, a video continues to play).</td> </tr> <tr> <td id="T3-6">T3-6</td> <td><a href="#LS-M2">LS-M2</a></td> <td>In the app, open the camera or use the microphone. Open another app, and make the new app the top focused app. Verify that the non-focused app has relinquished the camera or mic. Make the original app the top focused app. Verify that the app has regained access to the camera or mic.</td> </tr> <tr> <td rowspan="2">Camera preview and media projection</td> <td id="T3-7">T3-7</td> <td><a href="#LS-CM1">LS-CM1</a></td> <td>Open the app full screen and in multi-window mode. Start the camera from within the app. Rotate the device between landscape and portrait orientations. For foldable devices, fold and unfold the device in each orientation. In multi-window mode, resize the app window. Verify that the camera preview is in the proper orientation and proportions in all device states and window sizes.</td> </tr> <tr> <td id="T3-8">T3-8</td> <td><a href="#LS-CM2">LS-CM2</a></td> <td>Open the app full screen and in multi-window mode. Start a media projection. Rotate the device between landscape and portrait orientations. For foldable devices, fold and unfold the device in each orientation. In multi-window mode, resize the app window. Verify that the media projection is in the proper orientation and proportions in all device states and window sizes.</td> </tr> <tr> <td rowspan="2">Keyboard, mouse, and trackpad</td> <td id="T3-9">T3-9</td> <td><a href="#LS-I1">LS-I1</a></td> <td>For each app screen that has text entry fields, connect an external keyboard to the device and enter text with the external keyboard and the virtual keyboard. Disconnect the external keyboard and enter text with the virtual keyboard.</td> </tr> <tr> <td id="T3-10">T3-10</td> <td><a href="#LS-I2">LS-I2</a></td> <td><p>For each app screen, connect a mouse and trackpad to the device. Perform basic mouse and trackpad interactions:</p> <ul> <li>Click all clickable elements such as buttons, drop‑down menus, and text entry fields.</li> <li>Select radio buttons and checkboxes. Select text by swiping and double clicking.</li> <li>Scroll vertically and horizontally (if applicable) through lists, pickers, and so forth</li> </ul> </td> </tr> <tr> <td rowspan="2">Stylus</td> <td id="T3-11">T3-11</td> <td><a href="#LS-S1">LS-S1</a></td> <td>Using a stylus, navigate through the app, select UI elements, scroll through lists and pickers, and generally interact with the app.</td> </tr> <tr> <td id="T3-12">T3-12</td> <td><a href="#LS-S1.1">LS-S1.1</a></td> <td>On Android 14 (API level 34) and higher, enter and edit text in text input fields using a stylus. The software keyboard should not appear. On ChromeOS M114 or higher, enter and edit text in text input fields in a <code translate="no" dir="ltr">WebView</code>.</td> </tr> </table> <p><img class="tier-icon-small" alt="Tier 2 icon" src="/static/images/guide/topics/large-screens/quality-guidelines/tier-2/tier_2_icon.svg"/></p> <p>TIER 2</p> <h3 id="large_screen_optimized_tests" class="tier-heading" data-text="Large screen optimized" tabindex="-1">Large screen optimized</h3> <table style="width:100%"> <tr> <th style="width:20%;">Category</th> <th style="width:10%;">ID</th> <th style="width:15%;">Feature</th> <th style="width:55%;">Description</th> </tr> <tr> <td rowspan="3">UX</td> <td id="T2-1">T2-1</td> <td> <a href="#LS-U1">LS-U1</a>, <a href="#LS-U2">LS-U2</a> </td> <td><p>Run the app on devices that have a wide variety of screen sizes, including phones, foldable phones, small and large tablets, and ChromeOS devices. Run the app in multi-window mode on the devices.</p> <p>Verify that the app layout responds and adapts to different screen and window sizes. Check whether the app expands and contracts navigation rails, scales the number of columns in grid layouts, flows text into columns, and so forth. Observe whether UI elements are formatted for both aesthetics and function.</p> <p>For apps using activity embedding, test whether activities are displayed side by side on large screens, stacked on small screens.</p></td> </tr> <tr> <td id="T2-2">T2-2</td> <td><a href="#LS-U3">LS-U3</a></td> <td>Verify that touch targets maintain a consistent, accessible size and position for all display sizes and configurations. For information on accessibility, see the <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.accessibility.auditor">Accessibility Scanner</a>.</td> </tr> <tr> <td id="T2-3">T2-3</td> <td><a href="#LS-U4">LS-U4</a></td> <td>On each app screen that contains an interactive custom drawable, verify that the drawable can be focused using an external keyboard, D‑pad, or other device that enables views to be focused. Verify that a visual indication of the focused state is apparent. For related information, see <a href="/reference/kotlin/android/view/View#touch-mode">Touch Mode</a>.</td> </tr> <tr> <td rowspan="7">Keyboard, mouse, and trackpad</td> <td id="T2-4">T2-4</td> <td><a href="#LS-I3">LS-I3</a></td> <td>Navigate through the app's focusable components using the Tab and arrow keys of an external keyboard.</td> </tr> <tr> <td id="T2-5">T2-5</td> <td><a href="#LS-I4">LS-I4</a></td> <td>Use keyboard shortcuts on an external keyboard to perform select, cut, copy, paste, undo, and redo actions.</td> </tr> <tr> <td id="T2-6">T2-6</td> <td><a href="#LS-I5">LS-I5</a></td> <td>Use an external keyboard to start, stop, pause, rewind, and fast forward media playback.</td> </tr> <tr> <td id="T2-7">T2-7</td> <td><a href="#LS-I6">LS-I6</a></td> <td>Use the <kbd>Enter</kbd> key of an external keyboard to send or submit data.</td> </tr> <tr> <td id="T2-8">T2-8</td> <td><a href="#LS-I7">LS-I7</a></td> <td>Use the secondary mouse button or trackpad secondary tap capability to access the options menu of interactive elements.</td> </tr> <tr> <td id="T2-9">T2-9</td> <td><a href="#LS-I8">LS-I8</a></td> <td>Use the mouse scroll wheel (in conjunction with the <kbd>Control</kbd>, or <kbd>Ctrl</kbd>, key) and trackpad pinch gestures to zoom content in and out.</td> </tr> <tr> <td id="T2-10">T2-10</td> <td><a href="#LS-I9">LS-I9</a></td> <td>Hover the mouse or trackpad cursor over actionable UI elements to activate the element's hover state.</td> </tr> </table> <p><img class="tier-icon-small" alt="Tier 1 icon" src="/static/images/guide/topics/large-screens/quality-guidelines/tier-1/tier_1_icon.svg"/></p> <p>TIER 1</p> <h3 id="large_screen_differentiated_tests" class="tier-heading" data-text="Large screen differentiated" tabindex="-1">Large screen differentiated</h3> <table style="width:100%"> <tr> <th style="width:20%;">Category</th> <th style="width:10%;">ID</th> <th style="width:15%;">Feature</th> <th style="width:55%;">Description</th> </tr> <tr> <td rowspan="4">Multitasking and multi‑instance</td> <td id="T1-1">T1-1</td> <td><a href="#LS-M3">LS-M3</a></td> <td>Enter and exit picture-in-picture mode in portrait and landscape orientations, with the device folded and unfolded, and in multi-window mode. In multi-window mode, change the window size while picture-in-picture mode is active.</td> </tr> <tr> <td id="T1-2">T1-2</td> <td><a href="#LS-M3">LS-M3</a></td> <td>In multi-window mode, open another app from within the app and display both apps side by side.</td> </tr> <tr> <td id="T1-3">T1-3</td> <td><a href="#LS-M3">LS-M3</a></td> <td>Open and close attachments and notifications in portrait and landscape orientations, with the device folded and unfolded, and in multi-window mode.</td> </tr> <tr> <td id="T1-4">T1-4</td> <td><a href="#LS-M4">LS-M4</a></td> <td>Launch multiple instances of the app in separate windows in portrait and landscape orientations, with the device folded and unfolded, and in multi-window mode.</td> </tr> <tr> <td rowspan="2">Foldable postures and states</td> <td id="T1-5">T1-5</td> <td><a href="#LS-F1">LS-F1</a></td> <td>View the app in all foldable postures, including tabletop posture, book posture, and dual display (for example, Microsoft Surface Duo). Verify that UI elements transition to the optimal location (for example, media controllers move to the horizontal screen area in tabletop posture).</td> </tr> <tr> <td id="T1-6">T1-6</td> <td><a href="#LS-F2">LS-F2</a></td> <td>Activate the camera from within the app. Verify that the camera preview is correct when the device is folded and unfolded and rotated to portrait and landscape orientations. With the device unfolded, verify that the preview is correct on front and back screens.</td> </tr> <tr> <td>Drag and drop</td> <td id="T1-7">T1-7</td> <td><a href="#LS-D1">LS-D1</a></td> <td>Drag and drop images and text to drop targets within the app. In multi-window mode, drag and drop images and text between the app and another app (to and from both apps). Drag and drop the content using touch input, mouse, trackpad, and stylus (see also <a href="#T1-16">T1-16</a>). Verify the functionality in portrait and landscape orientations and when the device is in a folded or unfolded state.</td> </tr> <tr> <td rowspan="7">Keyboard, mouse, and trackpad</td> <td id="T1-8">T1-8</td> <td><a href="#LS-I10">LS-I10</a></td> <td>Change the app's keyboard shortcuts. Test the revised shortcuts using an external keyboard.</td> </tr> <tr> <td id="T1-9">T1-9</td> <td><a href="#LS-I11">LS-I11</a></td> <td>Using an external keyboard, mouse, and trackpad, select items in the app's UI. Select multiple separated items and ranges of adjacent items using keyboard/mouse/trackpad actions such as <kbd>Ctrl</kbd>+click, <kbd>Ctrl</kbd>+tap, <kbd>Shift</kbd>+click, and <kbd>Shift</kbd>+tap.</td> </tr> <tr> <td id="T1-10">T1-10</td> <td><a href="#LS-I12">LS-I12</a></td> <td>Scroll app content using a mouse and trackpad. Verify that a scrollbar appears while the content is scrolling.</td> </tr> <tr> <td id="T1-11">T1-11</td> <td><a href="#LS-I13">LS-I13</a></td> <td>Using a mouse and trackpad, hover the pointer over UI elements that contain cascading or pop-up content. Verify that the additional content is revealed.</td> </tr> <tr> <td id="T1-12">T1-12</td> <td><a href="#LS-I14">LS-I14</a></td> <td>On laptop and desktop displays, verify that desktop-style menus and context menus are used.</td> </tr> <tr> <td id="T1-13">T1-13</td> <td><a href="#LS-I15">LS-I15</a></td> <td>On each app screen, resize and rearrange UI panels using a mouse and trackpad.</td> </tr> <tr> <td id="T1-14">T1-14</td> <td><a href="#LS-I16">LS-I16</a></td> <td>Using a mouse and trackpad, triple click or tap to select items in the app, for example, to select full lines of text.</td> </tr> <tr> <td rowspan="3">Stylus</td> <td id="T1-15">T1-15</td> <td><a href="#LS-S2">LS-S2</a></td> <td>Draw and write within the app using a stylus. Erase drawings and writing using the stylus.</td> </tr> <tr> <td id="T1-16">T1-16</td> <td><a href="#LS-S3">LS-S3</a></td> <td>Using a stylus, drag and drop content to drop targets within the app. In multi-window mode, drag and drop content between the app and another app (to and from both apps).</td> </tr> <tr> <td id="T1-17">T1-17</td> <td><a href="#LS-S4">LS-S4</a></td> <td><p>Interact with the app using a stylus as follows:</p> <ul> <li>As you draw, observe the latency between the current stylus position and the last rendered stroke.</li> <li>Draw with varying amounts of stylus pressure. Check whether the width of the strokes changes as the pressure changes. More pressure should produce thicker strokes.</li> <li>Tilt the stylus as you draw; shading strokes should be produced. The more the stylus is tilted, the wider and lighter the shading strokes should be.</li> <li>Let your fingers and palm touch the screen as you draw. The finger and palm touches should not produce marks.</li> </ul> </td> </tr> <tr> <td>Custom cursors</td> <td id="T1-18">T1-18</td> <td><a href="#LS-P1">LS-P1</a></td> <td><p>Interact with the app using a mouse and trackpad. Verify that custom cursors appear where appropriate, for example:</p> <ul> <li>I-beam for text entry fields</li> <li>Resize handles at resizable layer edges</li> <li>Spinners when app is performing long-running tasks</li> </ul></td> </tr> </table> <devsite-hats-survey class="nocontent" hats-id="VxqvKSur40kxBYCLVTd0SSGykbno" listnr-id="5207477"></devsite-hats-survey> </div> <devsite-recommendations display="in-page" hidden yield> </devsite-recommendations> <devsite-thumb-rating position="footer"> </devsite-thumb-rating> <devsite-recommendations id="recommendations-link" yield></devsite-recommendations> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-content-footer class="nocontent"> <p>Content and code samples on this page are subject to the licenses described in the <a href="/license">Content License</a>. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.</p> <p>Last updated 2024-12-05 UTC.</p> </devsite-content-footer> <devsite-notification link="https://google.qualtrics.com/jfe/form/SV_cRR9tonbkUQYb5Q?link=dac" link-text="Take survey" message="Please help us improve the Android Developer experience by taking a short survey." > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-content-data-template"> [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-12-05 UTC."],[],[]] </template> </div> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> <nav class="devsite-footer-promos nocontent" aria-label="Promotions"> <ul class="devsite-footer-promos-list"> <li class="devsite-footer-promo"> <a href="//x.com/AndroidDev" class="devsite-footer-promo-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer X Promo" > <picture> <source class="devsite-dark-theme" srcset="https://developer.android.com/_static/android/images/logo-x_dt.svg" media="(prefers-color-scheme: dark)" loading="lazy" alt="X"> <img class="devsite-footer-promo-icon" src="/_static/android/images/logo-x.svg" loading="lazy" alt="X"> </picture> <span class="devsite-footer-promo-label"> X </span> </a> <div class="devsite-footer-promo-description">Follow @AndroidDev on X</div> </li> <li class="devsite-footer-promo"> <a href="//www.youtube.com/user/androiddevelopers" class="devsite-footer-promo-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer YouTube Promo" > <picture> <source class="devsite-dark-theme" srcset="https://developer.android.com/_static/android/images/logo-youtube_dt.svg" media="(prefers-color-scheme: dark)" loading="lazy" alt="YouTube"> <img class="devsite-footer-promo-icon" src="//www.gstatic.com/images/icons/material/product/2x/youtube_48dp.png" loading="lazy" alt="YouTube"> </picture> <span class="devsite-footer-promo-label"> YouTube </span> </a> <div class="devsite-footer-promo-description">Check out Android Developers on YouTube</div> </li> <li class="devsite-footer-promo"> <a href="//www.linkedin.com/showcase/androiddev" class="devsite-footer-promo-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer LinkedIn Promo" > <picture> <source class="devsite-dark-theme" srcset="https://developer.android.com/_static/android/images/logo-linkedin_dt.svg" media="(prefers-color-scheme: dark)" loading="lazy" alt="LinkedIn"> <img class="devsite-footer-promo-icon" src="/_static/android/images/logo-linkedin.svg" loading="lazy" alt="LinkedIn"> </picture> <span class="devsite-footer-promo-label"> LinkedIn </span> </a> <div class="devsite-footer-promo-description">Connect with the Android Developers community on LinkedIn</div> </li> </ul> </nav> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> <ul class="devsite-footer-linkboxes-list"> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">More Android</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//www.android.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Android </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//www.android.com/enterprise/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Android for Enterprise </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//www.android.com/security-center/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Security </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//source.android.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Source </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/news" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > News </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//android-developers.googleblog.com/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" > Blog </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/podcasts" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 7)" > Podcasts </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Discover</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/games" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Gaming </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/ml" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Machine Learning </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/health-and-fitness" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Health & Fitness </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/media" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Camera & Media </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/privacy" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Privacy </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/training/connectivity/5g" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" > 5G </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Android Devices</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/large-screens" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Large screens </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/wear" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Wear OS </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/chrome-os" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > ChromeOS devices </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/cars" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Android for cars </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/tv" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Android TV </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Releases</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/15" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Android 15 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/14" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Android 14 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/13" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Android 13 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/12" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Android 12 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/11" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Android 11 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/10" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" > Android 10 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/pie" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 7)" > Pie </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Documentation and Downloads</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/studio/intro" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Android Studio guide </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/guide" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Developers guides </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/reference" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > API reference </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/studio" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Download Studio </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/ndk" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Android NDK </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Support</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//issuetracker.google.com/issues/new?component=190923&template=841312" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Report platform bug </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//issuetracker.google.com/issues/new?component=192697" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Report documentation bug </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//support.google.com/googleplay/android-developer" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Google Play support </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://g.co/userresearch/androiddeveloperfooter" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Join research studies </a> </li> </ul> </li> </ul> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-sites" aria-label="Other Google Developers websites"> <a href="https://developers.google.com/" class="devsite-footer-sites-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Developers Link"> <picture> <source srcset="https://www.gstatic.com/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/android/images/lockup-google-for-developers-dark-theme.svg" media="(prefers-color-scheme: none)" class="devsite-dark-theme" loading="lazy" alt="Google Developers"> <img class="devsite-footer-sites-logo" src="https://www.gstatic.com/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/android/images/lockup-google-for-developers.svg" loading="lazy" alt="Google Developers"> </picture> </a> <ul class="devsite-footer-sites-list"> <li class="devsite-footer-sites-item"> <a href="//developer.android.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Android Link" > Android </a> </li> <li class="devsite-footer-sites-item"> <a href="//developer.chrome.com/home" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Chrome Link" > Chrome </a> </li> <li class="devsite-footer-sites-item"> <a href="//firebase.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Firebase Link" > Firebase </a> </li> <li class="devsite-footer-sites-item"> <a href="//cloud.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Cloud Platform Link" > Google Cloud Platform </a> </li> <li class="devsite-footer-sites-item"> <a href="//developers.google.com/products/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer All products Link" > All products </a> </li> </ul> </nav> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="/license" data-category="Site-Wide Custom Events" data-label="Footer License link" > License </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="/distribute/marketing-tools/brand-guidelines" data-category="Site-Wide Custom Events" data-label="Footer Brand guidelines link" > Brand guidelines </a> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> <li class="devsite-footer-utility-item devsite-footer-utility-button"> <span class="devsite-footer-utility-description">Get news and tips by email</span> <a class="devsite-footer-utility-link gc-analytics-event" href="/updates" data-category="Site-Wide Custom Events" data-label="Footer Subscribe link" > Subscribe </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip ></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[]</script> <script type="application/json" tag-management>{"at": "True", "ga4": [{"id": "G-QFRN08RN6E", "purpose": 0}], "ga4p": [{"id": "G-QFRN08RN6E", "purpose": 0}], "gtm": [{"id": "GTM-KMSWPCJ", "purpose": 0}], "parameters": {"internalUser": "False", "language": {"machineTranslated": "False", "requested": "en", "served": "en"}, "pageType": "article", "projectName": "App quality", "signedIn": "False", "tenant": "android", "recommendations": {"sourcePage": "", "sourceType": 0, "sourceRank": 0, "sourceIdenticalDescriptions": 0, "sourceTitleWords": 0, "sourceDescriptionWords": 0, "experiment": ""}, "experiment": {"ids": ""}}}</script> </devsite-analytics> <devsite-badger></devsite-badger> <android-fully-clickable target=" .android-case-study .devsite-landing-row-item, .android-grouped-resources .devsite-landing-row-item, .android-grouped-resources-contained--primary .devsite-landing-row-item, .android-grouped-resources-contained--secondary .devsite-landing-row-item, .android-grouped-resources-contained--tertiary .devsite-landing-row-item, .android-grouped-resources-uncontained--primary .devsite-landing-row-item, .android-grouped-resources-uncontained--secondary .devsite-landing-row-item, .android-grouped-resources-uncontained--tertiary .devsite-landing-row-item, .android-guide-cards .devsite-landing-row-item, .android-illustrated-resources-index .devsite-landing-row-item, .android-illustrated-resources-primary .devsite-landing-row-item, .android-illustrated-resources-secondary .devsite-landing-row-item, .android-illustrated-resources-secondary-small .devsite-landing-row-item, .android-illustrated-resources-tertiary .devsite-landing-row-item, .android-illustrated-resources-tertiary-small .devsite-landing-row-item, .android-promo .devsite-landing-row-item, .android-quick-link, .android-samples .devsite-card-wrapper, .fully-clickable" watch=".android-samples, devsite-content"></android-fully-clickable> <script nonce="9KVv9gG5wABfMBqGUO3uaA50wX4dGo"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.com/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/android/js/app_loader.js', '[3,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f","https://www.gstatic.com/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/android","https://android-dot-devsite-v2-prod.appspot.com",null,null,["/_pwa/android/manifest.json","https://www.gstatic.com/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/android/images/favicon.svg","https://www.gstatic.com/devrel-devsite/prod/v38a693baeb774512feb42f10aac8f755d8791ed41119b5be7a531f8e16f8279f/android/images/lockup.svg","https://fonts.googleapis.com/css?family=Google+Sans:400,500,600,700|Google+Sans+Text:400,400italic,500,500italic,600,600italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,116,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyAP-jjEJBzmIyKR4F-3XITp8yM9T1gEEI8","AIzaSyB6xiKGDR5O3Ak2okS4rLkauxGUG7XP0hg","developer.android.com","AIzaSyAQk0fBONSGUqCNznf6Krs82Ap1-NV6J4o","AIzaSyCCxcqdrZ_7QMeLCRY20bh_SXdAYqy70KY",null,null,null,["Cloud__enable_cloud_facet_chat","Profiles__enable_profile_collections","Search__enable_ai_eligibility_checks","Cloud__enable_cloudx_experiment_ids","Profiles__enable_stripe_subscription_management","Cloud__enable_llm_concierge_chat","Cloud__enable_free_trial_server_call","MiscFeatureFlags__enable_firebase_utm","Cloud__enable_cloudx_ping","MiscFeatureFlags__enable_variable_operator","Analytics__enable_clearcut_logging","TpcFeatures__enable_unmirrored_page_left_nav","Significatio__enable_by_tenant","MiscFeatureFlags__developers_footer_image","BookNav__enable_tenant_cache_key","MiscFeatureFlags__enable_view_transitions","Profiles__enable_developer_profiles_callout","Profiles__enable_complete_playlist_endpoint","Search__enable_page_map","MiscFeatureFlags__enable_project_variables","Profiles__enable_dashboard_curated_recommendations","Profiles__enable_completecodelab_endpoint","Cloud__enable_cloud_shell","TpcFeatures__enable_mirror_tenant_redirects","DevPro__enable_cloud_innovators_plus","CloudShell__cloud_code_overflow_menu","Profiles__enable_page_saving","MiscFeatureFlags__enable_explain_this_code","Search__enable_dynamic_content_confidential_banner","Cloud__enable_legacy_calculator_redirect","MiscFeatureFlags__developers_footer_dark_image","Concierge__enable_pushui","DevPro__enable_developer_subscriptions","Profiles__enable_public_developer_profiles","Search__enable_ai_search_summaries","Profiles__enable_recognition_badges","MiscFeatureFlags__emergency_css","Profiles__enable_awarding_url","EngEduTelemetry__enable_engedu_telemetry","CloudShell__cloud_shell_button","Profiles__require_profile_eligibility_for_signin","Profiles__enable_completequiz_endpoint","Cloud__enable_cloud_dlp_service","Profiles__enable_release_notes_notifications","Search__enable_suggestions_from_borg","MiscFeatureFlags__enable_dark_theme","Cloud__enable_cloud_shell_fte_user_flow","Experiments__reqs_query_experiments","Profiles__enable_join_program_group_endpoint"],null,null,"AIzaSyBLEMok-5suZ67qRPzx0qUtbnLmyT_kCVE","https://developerscontentserving-pa.googleapis.com","AIzaSyCM4QpTRSqP5qI4Dvjt4OAScIN8sOUlO-k","https://developerscontentsearch-pa.googleapis.com",2,4,null,"https://developerprofiles-pa.googleapis.com",[3,"android","Android Developers","developer.android.com",null,"android-dot-devsite-v2-prod.appspot.com",null,null,[null,1,null,null,null,null,null,null,null,null,null,[1],null,null,null,null,null,null,[1],[1,null,null,[1,20],"/recommendations"],null,null,null,[1,null,1],[1,1,null,1,1]],null,[18,null,null,null,null,null,"/images/lockup.svg","/images/touchicon-180.png",null,null,null,null,null,null,null,null,null,null,null,null,null,2,null,null,null,"/images/lockup-dark-theme.svg",[]],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[6,1,14,15,20,22,23,28,29,37,43],null,[[null,null,1],[1,1]],[[null,null,null,null,null,null,null,[["G-QFRN08RN6E"],null,null,[["G-QFRN08RN6E",1]]],null,null,null,null,1],null,[[1,1],[2,2]]],null,4,null,null,null,null,null,null,null,null,null,null,null,null,null,"android.devsite.google"],null,"pk_live_5170syrHvgGVmSx9sBrnWtA5luvk9BwnVcvIi7HizpwauFG96WedXsuXh790rtij9AmGllqPtMLfhe2RSwD6Pn38V00uBCydV4m",1]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>