CINXE.COM

Android Debug Bridge (adb)  |  Android Studio  |  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/tools/adb"><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/tools/adb" /><link rel="alternate" hreflang="x-default" href="https://developer.android.com/tools/adb" /><link rel="alternate" hreflang="ar" href="https://developer.android.com/tools/adb?hl=ar" /><link rel="alternate" hreflang="bn" href="https://developer.android.com/tools/adb?hl=bn" /><link rel="alternate" hreflang="zh-Hans" href="https://developer.android.com/tools/adb?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://developer.android.com/tools/adb?hl=zh-tw" /><link rel="alternate" hreflang="fa" href="https://developer.android.com/tools/adb?hl=fa" /><link rel="alternate" hreflang="fr" href="https://developer.android.com/tools/adb?hl=fr" /><link rel="alternate" hreflang="de" href="https://developer.android.com/tools/adb?hl=de" /><link rel="alternate" hreflang="he" href="https://developer.android.com/tools/adb?hl=he" /><link rel="alternate" hreflang="hi" href="https://developer.android.com/tools/adb?hl=hi" /><link rel="alternate" hreflang="id" href="https://developer.android.com/tools/adb?hl=id" /><link rel="alternate" hreflang="it" href="https://developer.android.com/tools/adb?hl=it" /><link rel="alternate" hreflang="ja" href="https://developer.android.com/tools/adb?hl=ja" /><link rel="alternate" hreflang="ko" href="https://developer.android.com/tools/adb?hl=ko" /><link rel="alternate" hreflang="pl" href="https://developer.android.com/tools/adb?hl=pl" /><link rel="alternate" hreflang="pt-BR" href="https://developer.android.com/tools/adb?hl=pt-br" /><link rel="alternate" hreflang="ru" href="https://developer.android.com/tools/adb?hl=ru" /><link rel="alternate" hreflang="es-419" href="https://developer.android.com/tools/adb?hl=es-419" /><link rel="alternate" hreflang="th" href="https://developer.android.com/tools/adb?hl=th" /><link rel="alternate" hreflang="tr" href="https://developer.android.com/tools/adb?hl=tr" /><link rel="alternate" hreflang="vi" href="https://developer.android.com/tools/adb?hl=vi" /><title>Android Debug Bridge (adb) &nbsp;|&nbsp; Android Studio &nbsp;|&nbsp; Android Developers</title> <meta property="og:title" content="Android Debug Bridge (adb) &nbsp;|&nbsp; Android Studio &nbsp;|&nbsp; Android Developers"><meta name="description" content="Find out about the Android Debug Bridge, a versatile command-line tool that lets you communicate with a device."> <meta property="og:description" content="Find out about the Android Debug Bridge, a versatile command-line tool that lets you communicate with a device."><meta property="og:url" content="https://developer.android.com/tools/adb"><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": "Android Debug Bridge (adb)" } </script><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "Android Studio", "item": "https://developer.android.com/studio" },{ "@type": "ListItem", "position": 2, "name": "Android Debug Bridge (adb)", "item": "https://developer.android.com/tools/adb" }] } </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&#39;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 "> <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 &amp; plan" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Design &amp; Plan" track-name="design &amp; plan" > Design &amp; Plan </a> <button aria-haspopup="menu" aria-expanded="false" aria-label="Dropdown menu for Design &amp; Plan" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design" track-metadata-position="nav - design &amp; plan" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Design &amp; Plan" track-name="design &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 devsite-active "> <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" aria-label="Develop, selected" 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="Android Studio" 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/studio" 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="Android Studio" > Android Studio </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/studio" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://developer.android.com/studio" track-type="nav" track-metadata-position="nav - download" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Download" track-name="download" > Download </a> </tab> <tab > <a href="https://developer.android.com/studio/intro" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://developer.android.com/studio/intro" track-type="nav" track-metadata-position="nav - android studio editor" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Android Studio editor" track-name="android studio editor" > Android Studio editor </a> </tab> <tab > <a href="https://developer.android.com/gemini-in-android" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://developer.android.com/gemini-in-android" track-type="nav" track-metadata-position="nav - gemini in android studio" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Gemini in Android Studio" track-name="gemini in android studio" > Gemini in Android Studio </a> </tab> <tab > <a href="https://developer.android.com/build/gradle-build-overview" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://developer.android.com/build/gradle-build-overview" track-type="nav" track-metadata-position="nav - android gradle plugin" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Android Gradle Plugin" track-name="android gradle plugin" > Android Gradle Plugin </a> </tab> <tab class="devsite-active"> <a href="https://developer.android.com/tools" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://developer.android.com/tools" track-type="nav" track-metadata-position="nav - sdk tools" track-metadata-module="primary nav" aria-label="SDK tools, selected" data-category="Site-Wide Custom Events" data-label="Tab: SDK tools" track-name="sdk tools" > SDK tools </a> </tab> <tab > <a href="https://developer.android.com/studio/preview" class="devsite-tabs-content gc-analytics-event " track-metadata-eventdetail="https://developer.android.com/studio/preview" track-type="nav" track-metadata-position="nav - preview" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Preview" track-name="preview" > Preview </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 " data-category="Site-Wide Custom Events" data-label="Tab: Design &amp; Plan" track-name="design &amp; plan" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Design &amp; Plan" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Design &amp; 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 &amp; Plan" track-name="design &amp; plan" > <span class="devsite-nav-text" tooltip menu="Design &amp; Plan"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Design &amp; Plan"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/develop" class="devsite-nav-title gc-analytics-event devsite-nav-active" 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> <ul class="devsite-nav-responsive-tabs"> <li class="devsite-nav-item"> <a href="/studio" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Download" track-name="download" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Download" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Download </span> </a> </li> <li class="devsite-nav-item"> <a href="/studio/intro" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Android Studio editor" track-name="android studio editor" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android Studio editor" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android Studio editor </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </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="Tab: Gemini in Android Studio" track-name="gemini in android studio" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Gemini in Android Studio" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Gemini in Android Studio </span> </a> </li> <li class="devsite-nav-item"> <a href="/build/gradle-build-overview" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Android Gradle Plugin" track-name="android gradle plugin" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android Gradle Plugin" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android Gradle Plugin </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/tools" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: SDK tools" track-name="sdk tools" data-category="Site-Wide Custom Events" data-label="Responsive Tab: SDK tools" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip menu="_book"> SDK tools </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="_book"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/studio/preview" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Preview" track-name="preview" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Preview" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Preview </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </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 devsite-nav-expandable devsite-nav-accordion"><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>What&#39;s new in SDK Tools</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/tools/releases/build-tools" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/releases/build-tools" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/releases/build-tools" ><span class="devsite-nav-text" tooltip>SDK build tools release notes</span></a></li><li class="devsite-nav-item"><a href="/tools/releases/cmdline-tools" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/releases/cmdline-tools" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/releases/cmdline-tools" ><span class="devsite-nav-text" tooltip>SDK command line tools release notes</span></a></li><li class="devsite-nav-item"><a href="/tools/releases/platforms" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/releases/platforms" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/releases/platforms" ><span class="devsite-nav-text" tooltip>SDK platform release notes</span></a></li><li class="devsite-nav-item"><a href="/tools/releases/platform-tools" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/releases/platform-tools" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/releases/platform-tools" ><span class="devsite-nav-text" tooltip>SDK platform tools release notes</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><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>Command line tools</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/tools" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/tools/aapt2" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/aapt2" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/aapt2" ><span class="devsite-nav-text" tooltip>aapt2</span></a></li><li class="devsite-nav-item"><a href="/tools/adb" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/adb" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/adb" ><span class="devsite-nav-text" tooltip>adb</span></a></li><li class="devsite-nav-item"><a href="/tools/apkanalyzer" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/apkanalyzer" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/apkanalyzer" ><span class="devsite-nav-text" tooltip>apkanalyzer</span></a></li><li class="devsite-nav-item"><a href="/tools/apksigner" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/apksigner" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/apksigner" ><span class="devsite-nav-text" tooltip>apksigner</span></a></li><li class="devsite-nav-item"><a href="/tools/avdmanager" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/avdmanager" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/avdmanager" ><span class="devsite-nav-text" tooltip>avdmanager</span></a></li><li class="devsite-nav-item"><a href="/tools/bmgr" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/bmgr" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/bmgr" ><span class="devsite-nav-text" tooltip>bmgr</span></a></li><li class="devsite-nav-item"><a href="/tools/bundletool" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/bundletool" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/bundletool" ><span class="devsite-nav-text" tooltip>bundletool</span></a></li><li class="devsite-nav-item"><a href="/tools/d8" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/d8" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/d8" ><span class="devsite-nav-text" tooltip>d8</span></a></li><li class="devsite-nav-item"><a href="/tools/dmtracedump" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/dmtracedump" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/dmtracedump" ><span class="devsite-nav-text" tooltip>dmtracedump</span></a></li><li class="devsite-nav-item"><a href="/tools/dumpsys" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/dumpsys" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/dumpsys" ><span class="devsite-nav-text" tooltip>dumpsys</span></a></li><li class="devsite-nav-item"><a href="/tools/etc1tool" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/etc1tool" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/etc1tool" ><span class="devsite-nav-text" tooltip>etc1tool</span></a></li><li class="devsite-nav-item"><a href="/tools/jobb" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/jobb" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/jobb" ><span class="devsite-nav-text" tooltip>jobb</span></a></li><li class="devsite-nav-item"><a href="/tools/jetifier" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/jetifier" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/jetifier" ><span class="devsite-nav-text" tooltip>jetifier-standalone</span></a></li><li class="devsite-nav-item"><a href="/tools/logcat" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/logcat" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/logcat" ><span class="devsite-nav-text" tooltip>logcat</span></a></li><li class="devsite-nav-item"><a href="/tools/mksdcard" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/mksdcard" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/mksdcard" ><span class="devsite-nav-text" tooltip>mksdcard</span></a></li><li class="devsite-nav-item"><a href="/tools/retrace" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/retrace" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/retrace" ><span class="devsite-nav-text" tooltip>retrace</span></a></li><li class="devsite-nav-item"><a href="/tools/sdkmanager" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/sdkmanager" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/sdkmanager" ><span class="devsite-nav-text" tooltip>sdkmanager</span></a></li><li class="devsite-nav-item"><a href="/tools/sqlite3" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/sqlite3" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/sqlite3" ><span class="devsite-nav-text" tooltip>sqlite3</span></a></li><li class="devsite-nav-item"><a href="/topic/performance/tracing/command-line" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /topic/performance/tracing/command-line" track-type="bookNav" track-name="click" track-metadata-eventdetail="/topic/performance/tracing/command-line" ><span class="devsite-nav-text" tooltip>systrace ⍈</span></a></li><li class="devsite-nav-item"><a href="/tools/perfetto" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/perfetto" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/perfetto" ><span class="devsite-nav-text" tooltip>perfetto</span></a></li><li class="devsite-nav-item"><a href="/tools/zipalign" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/zipalign" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/zipalign" ><span class="devsite-nav-text" tooltip>zipalign</span></a></li><li class="devsite-nav-item"><a href="/tools/variables" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /tools/variables" track-type="bookNav" track-name="click" track-metadata-eventdetail="/tools/variables" ><span class="devsite-nav-text" tooltip>Environment variables</span></a></li></ul></div></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 &amp; media" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Camera &amp; 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 &amp; messaging" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Social &amp; 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 &amp; fitness" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Health &amp; 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 &amp; Compose libraries" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Jetpack &amp; 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 &amp; 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/develop" 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="" > Develop </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developer.android.com/studio" 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="Android Studio" > Android Studio </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developer.android.com/tools" 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="" > SDK tools </a> </li> </ul> <devsite-thumb-rating position="header"> </devsite-thumb-rating> </div> <h1 class="devsite-page-title" tabindex="-1"> Android Debug Bridge (adb) </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 "> <p>Android Debug Bridge (<code translate="no" dir="ltr">adb</code>) is a versatile command-line tool that lets you communicate with a device. The <code translate="no" dir="ltr">adb</code> command facilitates a variety of device actions, such as installing and debugging apps. <code translate="no" dir="ltr">adb</code> provides access to a Unix shell that you can use to run a variety of commands on a device. It is a client-server program that includes three components: </p> <ul> <li><b>A client</b>, which sends commands. The client runs on your development machine. You can invoke a client from a command-line terminal by issuing an <code translate="no" dir="ltr">adb</code> command.</li> <li><b>A daemon (adbd)</b>, which runs commands on a device. The daemon runs as a background process on each device.</li> <li><b>A server</b>, which manages communication between the client and the daemon. The server runs as a background process on your development machine.</li> </ul> <p><code translate="no" dir="ltr">adb</code> is included in the Android SDK Platform Tools package. Download this package with the <a href="/studio/intro/update#sdk-manager">SDK Manager</a>, which installs it at <code translate="no" dir="ltr"><var translate="no">android_sdk</var>/platform-tools/</code>. If you want the standalone Android SDK Platform Tools package, <a href="/studio/releases/platform-tools">download it here</a>. </p> <p>For information on connecting a device for use over <code translate="no" dir="ltr">adb</code>, including how to use the Connection Assistant to troubleshoot common problems, see <a href="/studio/run/device">Run apps on a hardware device</a>.</p> <h2 id="howadbworks" data-text="How adb works" tabindex="-1">How adb works</h2> <p> When you start an <code translate="no" dir="ltr">adb</code> client, the client first checks whether there is an <code translate="no" dir="ltr">adb</code> server process already running. If there isn't, it starts the server process. When the server starts, it binds to local TCP port 5037 and listens for commands sent from <code translate="no" dir="ltr">adb</code> clients.</p> <p class="note"><strong>Note:</strong> All <code translate="no" dir="ltr">adb</code> clients use port 5037 to communicate with the <code translate="no" dir="ltr">adb</code> server.</p> <p>The server then sets up connections to all running devices. It locates emulators by scanning odd-numbered ports in the range 5555 to 5585, which is the range used by the first 16 emulators. Where the server finds an <code translate="no" dir="ltr">adb</code> daemon (adbd), it sets up a connection to that port.</p> <p>Each emulator uses a pair of sequential ports &mdash; an even-numbered port for console connections and an odd-numbered port for <code translate="no" dir="ltr">adb</code> connections. For example: </p> <p style="margin-left:2em"> Emulator 1, console: 5554<br/> Emulator 1, <code translate="no" dir="ltr">adb</code>: 5555<br> Emulator 2, console: 5556<br> Emulator 2, <code translate="no" dir="ltr">adb</code>: 5557<br> and so on. </p> <p>As shown, the emulator connected to <code translate="no" dir="ltr">adb</code> on port 5555 is the same as the emulator whose console listens on port 5554. </p> <p>Once the server has set up connections to all devices, you can use <code translate="no" dir="ltr">adb</code> commands to access those devices. Because the server manages connections to devices and handles commands from multiple <code translate="no" dir="ltr">adb</code> clients, you can control any device from any client or from a script.</p> <h2 id="Enabling" data-text="Enable adb debugging on your device" tabindex="-1">Enable adb debugging on your device</h2> <p>To use adb with a device connected over USB, you must enable <b>USB debugging</b> in the device system settings, under <b> Developer options</b>. On Android 4.2 (API level 17) and higher, the <b>Developer options</b> screen is hidden by default. To make it visible, <a href="/studio/debug/dev-options#enable">enable Developer options.</a></p> <p>You can now connect your device with USB. You can verify that your device is connected by executing <code translate="no" dir="ltr">adb devices</code> from the <code translate="no" dir="ltr"><var translate="no">android_sdk</var>/platform-tools/</code> directory. If connected, you'll see the device name listed as a "device."</p> <p class="note"><strong>Note:</strong> When you connect a device running Android 4.2.2 (API level 17) or higher, the system shows a dialog asking whether to accept an RSA key that allows debugging through this computer. This security mechanism protects user devices because it ensures that USB debugging and other adb commands cannot be executed unless you're able to unlock the device and acknowledge the dialog.</p> <p>For more information about connecting to a device over USB, read <a href="/studio/run/device">Run apps on a hardware device</a>.</p> <a name="wireless-adb-android-11"></a> <h2 id="connect-to-a-device-over-wi-fi" data-text="Connect to a device over Wi-Fi" tabindex="-1">Connect to a device over Wi-Fi</h2> <p class="note"><strong>Note:</strong> The instructions below do not apply to Wear devices running Android 11 (API level 30). See the guide to <a href="/training/wearables/get-started/debugging#wifi-debugging">debugging a Wear OS app</a> for more information.</p> <p>Android 11 (API level 30) and higher support deploying and debugging your app wirelessly from your workstation using Android Debug Bridge (adb). For example, you can deploy your debuggable app to multiple remote devices without ever needing to physically connect your device via USB. This eliminates the need to deal with common USB connection issues, such as driver installation.</p> <p>Before you begin using wireless debugging, do the following:</p> <ul> <li> <p>Ensure that your workstation and device are connected to the same wireless network.</p> </li> <li> <p>Ensure that your device is running Android 11 (API level 30) or higher for phone or Android 13 (API level 33) or higher for TV and WearOS. For more information, see <a href="https://support.google.com/android/answer/7680439">Check &amp; update your Android version</a>.</p> </li> <li> <p>If using the IDE, ensure that you have the latest version of Android Studio installed. You can download it <a href="/studio">here</a>.</p> </li> <li> <p>On your workstation, update to the latest version of the <a href="/studio/releases/platform-tools">SDK Platform Tools</a>.</p> </li> </ul> <p>To use wireless debugging, you must pair your device to your workstation using a QR code or a pairing code. Your workstation and device must be connected to the same wireless network. To connect to your device, follow these steps:</p> <ol> <li> <p><a href="/studio/debug/dev-options#enable">Enable developer options</a> on your device.</p> </li> <li> <p>Open Android Studio and select <b>Pair Devices Using Wi-Fi</b> from the run configurations menu.</p> <div> <figure> <img class="screenshot" src="/static/studio/images/run/adb_wifi-pair_device.png" alt="Run configurations dropdown menu"> <div class="caption"><b>Figure 1.</b> Run configurations menu.</div> </figure> </div> <p>The <b>Pair devices over Wi-Fi</b> window pops up, as shown in figure 2. <div> <figure> <img class="screenshot" src="/static/studio/images/run/adb_wifi-qr_code_scan.png" alt="Screenshot of the pair devices over Wi-Fi popup window"> <div class="caption"><b>Figure 2.</b> Popup window to pair devices using QR code or pairing code.</div> </figure> </div> </li> <li> <p>On your device, tap <b>Wireless debugging</b> and pair your device:</p> <div> <figure> <img class="screenshot" src="/static/studio/images/run/adb_wifi-wireless_debugging.png" alt="Screenshot of a pixel phone showing the Wireless debugging systems setting."> <div class="caption"><b>Figure 3.</b> Screenshot of the <b>Wireless debugging</b> setting on a Google Pixel phone.</div> </figure> </div> <ol> <li> <p>To pair your device with a QR code, select <b>Pair device with QR code</b> and scan the QR code obtained from the <b>Pair devices over Wi-Fi</b> popup shown in figure 2.</p> </li> <li> <p>To pair your device with a pairing code, select <b>Pair device with pairing code</b> from the <b>Pair devices over Wi-Fi</b> popup. On your device, select <b>Pair using pairing code</b> and take note of the six-digit code provided. Once your device appears on the <b>Pair devices over Wi-Fi</b> window, you can select <b>Pair</b> and enter the six-digit code shown on your device.</p> <div> <figure> <img class="screenshot" src="/static/studio/images/run/adb_wifi-pin_code_entry.png" alt="Screenshot of example pin code entry"> <div class="caption"><b>Figure 4.</b> Example of six-digit code entry.</div> </figure> </div> </li> </ol> </li> <li> <p>After your device is paired, you can attempt to deploy your app to your device.</p> <p>To pair a different device or to forget the current device on your workstation, navigate to <b>Wireless debugging</b> on your device. Tap your workstation name under <b>Paired devices</b> and select <b>Forget</b>.</p> </li> <li> <p>If you want to quickly turn on and off wireless debugging, you can utilize the <a href="/studio/debug/dev-options#general">Quick settings developer tiles</a> for <b>Wireless debugging</b>, found in <b>Developer Options</b> > <b>Quick settings developer tiles</b>.</p> <div> <figure> <img class="screenshot" src="/static/studio/images/run/adb_wifi-quick_settings.png" alt="Screenshot of Quick settings developer tiles from a Google Pixel phone."> <div class="caption"><b>Figure 5.</b> The <b>Quick settings developer tiles</b> setting lets you quickly turn wireless debugging on and off.</div> </figure> </div> </li> </ol> <h3 id="wireless-android11-command-line" data-text="Wi-Fi connection using command line" tabindex="-1">Wi-Fi connection using command line</h3> <p>Alternatively, to connect to your device using command line without Android Studio, follow these steps:</p> <ol> <li> <p>Enable developer options on your device, as described earlier.</p> </li> <li> <p>Enable <b>Wireless debugging</b> on your device, as described earlier.</p> </li> <li> <p>On your workstation, open a terminal window and navigate to <code translate="no" dir="ltr">android_sdk/platform-tools</code>.</p> </li> <li> <p>Find your IP address, port number, and pairing code by selecting <b>Pair device with pairing code</b>. Take note of the IP address, port number, and pairing code displayed on the device.</p> </li> <li> <p>On your workstation's terminal, run <code translate="no" dir="ltr">adb pair ipaddr:port</code>. Use the IP address and port number from above.</p> </li> <li> <p>When prompted, enter the pairing code, as shown below.</p> <figure> <img class="screenshot" src="/static/studio/images/run/adb_wifi-cmd_line_pairing.png" alt="Screenshot of pairing on the command line."> <div class="caption"><b>Figure 6.</b> A message indicates that your device has been successfully paired.</div> </figure> </li> </ol> <h3 id="wireless-android11-troubleshoot" data-text="Resolve wireless connection issues" tabindex="-1">Resolve wireless connection issues</h3> <p>If you are having issues connecting to your device wirelessly, try the following troubleshooting steps to resolve the issue.</p> <h4 id="check-prereqs" data-text="Check whether your workstation and device meet the prerequisites" tabindex="-1">Check whether your workstation and device meet the prerequisites</h4> <p>Check that the workstation and device meet the prerequisites listed at the <a href="#connect-to-a-device-over-wi-fi-android-11+">beginning of this section</a>. </p> <h4 id="check-known-issues" data-text="Check for other known issues" tabindex="-1">Check for other known issues</h4> <p>The following is a list of current known issues with wireless debugging (with adb or Android Studio) and how to resolve them:</p> <ul> <li> <p><b>Wi-Fi is not connecting</b>: Secure Wi-Fi networks, such as corporate Wi-Fi networks, may block p2p connections and not let you connect over Wi-Fi. Try connecting with a cable or another (non-corp) Wi-Fi network. Wireless connection using <code translate="no" dir="ltr">adb connect <var translate="no">ip</var>:<var translate="no">port</var></code> over tcp/ip (following an initial USB connection) is another option, in case resorting to a non-corp network is an option.</p> </li> <li> <p><b><code translate="no" dir="ltr">adb</code> over Wi-Fi sometimes turns off automatically</b>: This can happen if the device either switches Wi-Fi networks or disconnects from the network. To resolve, re-connect to the network.</p> </li> <li> <p><b>Device not connecting after pairing successfully</b>: <code translate="no" dir="ltr">adb</code> relies on mDNS to discover and automatically connect to paired devices. If your network or device configuration does not support mDNS or has disabled it, then you need to manually connect to the device using <code translate="no" dir="ltr">adb connect <var translate="no">ip</var>:<var translate="no">port</var></code>.<p> </li> </ul> <h2 id="wireless" data-text="Connect wirelessly with a device after an initial USB connection (only option available on Android 10 and lower)" tabindex="-1">Connect wirelessly with a device after an initial USB connection (only option available on Android 10 and lower)</h2> <p class="note"><strong>Note:</strong> This workflow is applicable also to Android 11 (and higher), the caveat being that it also involves an *initial* connection over physical USB.</p> <p class="note"><strong>Note:</strong> The following instructions do not apply to Wear devices running Android 10 (API level 29) or lower. See the guide about <a href="/training/wearables/get-started/debugging#wifi-debugging">debugging a Wear OS app</a> for more information.</p> <p><code translate="no" dir="ltr">adb</code> usually communicates with the device over USB, but you can also use <code translate="no" dir="ltr">adb</code> over Wi-Fi. To connect a device running Android 10 (API level 29) or lower, follow these initial steps over USB:</p> <ol> <li> Connect your Android device and <code translate="no" dir="ltr">adb</code> host computer to a common Wi-Fi network.</li> <p class="note"><strong>Note:</strong> Beware that not all access points are suitable. You might need to use an access point whose firewall is configured properly to support <code translate="no" dir="ltr">adb</code>.</p> <li> Connect the device to the host computer with a USB cable. </li> <li> Set the target device to listen for a TCP/IP connection on port 5555: <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb tcpip 5555 </pre></devsite-code> </li> <li> Disconnect the USB cable from the target device. </li> <li> Find the IP address of the Android device. For example, on a Nexus device, you can find the IP address at <strong>Settings</strong> &gt; <strong>About tablet</strong> (or <strong>About phone</strong>) &gt; <strong>Status</strong> &gt; <strong>IP address</strong>. </li> <li> Connect to the device by its IP address: <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb connect <var translate="no">device_ip_address</var>:5555 </pre></devsite-code> </li> <li> Confirm that your host computer is connected to the target device: <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> $ adb devices List of devices attached <var translate="no">device_ip_address</var>:5555 device </pre></devsite-code> </ol> <p> Your device is now connected to <code translate="no" dir="ltr">adb</code>. </p> <p> If the <code translate="no" dir="ltr">adb</code> connection to your device is lost: </p> <ul> <li> Make sure that your host is still connected to the same Wi-Fi network as your Android device. </li> <li> Reconnect by executing the <code translate="no" dir="ltr">adb connect</code> step again. </li> <li> If that doesn't work, reset your <code translate="no" dir="ltr">adb</code> host: <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb kill-server </pre></devsite-code> <p>Then start over from the beginning.</p> </li> </ul> <h2 id="devicestatus" data-text="Query for devices" tabindex="-1">Query for devices</h2> <p>Before issuing <code translate="no" dir="ltr">adb</code> commands, it is helpful to know what device instances are connected to the <code translate="no" dir="ltr">adb</code> server. Generate a list of attached devices using the <code translate="no" dir="ltr">devices</code> command: </p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb devices -l </pre></devsite-code> <p>In response, <code translate="no" dir="ltr">adb</code> prints this status information for each device:</p> <ul> <li><b>Serial number:</b> <code translate="no" dir="ltr">adb</code> creates a string to uniquely identify the device by its port number. Here's an example serial number: <code translate="no" dir="ltr">emulator-5554</code></li> <li><b>State:</b> The connection state of the device can be one of the following: <ul> <li><code translate="no" dir="ltr">offline</code>: The device is not connected to <code translate="no" dir="ltr">adb</code> or is not responding.</li> <li><code translate="no" dir="ltr">device</code>: The device is connected to the <code translate="no" dir="ltr">adb</code> server. Note that this state does not imply that the Android system is fully booted and operational, because the device connects to <code translate="no" dir="ltr">adb</code> while the system is still booting. After boot-up, this is the normal operational state of a device.</li> <li><code translate="no" dir="ltr">no device</code>: There is no device connected. </ul> <li><b>Description:</b> If you include the <code translate="no" dir="ltr">-l</code> option, the <code translate="no" dir="ltr">devices</code> command tells you what the device is. This information is helpful when you have multiple devices connected so that you can tell them apart.</li> </ul> <p>The following example shows the <code translate="no" dir="ltr">devices</code> command and its output. There are three devices running. The first two lines in the list are emulators, and the third line is a hardware device that is attached to the computer.</p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded>$ adb devices List of devices attached emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64 emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x86 0a388e93 device usb:1-1 product:razor model:Nexus_7 device:flo </pre></devsite-code> <h3 id="notlisted" data-text="Emulator not listed" tabindex="-1">Emulator not listed</h3> <p> The <code translate="no" dir="ltr">adb devices</code> command has a corner-case command sequence that causes running emulators to not show up in the <code translate="no" dir="ltr">adb devices</code> output even though the emulators are visible on your desktop. This happens when <i>all</i> of the following conditions are true: </p> <ul> <li>The <code translate="no" dir="ltr">adb</code> server is not running.</li> <li>You use the <code translate="no" dir="ltr">emulator</code> command with the <code translate="no" dir="ltr">-port</code> or <code translate="no" dir="ltr">-ports</code> option with an odd-numbered port value between 5554 and 5584.</li> <li>The odd-numbered port you chose is not busy, so the port connection can be made at the specified port number &mdash; or, if it is busy, the emulator switches to another port that meets the requirements in 2.</li> <li>You start the <code translate="no" dir="ltr">adb</code> server after you start the emulator.</li> </ul> <p> One way to avoid this situation is to let the emulator choose its own ports and to run no more than 16 emulators at once. Another way is to always start the <code translate="no" dir="ltr">adb</code> server before you use the <code translate="no" dir="ltr">emulator</code> command, as explained in the following examples. </p> <p> <b>Example 1:</b> In the following command sequence, the <code translate="no" dir="ltr">adb devices</code> command starts the <code translate="no" dir="ltr">adb</code> server, but the list of devices does not appear. </p> <p> Stop the <code translate="no" dir="ltr">adb</code> server and enter the following commands in the order shown. For the AVD name, provide a valid AVD name from your system. To get a list of AVD names, type <code translate="no" dir="ltr">emulator -list-avds</code>. The <code translate="no" dir="ltr">emulator</code> command is in the <code translate="no" dir="ltr"><var translate="no">android_sdk</var>/tools</code> directory. </p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> $ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5555 $ adb devices List of devices attached * daemon not running. starting it now on port 5037 * * daemon started successfully * </pre></devsite-code> <p> <b>Example 2:</b> In the following command sequence, <code translate="no" dir="ltr">adb devices</code> displays the list of devices because the <code translate="no" dir="ltr">adb</code> server was started first. </p> <p> To see the emulator in the <code translate="no" dir="ltr">adb devices</code> output, stop the <code translate="no" dir="ltr">adb</code> server, and then start it again after using the <code translate="no" dir="ltr">emulator</code> command and before using the <code translate="no" dir="ltr">adb devices</code> command, as follows: </p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> $ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5557 $ adb start-server $ adb devices List of devices attached emulator-5557 device </pre></devsite-code> <p> For more information about emulator command-line options, see <a href="/studio/run/emulator-commandline#startup-options">Command-Line startup options</a>. </p> <h2 id="directingcommands" data-text="Send commands to a specific device" tabindex="-1">Send commands to a specific device</h2> <p>If multiple devices are running, you must specify the target device when you issue the <code translate="no" dir="ltr">adb</code> command. To specify the target, follow these steps: <ol> <li> Use the <code translate="no" dir="ltr">devices</code> command to get the serial number of the target.</li> <li>Once you have the serial number, use the <code translate="no" dir="ltr">-s</code> option with the <code translate="no" dir="ltr">adb</code> commands to specify the serial number. <ol> <li>If you're going to issue a lot of <code translate="no" dir="ltr">adb</code> commands, you can set the <code translate="no" dir="ltr">$ANDROID_SERIAL</code> environment variable to contain the serial number instead.</li> <li>If you use both <code translate="no" dir="ltr">-s</code> and <code translate="no" dir="ltr">$ANDROID_SERIAL</code>, <code translate="no" dir="ltr">-s</code> overrides <code translate="no" dir="ltr">$ANDROID_SERIAL</code>.</li> </ol> </ol> </p> <p> In the following example, the list of attached devices is obtained, and then the serial number of one of the devices is used to install the <code translate="no" dir="ltr">helloWorld.apk</code> on that device: </p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> $ adb devices List of devices attached emulator-5554 device emulator-5555 device 0.0.0.0:6520 device # To install on emulator-5555 $ adb -s emulator-5555 install helloWorld.apk # To install on 0.0.0.0:6520 $ adb -s 0.0.0.0:6520 install helloWorld.apk </pre></devsite-code> <p class="note"><b>Note:</b> If you issue a command without specifying a target device when multiple devices are available, <code translate="no" dir="ltr">adb</code> displays an error "adb: more than one device/emulator". </p> <p>If you have multiple devices available but only one is an emulator, use the <code translate="no" dir="ltr">-e</code> option to send commands to the emulator. If there are multiple devices but only one hardware device attached, use the <code translate="no" dir="ltr">-d</code> option to send commands to the hardware device. </p> <h2 id="move" data-text="Install an app" tabindex="-1">Install an app</h2> <p>You can use <code translate="no" dir="ltr">adb</code> to install an APK on an emulator or connected device with the <code translate="no" dir="ltr">install</code> command:</p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb install <var translate="no">path_to_apk</var> </pre></devsite-code> <p>You must use the <code translate="no" dir="ltr">-t</code> option with the <code translate="no" dir="ltr">install</code> command when you install a test APK. For more information, see <a href="#-t-option"><code translate="no" dir="ltr">-t</code></a>.</p> <p>To install multiple APKs use <code translate="no" dir="ltr">install-multiple</code>. This is useful if you download all the APKs for a specific device for your app from the Play Console and want to install them on an emulator or physical device.</p> <p>For more information about how to create an APK file that you can install on an emulator/device instance, see <a href="/studio/run">Build and run your app</a>.</p> <p class="note"><strong>Note:</strong> If you are using Android Studio, you do not need to use <code translate="no" dir="ltr">adb</code> directly to install your app on the emulator or device. Instead, Android Studio handles the packaging and installation of the app for you. </p> <h2 id="forwardports" data-text="Set up port forwarding" tabindex="-1">Set up port forwarding</h2> <p> Use the <code translate="no" dir="ltr">forward</code> command to set up arbitrary port forwarding, which forwards requests on a specific host port to a different port on a device. The following example sets up forwarding of host port 6100 to device port 7100: </p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb forward tcp:6100 tcp:7100 </pre></devsite-code> <p> The following example sets up forwarding of host port 6100 to local:logd: </p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb forward tcp:6100 local:logd </pre></devsite-code> <p> This could be useful if you are trying to detemine what is being sent to a given port on the device. All received data will be written to the system-logging daemon and displayed in the device logs. </p> <h2 id="copyfiles" data-text="Copy files to and from a device" tabindex="-1">Copy files to and from a device</h2> <p> Use the <code translate="no" dir="ltr">pull</code> and <code translate="no" dir="ltr">push</code> commands to copy files to and from a device. Unlike the <code translate="no" dir="ltr">install</code> command, which only copies an APK file to a specific location, the <code translate="no" dir="ltr">pull</code> and <code translate="no" dir="ltr">push</code> commands let you copy arbitrary directories and files to any location in a device. </p> <p>To copy a file or directory and its sub-directories <i>from</i> the device, do the following: </p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb pull <var translate="no">remote</var> <var translate="no">local</var> </pre></devsite-code> <p>To copy a file or directory and its sub-directories <em>to</em> the device, do the following: </p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb push <var translate="no">local</var> <var translate="no">remote</var> </pre></devsite-code> <p>Replace <code translate="no" dir="ltr"><var translate="no">local</var></code> and <code translate="no" dir="ltr"><var translate="no">remote</var></code> with the paths to the target files/directory on your development machine (local) and on the device (remote). For example:</p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb push myfile.txt /sdcard/myfile.txt </pre></devsite-code> <h2 id="stopping" data-text="Stop the adb server" tabindex="-1">Stop the adb server</h2> <p>In some cases, you might need to terminate the <code translate="no" dir="ltr">adb</code> server process and then restart it to resolve the problem. For example, this could be the case if <code translate="no" dir="ltr">adb</code> does not respond to a command.</p> <p>To stop the <code translate="no" dir="ltr">adb</code> server, use the <code translate="no" dir="ltr">adb kill-server</code> command. You can then restart the server by issuing any other <code translate="no" dir="ltr">adb</code> command. </p> <a name="commandsummary"></a> <h2 id="issuingcommands" data-text="Issue adb commands" tabindex="-1">Issue adb commands</h2> <p>Issue <code translate="no" dir="ltr">adb</code> commands from a command line on your development machine or from a script using the following: </p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb [-d | -e | -s <var translate="no">serial_number</var>] <var translate="no">command</var> </pre></devsite-code> <p>If there's only one emulator running or only one device connected, the <code translate="no" dir="ltr">adb</code> command is sent to that device by default. If multiple emulators are running and/or multiple devices are attached, you need to use the <code translate="no" dir="ltr">-d</code>, <code translate="no" dir="ltr">-e</code>, or <code translate="no" dir="ltr">-s</code> option to specify the target device to which the command should be directed. </p> <p>You can see a detailed list of all supported <code translate="no" dir="ltr">adb</code> commands using the following command:</p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb --help </pre></devsite-code> <h2 id="shellcommands" data-text="Issue shell commands" tabindex="-1">Issue shell commands</h2> <p>You can use the <code translate="no" dir="ltr">shell</code> command to issue device commands through <code translate="no" dir="ltr">adb</code> or to start an interactive shell. To issue a single command, use the <code translate="no" dir="ltr">shell</code> command like this: </p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb [-d |-e | -s <var translate="no">serial_number</var>] shell <var translate="no">shell_command</var> </pre></devsite-code> <p>To start an interactive shell on a device, use the <code translate="no" dir="ltr">shell</code> command like this:</p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb [-d | -e | -s <var translate="no">serial_number</var>] shell </pre></devsite-code> <p>To exit an interactive shell, press <code translate="no" dir="ltr">Control+D</code> or type <code translate="no" dir="ltr">exit</code>.</p> <p>Android provides most of the usual Unix command-line tools. For a list of available tools, use the following command:</p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded>adb shell ls /system/bin</pre></devsite-code> <p>Help is available for most of the commands via the <code translate="no" dir="ltr">--help</code> argument. Many of the shell commands are provided by <a href="http://landley.net/toybox/" class="external-link">toybox</a>. General help applicable to all toybox commands is available via <code translate="no" dir="ltr">toybox --help</code>.</p> <p>With Android Platform Tools 23 and higher, <code translate="no" dir="ltr">adb</code> handles arguments the same way that the <code translate="no" dir="ltr">ssh(1)</code> command does. This change has fixed a lot of problems with <a class="external-link" href="https://en.wikipedia.org/wiki/Code_injection#Shell_injection">command injection</a> and makes it possible to safely execute commands that contain shell <a class="external-link" href="https://en.wikipedia.org/wiki/Metacharacter">metacharacters</a>, such as <code translate="no" dir="ltr">adb install Let\'sGo.apk</code>. This change means that the interpretation of any command that contains shell metacharacters has also changed.</p> <p>For example, <code translate="no" dir="ltr">adb shell setprop <var translate="no">key</var> '<var translate="no">two words</var>'</code> is now an error, because the quotes are swallowed by the local shell, and the device sees <code translate="no" dir="ltr">adb shell setprop key two words</code>. To make the command work, quote twice, once for the local shell and once for the remote shell, as you do with <code translate="no" dir="ltr">ssh(1)</code>. For example, <code translate="no" dir="ltr">adb shell setprop <var translate="no">key</var> "'<var translate="no">two words</var>'" </code> works because the local shell takes the outer level of quoting and the device still sees the inner level of quoting: <code translate="no" dir="ltr">setprop key 'two words'</code>. Escaping is also an option, but quoting twice is usually easier. </p> <p>See also <a href="/studio/command-line/logcat">Logcat command-line tool</a>, which is useful for monitoring the system log.</p> <h3 id="am" data-text="Call activity manager" tabindex="-1">Call activity manager</h3> <p>Within an <code translate="no" dir="ltr">adb</code> shell, you can issue commands with the activity manager (<code translate="no" dir="ltr">am</code>) tool to perform various system actions, such as start an activity, force-stop a process, broadcast an intent, modify the device screen properties, and more.</p> <p>While in a shell, the <code translate="no" dir="ltr">am</code> syntax is:</p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> am <var translate="no">command</var> </pre></devsite-code> <p>You can also issue an activity manager command directly from <code translate="no" dir="ltr">adb</code> without entering a remote shell. For example:</p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb shell am start -a android.intent.action.VIEW </pre></devsite-code> <p class="table-caption"><strong>Table 1.</strong> Available activity manager commands</p> <table> <tr> <th>Command</th> <th>Description</th> </tr> <tr> <td> <code translate="no" dir="ltr">start [<var translate="no">options</var>] <var translate="no">intent</var></code> </td> <td>Start an <code translate="no" dir="ltr"><a href="/reference/android/app/Activity">Activity</a></code> specified by <code translate="no" dir="ltr"><var translate="no">intent</var></code>. <p>See the <a href="#IntentSpec">Specification for intent arguments</a>. <p>Options are: <ul> <li><code translate="no" dir="ltr">-D</code>: Enable debugging. <li><code translate="no" dir="ltr">-W</code>: Wait for launch to complete. <li><code translate="no" dir="ltr">--start-profiler <var translate="no">file</var></code>: Start profiler and send results to <code translate="no" dir="ltr"><var translate="no">file</var></code>. <li><code translate="no" dir="ltr">-P <var translate="no">file</var></code>: Like <code translate="no" dir="ltr">--start-profiler</code>, but profiling stops when the app goes idle. <li><code translate="no" dir="ltr">-R <var translate="no">count</var></code>: Repeat the activity launch <code translate="no" dir="ltr"><var translate="no">count</var></code> times. Prior to each repeat, the top activity will be finished. <li><code translate="no" dir="ltr">-S</code>: Force stop the target app before starting the activity. <li><code translate="no" dir="ltr">--opengl-trace</code>: Enable tracing of OpenGL functions. <li><code translate="no" dir="ltr">--user <var translate="no">user_id</var> | current</code>: Specify which user to run as; if not specified, then run as the current user. </ul> </td> </tr> <tr> <td><code translate="no" dir="ltr"> startservice [<var translate="no">options</var>] <var translate="no">intent</var> </code></td> <td>Start the <code translate="no" dir="ltr"><a href="/reference/android/app/Service">Service</a></code> specified by <code translate="no" dir="ltr"><var translate="no">intent</var></code>. <p>See the <a href="#IntentSpec">Specification for intent arguments</a>. <p>Options are: <ul> <li><code translate="no" dir="ltr">--user <var translate="no">user_id</var> | current</code>: Specify which user to run as. If not specified, then run as the current user. </ul> </td> </tr> <tr> <td><code translate="no" dir="ltr"> force-stop <var translate="no">package</var> </code></td> <td>Force-stop everything associated with <code translate="no" dir="ltr"><var translate="no">package</var></code>. </td> </tr> <tr> <td><code translate="no" dir="ltr"> kill [<var translate="no">options</var>] <var translate="no">package</var> </code></td> <td> Kill all processes associated with <code translate="no" dir="ltr"><var translate="no">package</var></code>. This command kills only processes that are safe to kill and that will not impact the user experience. <p>Options are: <ul> <li><code translate="no" dir="ltr">--user <var translate="no">user_id</var> | all | current</code>: Specify which user's processes to kill. If not specified, then kill all users' processes. </ul> </td> </tr> <tr> <td><code translate="no" dir="ltr"> kill-all </code></td> <td>Kill all background processes. </td> </tr> <tr> <td><code translate="no" dir="ltr"> broadcast [<var translate="no">options</var>] <var translate="no">intent</var> </code></td> <td>Issue a broadcast intent. <p>See the <a href="#IntentSpec">Specification for intent arguments</a>. <p>Options are: <ul> <li><code translate="no" dir="ltr">[--user <var translate="no">user_id</var> | all | current]</code>: Specify which user to send to. If not specified, then send to all users. </ul> </td> </tr> <tr> <td><code translate="no" dir="ltr"> instrument [<var translate="no">options</var>] <var translate="no">component</var> </code></td> <td>Start monitoring with an <code translate="no" dir="ltr"><a href="/reference/android/app/Instrumentation">Instrumentation</a></code> instance. Typically the target <code translate="no" dir="ltr"><var translate="no">component</var></code> is the form <code translate="no" dir="ltr"><var translate="no">test_package</var>/<var translate="no">runner_class</var></code>. <p>Options are: <ul> <li><code translate="no" dir="ltr">-r</code>: Print raw results (otherwise decode <code translate="no" dir="ltr"><var translate="no">report_key_streamresult</var></code>). Use with <code translate="no" dir="ltr">[-e perf true]</code> to generate raw output for performance measurements. <li><code translate="no" dir="ltr">-e <var translate="no">name</var> <var translate="no">value</var></code>: Set argument <code translate="no" dir="ltr"><var translate="no">name</var></code> to <code translate="no" dir="ltr"><var translate="no">value</var></code>. For test runners a common form is <code translate="no" dir="ltr"> -e <var translate="no">testrunner_flag</var> <var translate="no">value</var>[,<var translate="no">value</var>...]</code>. <li><code translate="no" dir="ltr">-p <var translate="no">file</var></code>: Write profiling data to <code translate="no" dir="ltr"><var translate="no">file</var></code>. <li><code translate="no" dir="ltr">-w</code>: Wait for instrumentation to finish before returning. Required for test runners. <li><code translate="no" dir="ltr">--no-window-animation</code>: Turn off window animations while running. <li><code translate="no" dir="ltr">--user <var translate="no">user_id</var> | current</code>: Specify which user instrumentation runs in. If not specified, run in the current user. </ul> </td> </tr> <tr> <td><code translate="no" dir="ltr"> profile start <var translate="no">process</var> <var translate="no">file</var> </code></td> <td>Start profiler on <code translate="no" dir="ltr"><var translate="no">process</var></code>, write results to <code translate="no" dir="ltr"><var translate="no">file</var></code>. </td> </tr> <tr> <td><code translate="no" dir="ltr"> profile stop <var translate="no">process</var> </code></td> <td>Stop profiler on <code translate="no" dir="ltr"><var translate="no">process</var></code>. </td> </tr> <tr> <td style="white-space:nowrap"><code translate="no" dir="ltr"> dumpheap [<var translate="no">options</var>] <var translate="no">process</var> <var translate="no">file</var> </code></td> <td>Dump the heap of <code translate="no" dir="ltr"><var translate="no">process</var></code>, write to <code translate="no" dir="ltr"><var translate="no">file</var></code>. <p>Options are: <ul> <li><code translate="no" dir="ltr">--user [<var translate="no">user_id</var> | current]</code>: When supplying a process name, specify the user of the process to dump. If not specified, the current user is used. <li><code translate="no" dir="ltr">-b [| png | jpg | webp]</code>: Dump bitmaps from graphics memory (API level 35 and above). Optionally specify the format to dump in (PNG by default). <li><code translate="no" dir="ltr">-n</code>: Dump native heap instead of managed heap. </ul> </td> </tr> <tr> <td><code translate="no" dir="ltr"> set-debug-app [<var translate="no">options</var>] <var translate="no">package</var> </code></td> <td>Set app <code translate="no" dir="ltr"><var translate="no">package</var></code> to debug. <p>Options are: <ul> <li><code translate="no" dir="ltr">-w</code>: Wait for debugger when app starts. <li><code translate="no" dir="ltr">--persistent</code>: Retain this value. </ul> </td> </tr> <tr> <td><code translate="no" dir="ltr"> clear-debug-app </code></td> <td>Clear the package previous set for debugging with <code translate="no" dir="ltr">set-debug-app</code>. </td> </tr> <tr> <td><code translate="no" dir="ltr"> monitor [<var translate="no">options</var>] </code></td> <td>Start monitoring for crashes or ANRs. <p>Options are: <ul> <li><code translate="no" dir="ltr">--gdb</code>: Start <code translate="no" dir="ltr">gdbserv</code> on the given port at crash/ANR. </ul> </td> </tr> <tr> <td><code translate="no" dir="ltr"> screen-compat {on | off} <var translate="no">package</var> </code></td> <td>Control <a href="/guide/practices/screen-compat-mode">screen compatibility</a> mode of <code translate="no" dir="ltr"><var translate="no">package</var></code>. </td> </tr> <tr> <td><code translate="no" dir="ltr"> display-size [reset | <var translate="no">width</var>x<var translate="no">height</var>] </code></td> <td>Override device display size. This command is helpful for testing your app across different screen sizes by mimicking a small screen resolution using a device with a large screen, and vice versa. <p>Example:<br><code translate="no" dir="ltr">am display-size 1280x800</code> </td> </tr> <tr> <td><code translate="no" dir="ltr"> display-density <var translate="no">dpi</var> </code></td> <td>Override device display density. This command is helpful for testing your app across different screen densities by mimicking a high-density screen environment using a low-density screen, and vice versa. <p>Example:<br><code translate="no" dir="ltr">am display-density 480</code> </td> </tr> <tr> <td><code translate="no" dir="ltr"> to-uri <var translate="no">intent</var> </code></td> <td>Print the given intent specification as a URI. <p>See the <a href="#IntentSpec">Specification for intent arguments</a>. </td> </tr> <tr> <td><code translate="no" dir="ltr"> to-intent-uri <var translate="no">intent</var> </code></td> <td>Print the given intent specification as an <code translate="no" dir="ltr">intent:</code> URI. <p>See the <a href="#IntentSpec">Specification for intent arguments</a>. </td> </tr> </table> <h4 id="IntentSpec" data-text="Specification for intent arguments" tabindex="-1">Specification for intent arguments</h4> <p>For activity manager commands that take an <code translate="no" dir="ltr"><var translate="no">intent</var></code> argument, you can specify the intent with the following options:</p> <section class="expandable" id="IntentSpec"> <p class="expand-control">Show all</p> <dl> <dt><code translate="no" dir="ltr">-a <var translate="no">action</var></code></dt> <dd>Specify the intent action, such as <code translate="no" dir="ltr">android.intent.action.VIEW</code>. You can declare this only once. <dt><code translate="no" dir="ltr">-d <var translate="no">data_uri</var></code></dt> <dd>Specify the intent data URI, such as <code translate="no" dir="ltr">content://contacts/people/1</code>. You can declare this only once. <dt><code translate="no" dir="ltr">-t <var translate="no">mime_type</var></code></dt> <dd>Specify the intent MIME type, such as <code translate="no" dir="ltr">image/png</code>. You can declare this only once. <dt><code translate="no" dir="ltr">-c <var translate="no">category</var></code></dt> <dd>Specify an intent category, such as <code translate="no" dir="ltr">android.intent.category.APP_CONTACTS</code>. <dt><code translate="no" dir="ltr">-n <var translate="no">component</var></code></dt> <dd>Specify the component name with package name prefix to create an explicit intent, such as <code translate="no" dir="ltr">com.example.app/.ExampleActivity</code>. <dt><code translate="no" dir="ltr">-f <var translate="no">flags</var></code></dt> <dd>Add flags to the intent, as supported by <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#setFlags(int)">setFlags()</a></code>. <dt><code translate="no" dir="ltr">--esn <var translate="no">extra_key</var></code></dt> <dd>Add a null extra. This option is not supported for URI intents. <dt><code translate="no" dir="ltr">-e | --es <var translate="no">extra_key</var> <var translate="no">extra_string_value</var></code></dt> <dd>Add string data as a key-value pair. <dt><code translate="no" dir="ltr">--ez <var translate="no">extra_key</var> <var translate="no">extra_boolean_value</var></code></dt> <dd>Add boolean data as a key-value pair. <dt><code translate="no" dir="ltr">--ei <var translate="no">extra_key</var> <var translate="no">extra_int_value</var></code></dt> <dd>Add integer data as a key-value pair. <dt><code translate="no" dir="ltr">--el <var translate="no">extra_key</var> <var translate="no">extra_long_value</var></code></dt> <dd>Add long data as a key-value pair. <dt><code translate="no" dir="ltr">--ef <var translate="no">extra_key</var> <var translate="no">extra_float_value</var></code></dt> <dd>Add float data as a key-value pair. <dt><code translate="no" dir="ltr">--eu <var translate="no">extra_key</var> <var translate="no">extra_uri_value</var></code></dt> <dd>Add URI data as a key-value pair. <dt><code translate="no" dir="ltr">--ecn <var translate="no">extra_key</var> <var translate="no">extra_component_name_value</var></code></dt> <dd>Add a component name, which is converted and passed as a <code translate="no" dir="ltr"><a href="/reference/android/content/ComponentName">ComponentName</a></code> object. <dt><code translate="no" dir="ltr">--eia <var translate="no">extra_key</var> <var translate="no">extra_int_value</var>[,<var translate="no">extra_int_value</var>...]</code></dt> <dd>Add an array of integers. <dt><code translate="no" dir="ltr">--ela <var translate="no">extra_key</var> <var translate="no">extra_long_value</var>[,<var translate="no">extra_long_value</var>...]</code></dt> <dd>Add an array of longs. <dt><code translate="no" dir="ltr">--efa <var translate="no">extra_key</var> <var translate="no">extra_float_value</var>[,<var translate="no">extra_float_value</var>...]</code></dt> <dd>Add an array of floats. <dt><code translate="no" dir="ltr">--grant-read-uri-permission</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_GRANT_READ_URI_PERMISSION">FLAG_GRANT_READ_URI_PERMISSION</a></code>. <dt><code translate="no" dir="ltr">--grant-write-uri-permission</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_GRANT_WRITE_URI_PERMISSION">FLAG_GRANT_WRITE_URI_PERMISSION</a></code>. <dt><code translate="no" dir="ltr">--debug-log-resolution</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_DEBUG_LOG_RESOLUTION">FLAG_DEBUG_LOG_RESOLUTION</a></code>. <dt><code translate="no" dir="ltr">--exclude-stopped-packages</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_EXCLUDE_STOPPED_PACKAGES">FLAG_EXCLUDE_STOPPED_PACKAGES</a></code>. <dt><code translate="no" dir="ltr">--include-stopped-packages</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_INCLUDE_STOPPED_PACKAGES">FLAG_INCLUDE_STOPPED_PACKAGES</a></code>. <dt><code translate="no" dir="ltr">--activity-brought-to-front</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_ACTIVITY_BROUGHT_TO_FRONT">FLAG_ACTIVITY_BROUGHT_TO_FRONT</a></code>. <dt><code translate="no" dir="ltr">--activity-clear-top</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_ACTIVITY_CLEAR_TOP">FLAG_ACTIVITY_CLEAR_TOP</a></code>. <dt><code translate="no" dir="ltr">--activity-clear-when-task-reset</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET">FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET</a></code>. <dt><code translate="no" dir="ltr">--activity-exclude-from-recents</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS">FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS</a></code>. <dt><code translate="no" dir="ltr">--activity-launched-from-history</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY">FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY</a></code>. <dt><code translate="no" dir="ltr">--activity-multiple-task</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_ACTIVITY_MULTIPLE_TASK">FLAG_ACTIVITY_MULTIPLE_TASK</a></code>. <dt><code translate="no" dir="ltr">--activity-no-animation</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_ACTIVITY_NO_ANIMATION">FLAG_ACTIVITY_NO_ANIMATION</a></code>. <dt><code translate="no" dir="ltr">--activity-no-history</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_ACTIVITY_NO_HISTORY">FLAG_ACTIVITY_NO_HISTORY</a></code>. <dt><code translate="no" dir="ltr">--activity-no-user-action</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_ACTIVITY_NO_USER_ACTION">FLAG_ACTIVITY_NO_USER_ACTION</a></code>. <dt><code translate="no" dir="ltr">--activity-previous-is-top</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_ACTIVITY_PREVIOUS_IS_TOP">FLAG_ACTIVITY_PREVIOUS_IS_TOP</a></code>. <dt><code translate="no" dir="ltr">--activity-reorder-to-front</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_ACTIVITY_REORDER_TO_FRONT">FLAG_ACTIVITY_REORDER_TO_FRONT</a></code>. <dt><code translate="no" dir="ltr">--activity-reset-task-if-needed</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_ACTIVITY_RESET_TASK_IF_NEEDED">FLAG_ACTIVITY_RESET_TASK_IF_NEEDED</a></code>. <dt><code translate="no" dir="ltr">--activity-single-top</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_ACTIVITY_SINGLE_TOP">FLAG_ACTIVITY_SINGLE_TOP</a></code>. <dt><code translate="no" dir="ltr">--activity-clear-task</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_ACTIVITY_CLEAR_TASK">FLAG_ACTIVITY_CLEAR_TASK</a></code>. <dt><code translate="no" dir="ltr">--activity-task-on-home</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_ACTIVITY_TASK_ON_HOME">FLAG_ACTIVITY_TASK_ON_HOME</a></code>. <dt><code translate="no" dir="ltr">--receiver-registered-only</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_RECEIVER_REGISTERED_ONLY">FLAG_RECEIVER_REGISTERED_ONLY</a></code>. <dt><code translate="no" dir="ltr">--receiver-replace-pending</code></dt> <dd>Include the flag <code translate="no" dir="ltr"><a href="/reference/android/content/Intent#FLAG_RECEIVER_REPLACE_PENDING">FLAG_RECEIVER_REPLACE_PENDING</a></code>. <dt><code translate="no" dir="ltr">--selector</code></dt> <dd>Requires the use of <code translate="no" dir="ltr">-d</code> and <code translate="no" dir="ltr">-t</code> options to set the intent data and type. <dt><code translate="no" dir="ltr"><var translate="no">URI</var> <var translate="no">component</var> <var translate="no">package</var></code></dt> <dd>You can directly specify a URI, package name, and component name when not qualified by one of the preceding options. When an argument is unqualified, the tool assumes the argument is a URI if it contains a ":" (colon). The tools assumes the argument is a component name if it contains a "/" (forward-slash); otherwise it assumes the argument is a package name. </dl> </section><!-- end expandable --> <h3 id="pm" data-text="Call package manager (pm)" tabindex="-1">Call package manager (<code translate="no" dir="ltr">pm</code>)</h3> <p>Within an <code translate="no" dir="ltr">adb</code> shell, you can issue commands with the package manager (<code translate="no" dir="ltr">pm</code>) tool to perform actions and queries on app packages installed on the device.</p> <p>While in a shell, the <code translate="no" dir="ltr">pm</code> syntax is:</p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> pm <var translate="no">command</var> </pre></devsite-code> <p>You can also issue a package manager command directly from <code translate="no" dir="ltr">adb</code> without entering a remote shell. For example:</p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb shell pm uninstall <code translate="no" dir="ltr">com.example.MyApp</code> </pre></devsite-code> <p class="table-caption"><strong>Table 2.</strong> Available package manager commands</p> <table> <tr> <th>Command</th> <th>Description</th> </tr> <tr> <td><code translate="no" dir="ltr"> list packages [<var translate="no">options</var>] <var translate="no">filter</var> </code></td> <td>Print all packages, optionally only those whose package name contains the text in <code translate="no" dir="ltr"><var translate="no">filter</var></code>. <p>Options: <ul> <li><code translate="no" dir="ltr">-f</code>: See associated file. <li><code translate="no" dir="ltr">-d</code>: Filter to only show disabled packages. <li><code translate="no" dir="ltr">-e</code>: Filter to only show enabled packages. <li><code translate="no" dir="ltr">-s</code>: Filter to only show system packages. <li><code translate="no" dir="ltr">-3</code>: Filter to only show third-party packages. <li><code translate="no" dir="ltr">-i</code>: See the installer for the packages. <li><code translate="no" dir="ltr">-u</code>: Include uninstalled packages. <li><code translate="no" dir="ltr">--user <var translate="no">user_id</var></code>: The user space to query. </ul> </td> </tr> <tr> <td><code translate="no" dir="ltr"> list permission-groups </code></td> <td>Print all known permission groups. </td> </tr> <tr> <td><code translate="no" dir="ltr"> list permissions [<var translate="no">options</var>] <var translate="no">group</var> </code></td> <td>Print all known permissions, optionally only those in <code translate="no" dir="ltr"><var translate="no">group</var></code>. <p>Options: <ul> <li><code translate="no" dir="ltr">-g</code>: Organize by group. <li><code translate="no" dir="ltr">-f</code>: Print all information. <li><code translate="no" dir="ltr">-s</code>: Short summary. <li><code translate="no" dir="ltr">-d</code>: Only list dangerous permissions. <li><code translate="no" dir="ltr">-u</code>: List only the permissions users will see. </ul> </td> </tr> <tr> <td><code translate="no" dir="ltr"> list instrumentation [<var translate="no">options</var>] </code></td> <td>List all test packages. <p>Options: <ul> <li><code translate="no" dir="ltr">-f</code>: List the APK file for the test package. <li><code translate="no" dir="ltr"><var translate="no">target_package</var></code>: List test packages for only this app. </ul> </td> </tr> <tr> <td><code translate="no" dir="ltr"> list features </code></td> <td>Print all features of the system. </td> </tr> <tr> <td><code translate="no" dir="ltr"> list libraries </code></td> <td>Print all the libraries supported by the current device. </td> </tr> <tr> <td><code translate="no" dir="ltr"> list users </code></td> <td>Print all users on the system. </td> </tr> <tr> <td><code translate="no" dir="ltr"> path <var translate="no">package</var> </code></td> <td>Print the path to the APK of the given <code translate="no" dir="ltr"><var translate="no">package</var></code>. </td> </tr> <tr id="-t-option"> <td><code translate="no" dir="ltr"> install [<var translate="no">options</var>] <var translate="no">path</var> </code></td> <td>Install a package, specified by <code translate="no" dir="ltr"><var translate="no">path</var></code>, to the system. <p>Options: <ul> <li><code translate="no" dir="ltr">-r</code>: Reinstall an existing app, keeping its data.</li> <li><code translate="no" dir="ltr">-t</code>: Allow test APKs to be installed. Gradle generates a test APK when you have only run or debugged your app or have used the Android Studio <b>Build > Build APK</b> command. If the APK is built using a developer preview SDK, you must include the <a href="/studio/command-line/adb#-t-option"><code translate="no" dir="ltr">-t</code> option</a> with the <code translate="no" dir="ltr">install</code> command if you are installing a test APK.</li> <li><code translate="no" dir="ltr">-i <var translate="no">installer_package_name</var></code>: Specify the installer package name.</li> <li><code translate="no" dir="ltr">--install-location <var translate="no">location</var></code>: Set the install location using one of the following values: <ul> <li type="square"><code translate="no" dir="ltr">0</code>: Use the default install location.</li> <li type="square"><code translate="no" dir="ltr">1</code>: Install on internal device storage.</li> <li type="square"><code translate="no" dir="ltr">2</code>: Install on external media.</li> </ul> </li> <li><code translate="no" dir="ltr">-f</code>: Install package on the internal system memory.</li> <li><code translate="no" dir="ltr">-d</code>: Allow version code downgrade.</li> <li><code translate="no" dir="ltr">-g</code>: Grant all permissions listed in the app manifest.</li> <li><code translate="no" dir="ltr">--fastdeploy</code>: Quickly update an installed package by only updating the parts of the APK that changed.</li> <li id="incremental"><code translate="no" dir="ltr">--incremental</code>: Installs enough of the APK to launch the app while streaming the remaining data in the background. To use this feature, you must sign the APK, create an <a href="/studio/command-line/apksigner#v4-signing-enabled">APK Signature Scheme v4 file</a>, and place this file in the same directory as the APK. This feature is only supported on certain devices. This option forces <code translate="no" dir="ltr">adb</code> to use the feature or fail if it is not supported, with verbose information on why it failed. Append the <code translate="no" dir="ltr">--wait</code> option to wait until the APK is fully installed before granting access to the APK. <p> <code translate="no" dir="ltr">--no-incremental</code> prevents <code translate="no" dir="ltr">adb</code> from using this feature. </p> </li> </ul> </td> </tr> <tr> <td><code translate="no" dir="ltr"> uninstall [<var translate="no">options</var>] <var translate="no">package</var> </code></td> <td>Removes a package from the system. <p>Options: <ul> <li><code translate="no" dir="ltr">-k</code>: Keep the data and cache directories after package removal. <li><code translate="no" dir="ltr">--user <var translate="no">user_id</var></code>: Specifies the user for whom the package is removed. <li><code translate="no" dir="ltr">--versionCode <var translate="no">version_code</var></code>: Only uninstalls if the app has the given version code. </ul> </td> </tr> <tr> <td><code translate="no" dir="ltr"> clear <var translate="no">package</var> </code></td> <td>Delete all data associated with a package. </td> </tr> <tr> <td><code translate="no" dir="ltr"> enable <var translate="no">package_or_component</var> </code></td> <td>Enable the given package or component (written as "package/class"). </td> </tr> <tr> <td><code translate="no" dir="ltr"> disable <var translate="no">package_or_component</var> </code></td> <td>Disable the given package or component (written as "package/class"). </td> </tr> <tr> <td style="white-space:nowrap"><code translate="no" dir="ltr"> disable-user [<var translate="no">options</var>] <var translate="no">package_or_component</var> </code></td> <td><p>Options: <ul> <li><code translate="no" dir="ltr">--user <var translate="no">user_id</var></code>: The user to disable. </ul> </td> </tr> <tr> <td><code translate="no" dir="ltr"> grant <var translate="no">package_name</var> <var translate="no">permission</var> </code></td> <td>Grant a permission to an app. On devices running Android 6.0 (API level 23) and higher, the permission can be any permission declared in the app manifest. On devices running Android 5.1 (API level 22) and lower, must be an optional permission defined by the app. </td> </tr> <tr> <td><code translate="no" dir="ltr"> revoke <var translate="no">package_name</var> <var translate="no">permission</var> </code></td> <td>Revoke a permission from an app. On devices running Android 6.0 (API level 23) and higher, the permission can be any permission declared in the app manifest. On devices running Android 5.1 (API level 22) and lower, must be an optional permission defined by the app. </td> </tr> <tr> <td><code translate="no" dir="ltr"> set-install-location <var translate="no">location</var> </code></td> <td>Change the default install location. Location values: <ul> <li><code translate="no" dir="ltr">0</code>: Auto: Let system decide the best location. <li><code translate="no" dir="ltr">1</code>: Internal: Install on internal device storage. <li><code translate="no" dir="ltr">2</code>: External: Install on external media. </ul> <p class="note"><strong>Note:</strong> This is only intended for debugging. Using this can cause apps to break and other undesireable behavior.</p> </td> </tr> <tr> <td><code translate="no" dir="ltr"> get-install-location </code></td> <td>Returns the current install location. Return values: <ul> <li><code translate="no" dir="ltr">0 [auto]</code>: Let system decide the best location <li><code translate="no" dir="ltr">1 [internal]</code>: Install on internal device storage <li><code translate="no" dir="ltr">2 [external]</code>: Install on external media </ul> </td> </tr> <tr> <td><code translate="no" dir="ltr"> set-permission-enforced <var translate="no">permission</var> [true | false] </code></td> <td>Specify whether the given permission should be enforced. </td> </tr> <tr> <td><code translate="no" dir="ltr"> trim-caches <var translate="no">desired_free_space</var> </code></td> <td>Trim cache files to reach the given free space. </td> </tr> <tr> <td><code translate="no" dir="ltr"> create-user <var translate="no">user_name</var> </code></td> <td>Create a new user with the given <code translate="no" dir="ltr"><var translate="no">user_name</var></code>, printing the new user identifier of the user. </td> </tr> <tr> <td><code translate="no" dir="ltr"> remove-user <var translate="no">user_id</var> </code></td> <td>Remove the user with the given <code translate="no" dir="ltr"><var translate="no">user_id</var></code>, deleting all data associated with that user </td> </tr> <tr> <td><code translate="no" dir="ltr"> get-max-users </code></td> <td>Print the maximum number of users supported by the device. </td> </tr> <tr> <td> <code translate="no" dir="ltr"> get-app-links [<var translate="no">options</var>] [<var translate="no">package</var>] </code> </td> <td><p>Print the domain verification state for the given <var translate="no">package</var>, or for all packages if none is specified. State codes are defined as follows: <ul> <li> <code translate="no" dir="ltr">none</code>: nothing has been recorded for this domain <li> <code translate="no" dir="ltr">verified</code>: the domain has been successfully verified <li> <code translate="no" dir="ltr">approved</code>: force-approved, usually through shell <li> <code translate="no" dir="ltr">denied</code>: force-denied, usually through shell <li> <code translate="no" dir="ltr">migrated</code>: preserved verification from a legacy response <li> <code translate="no" dir="ltr">restored</code>: preserved verification from a user data restore <li> <code translate="no" dir="ltr">legacy_failure</code>: rejected by a legacy verifier, unknown reason <li> <code translate="no" dir="ltr">system_configured</code>: automatically approved by the device config <li> <code translate="no" dir="ltr"> &gt;= 1024</code>: custom error code, which is specific to the device verifier </ul> <p>Options are: <ul> <li><code translate="no" dir="ltr">--user <var translate="no">user_id</var></code>: include user selections. Include all domains, not just autoVerify ones. </ul></td> </tr> <tr> <td> <code translate="no" dir="ltr"> reset-app-links [<var translate="no">options</var>] [<var translate="no">package</var>] </code> </td> <td><p>Reset domain verification state for the given package, or for all packages if none is specified. <ul> <li><code translate="no" dir="ltr"><var translate="no">package</var></code>: the package to reset, or "all" to reset all packages </ul> <p>Options are: <ul> <li><code translate="no" dir="ltr">--user <var translate="no">user_id</var></code>: include user selections. Include all domains, not just autoVerify ones. </ul> </td> </tr> <tr> <td> <code translate="no" dir="ltr"> verify-app-links [<var translate="no">--re-verify</var>] [<var translate="no">package</var>] </code> </td> <td><p>Broadcast a verification request for the given <var translate="no">package</var>, or for all packages if none is specified. Only sends if the package has previously not recorded a response. <ul> <li><code translate="no" dir="ltr">--re-verify</code>: send even if the package has recorded a response </ul> </td> </tr> <tr> <td> <code translate="no" dir="ltr"> set-app-links [--package <var translate="no">package</var>] <var translate="no">state</var> <var translate="no">domains</var> </code> </td> <td><p>Manually set the state of a domain for a package. The domain must be declared by the package as autoVerify for this to work. This command will not report a failure for domains that could not be applied. <ul> <li><code translate="no" dir="ltr">--package <var translate="no">package</var></code>: the package to set, or "all" to set all packages <li><code translate="no" dir="ltr"><var translate="no">state</var></code>: the code to set the domains to. Valid values are: <ul> <li><code translate="no" dir="ltr">STATE_NO_RESPONSE (0)</code>: reset as if no response was ever recorded. <li><code translate="no" dir="ltr">STATE_SUCCESS (1)</code>: treat domain as successfully verified by domain verification agent. Note that the domain verification agent can override this. <li><code translate="no" dir="ltr">STATE_APPROVED (2)</code>: treat domain as always approved, preventing the domain verification agent from changing it. <li><code translate="no" dir="ltr">STATE_DENIED (3)</code>: treat domain as always denied, preventing the domain verification agent from changing it. </ul> <li><code translate="no" dir="ltr"><var translate="no">domains</var></code>: space-separated list of domains to change, or "all" to change every domain. </ul> </td> </tr> <tr> <td> <code translate="no" dir="ltr"> set-app-links-user-selection --user <var translate="no">user_id</var> [--package <var translate="no">package</var>] <var translate="no">enabled</var> <var translate="no">domains</var> </code> </td> <td><p>Manually set the state of a host user selection for a package. The domain must be declared by the package for this to work. This command will not report a failure for domains that could not be applied. <ul> <li><code translate="no" dir="ltr">--user <var translate="no">user_id</var></code>: the user to change selections for <li><code translate="no" dir="ltr">--package <var translate="no">package</var></code>: the package to set <li><code translate="no" dir="ltr"><var translate="no">enabled</var></code>: whether to approve the domain <li><code translate="no" dir="ltr"><var translate="no">domains</var></code>: space-separated list of domains to change, or "all" to change every domain </ul> </td> </tr> <tr> <td> <code translate="no" dir="ltr"> set-app-links-user-selection --user <var translate="no">user_id</var> [--package <var translate="no">package</var>] <var translate="no">enabled</var> <var translate="no">domains</var> </code> </td> <td><p>Manually set the state of a host user selection for a package. The domain must be declared by the package for this to work. This command will not report a failure for domains that could not be applied. <ul> <li><code translate="no" dir="ltr">--user <var translate="no">user_id</var></code>: the user to change selections for <li><code translate="no" dir="ltr">--package <var translate="no">package</var></code>: the package to set <li><code translate="no" dir="ltr"><var translate="no">enabled</var></code>: whether to approve the domain <li><code translate="no" dir="ltr"><var translate="no">domains</var></code>: space-separated list of domains to change, or "all" to change every domain </ul> </td> </tr> <tr> <td> <code translate="no" dir="ltr"> set-app-links-allowed --user <var translate="no">user_id</var> [--package <var translate="no">package</var>] <var translate="no">allowed</var> </code> </td> <td><p>Toggle the auto-verified link-handling setting for a package. <ul> <li><code translate="no" dir="ltr">--user <var translate="no">user_id</var></code>: the user to change selections for <li><code translate="no" dir="ltr">--package <var translate="no">package</var></code>: the package to set, or "all" to set all packages; packages will be reset if no package is specified <li><code translate="no" dir="ltr"><var translate="no">allowed</var></code>: true to allow the package to open auto-verified links, false to disable </ul> </td> </tr> <tr> <td> <code translate="no" dir="ltr"> get-app-link-owners --user <var translate="no">user_id</var> [--package <var translate="no">package</var>] <var translate="no">domains</var> </code> </td> <td><p>Print the owners for a specific domain for a given user in low- to high-priority order. <ul> <li><code translate="no" dir="ltr">--user <var translate="no">user_id</var></code>: the user to query for <li><code translate="no" dir="ltr">--package <var translate="no">package</var></code>: optionally also print for all web domains declared by a package, or "all" to print all packages <li><code translate="no" dir="ltr"><var translate="no">domains</var></code>: space-separated list of domains to query for </ul> </td> </tr> </table> <h3 id="dpm" data-text="Call device policy manager (dpm)" tabindex="-1">Call device policy manager (<code translate="no" dir="ltr">dpm</code>)</h3> <p>To help you develop and test your device management apps, issue commands to the device policy manager (<code translate="no" dir="ltr">dpm</code>) tool. Use the tool to control the active admin app or change a policy's status data on the device.<p> <p>While in a shell, the <code translate="no" dir="ltr">dpm</code>syntax is:</p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> dpm <var translate="no">command</var> </pre></devsite-code> <p>You can also issue a device policy manager command directly from <code translate="no" dir="ltr">adb</code> without entering a remote shell:</p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb shell dpm <var translate="no">command</var> </pre></devsite-code> <p class="table-caption"><strong>Table 3.</strong> Available device policy manager commands</p> <table> <tr> <th>Command</th> <th>Description</th> </tr> <tr> <td style="white-space:nowrap"> <code translate="no" dir="ltr">set-active-admin [<var translate="no">options</var>] <var translate="no">component</var></code> </td> <td> Sets <var translate="no">component</var> as active admin. <p>Options are: <ul> <li><code translate="no" dir="ltr">--user <var translate="no">user_id</var></code>: Specify the target user. You can also pass <code translate="no" dir="ltr">--user current</code> to select the current user. </ul> </td> </tr> <tr> <td style="white-space:nowrap"> <code translate="no" dir="ltr">set-profile-owner [<var translate="no">options</var>] <var translate="no">component</var></code> </td> <td> Set <var translate="no">component</var> as active admin and its package as profile owner for an existing user. <p>Options are: <ul> <li><code translate="no" dir="ltr">--user <var translate="no">user_id</var></code>: Specify the target user. You can also pass <code translate="no" dir="ltr">--user current</code> to select the current user. <li><code translate="no" dir="ltr">--name <var translate="no">name</var></code>: Specify the human-readable organization name. </ul> </td> </tr> <tr> <td style="white-space:nowrap"> <code translate="no" dir="ltr">set-device-owner [<var translate="no">options</var>] <var translate="no">component</var></code> </td> <td> Set <var translate="no">component</var> as active admin and its package as device owner. <p>Options are: <ul> <li><code translate="no" dir="ltr">--user <var translate="no">user_id</var></code>: Specify the target user. You can also pass <code translate="no" dir="ltr">--user current</code> to select the current user. <li><code translate="no" dir="ltr">--name <var translate="no">name</var></code>: Specify the human-readable organization name. </ul> </td> </tr> <tr> <td style="white-space:nowrap"> <code translate="no" dir="ltr">remove-active-admin [<var translate="no">options</var>] <var translate="no">component</var></code> </td> <td> Disable an active admin. The app must declare <code translate="no" dir="ltr"><a href="/guide/topics/manifest/application-element#testOnly">android:testOnly</a></code> in the manifest. This command also removes device and profile owners. <p>Options are: <ul> <li><code translate="no" dir="ltr">--user <var translate="no">user_id</var></code>: Specify the target user. You can also pass <code translate="no" dir="ltr">--user current</code> to select the current user. </ul> </td> </tr> <tr> <td style="white-space:nowrap"> <code translate="no" dir="ltr">clear-freeze-period-record</code> </td> <td> Clear the device's record of previously set freeze periods for system OTA updates. This is useful to avoid the device scheduling restrictions when developing apps that manage freeze periods. See <a href="/work/dpc/system-updates#development_and_testing">Manage system updates</a>. <p>Supported on devices running Android 9.0 (API level 28) and higher.</p> </td> </tr> <tr> <td style="white-space:nowrap"> <code translate="no" dir="ltr">force-network-logs</code> </td> <td> Force the system to make any existing network logs ready for retrieval by a DPC. If there are connection or DNS logs available, the DPC receives the <code translate="no" dir="ltr"><a href="/reference/android/app/admin/DeviceAdminReceiver#onNetworkLogsAvailable(android.content.Context,%20android.content.Intent,%20long,%20int)">onNetworkLogsAvailable()</a></code> callback. See <a href="/work/dpc/logging#development_and_testing">Network activity logging</a>. <p>This command is rate-limited. Supported on devices running Android 9.0 (API level 28) and higher.</p> </td> </tr> <tr> <td style="white-space:nowrap"> <code translate="no" dir="ltr">force-security-logs</code> </td> <td> Force the system to make any existing security logs available to the DPC. If there are logs available, the DPC receives the <code translate="no" dir="ltr"><a href="/reference/android/app/admin/DeviceAdminReceiver#onSecurityLogsAvailable(android.content.Context,%20android.content.Intent)">onSecurityLogsAvailable()</a></code> callback. See <a href="/work/dpc/security#log_enterprise_device_activity">Log enterprise device activity</a>. <p>This command is rate-limited. Supported on devices running Android 9.0 (API level 28) and higher.</p> </td> </tr> </table> <h3 id="screencap" data-text="Take a screenshot" tabindex="-1">Take a screenshot</h3> <p>The <code translate="no" dir="ltr">screencap</code> command is a shell utility for taking a screenshot of a device display.</p> <p>While in a shell, the <code translate="no" dir="ltr">screencap</code> syntax is: </p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> screencap <var translate="no">filename</var> </pre></devsite-code> <p>To use <code translate="no" dir="ltr">screencap</code> from the command line, enter the following: <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb shell screencap /sdcard/screen.png </pre></devsite-code> <p>Here's an example screenshot session, using the <code translate="no" dir="ltr">adb</code> shell to capture the screenshot and the <code translate="no" dir="ltr">pull</code> command to download the file from the device:<p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> $ adb shell shell@ $ screencap /sdcard/screen.png shell@ $ exit $ adb pull /sdcard/screen.png </pre></devsite-code> <h3 id="screenrecord" data-text="Record a video" tabindex="-1">Record a video</h3> <p>The <code translate="no" dir="ltr">screenrecord</code> command is a shell utility for recording the display of devices running Android 4.4 (API level 19) and higher. The utility records screen activity to an MPEG-4 file. You can use this file to create promotional or training videos or for debugging and testing. </p> <p>In a shell, use the following syntax:</p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> screenrecord [<var translate="no">options</var>] <var translate="no">filename</var> </pre></devsite-code> <p>To use <code translate="no" dir="ltr">screenrecord</code> from the command line, enter the following: <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb shell screenrecord /sdcard/demo.mp4 </pre></devsite-code> <p>Stop the screen recording by pressing Control+C. Otherwise, the recording stops automatically at three minutes or the time limit set by <code translate="no" dir="ltr">--time-limit</code>.</p> <p>To begin recording your device screen, run the <code translate="no" dir="ltr">screenrecord</code> command to record the video. Then, run the <code translate="no" dir="ltr">pull</code> command to download the video from the device to the host computer. Here's an example recording session:<p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> $ adb shell shell@ $ screenrecord --verbose /sdcard/demo.mp4 (press Control + C to stop) shell@ $ exit $ adb pull /sdcard/demo.mp4 </pre></devsite-code> <p>The <code translate="no" dir="ltr">screenrecord</code> utility can record at any supported resolution and bit rate you request, while retaining the aspect ratio of the device display. The utility records at the native display resolution and orientation by default, with a maximum length of three minutes.</p> <p>Limitations of the <code translate="no" dir="ltr">screenrecord</code> utility:</p> <ul> <li>Audio is not recorded with the video file.</li> <li>Video recording is not available for devices running Wear OS.</li> <li>Some devices might not be able to record at their native display resolution. If you encounter problems with screen recording, try using a lower screen resolution.</li> <li>Rotation of the screen during recording is not supported. If the screen does rotate during recording, some of the screen is cut off in the recording.</li> </ul> <p class="table-caption"><strong>Table 4.</strong> <code translate="no" dir="ltr">screenrecord</code> options</p> <table> <tr> <th>Options</th> <th>Description</th> </tr> <tr> <td><code translate="no" dir="ltr">--help</code> </td> <td>Display command syntax and options</td> </tr> <tr> <td style="white-space:nowrap"> <code translate="no" dir="ltr">--size <var translate="no">width</var>x<var translate="no">height</var></code> </td> <td>Set the video size: <code translate="no" dir="ltr">1280x720</code>. The default value is the device's native display resolution (if supported), 1280x720 if not. For best results, use a size supported by your device's Advanced Video Coding (AVC) encoder.</td> </tr> <tr> <td><code translate="no" dir="ltr">--bit-rate <var translate="no">rate</var></code></td> <td>Set the video bit rate for the video, in megabits per second. The default value is 20Mbps. You can increase the bit rate to improve video quality, but doing so results in larger movie files. The following example sets the recording bit rate to 6Mbps: <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded>screenrecord --bit-rate 6000000 &#47;sdcard&#47;demo.mp4</pre></devsite-code> </td> </tr> <tr> <td><code translate="no" dir="ltr">--time-limit <var translate="no">time</var></code></td> <td>Set the maximum recording time, in seconds. The default and maximum value is 180 (3 minutes).</td> </tr> <tr> <td><code translate="no" dir="ltr">--rotate</code></td> <td>Rotate the output 90 degrees. This feature is experimental.</td> </tr> <tr> <td><code translate="no" dir="ltr">--verbose</code></td> <td>Display log information on the command-line screen. If you do not set this option, the utility does not display any information while running.</td> </tr> </table> <h3 id="appprofiles" data-text="Read ART profiles for apps" tabindex="-1">Read ART profiles for apps</h3> <p>Starting in Android 7.0 (API level 24), the Android Runtime (ART) collects execution profiles for installed apps, which are used to optimize app performance. Examine the collected profiles to understand which methods are executed frequently and which classes are used during app startup.</p> <p class="note"><strong>Note:</strong> It is only possible to retrieve the execution profile filename if you have root access to the file system, for example, on an emulator.</p> <p>To produce a text form of the profile information, use the following command:</p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb shell cmd package dump-profiles <var translate="no">package</var> </pre></devsite-code> <p>To retrieve the file produced, use:</p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb pull /data/misc/profman/<var translate="no">package</var>.prof.txt </pre></devsite-code> <h3 id="test_harness" data-text="Reset test devices" tabindex="-1">Reset test devices</h3> <p> If you test your app across multiple test devices, it may be useful to reset your device between tests, for example, to remove user data and reset the test environment. You can perform a factory reset of a test device running Android 10 (API level 29) or higher using the <code translate="no" dir="ltr">testharness</code> <code translate="no" dir="ltr">adb</code> shell command, as shown: </p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> adb shell cmd testharness enable </pre></devsite-code> <p> When restoring the device using <code translate="no" dir="ltr">testharness</code>, the device automatically backs up the RSA key that allows debugging through the current workstation in a persistent location. That is, after the device is reset, the workstation can continue to debug and issue <code translate="no" dir="ltr">adb</code> commands to the device without manually registering a new key. </p> <p> Additionally, to help make it easier and more secure to keep testing your app, using the <code translate="no" dir="ltr">testharness</code> to restore a device also changes the following device settings: </p> <ul> <li>The device sets up certain system settings so that initial device setup wizards do not appear. That is, the device enters a state from which you can quickly install, debug, and test your app. <li>Settings: <ul> <li>Disables lock screen. <li>Disables emergency alerts. <li>Disables auto-sync for accounts. <li>Disables automatic system updates. </ul> <li>Other: <ul> <li>Disables preinstalled security apps.</li> </ul> </li> </ul> <p> If your app needs to detect and adapt to the default settings of the <code translate="no" dir="ltr">testharness</code> command, use the <a href="/reference/android/app/ActivityManager#isRunningInUserTestHarness()"> <code translate="no" dir="ltr">ActivityManager.isRunningInUserTestHarness()</code></a>. </p> <h3 id="sqlite" data-text="sqlite" tabindex="-1">sqlite</h3> <p><code translate="no" dir="ltr">sqlite3</code> starts the <code translate="no" dir="ltr">sqlite</code> command-line program for examining SQLite databases. It includes commands such as <code translate="no" dir="ltr">.dump</code> to print the contents of a table and <code translate="no" dir="ltr">.schema</code> to print the <code translate="no" dir="ltr">SQL CREATE</code> statement for an existing table. You can also execute SQLite commands from the command line, as shown:</p> <div></div><devsite-code><pre class="none" translate="no" dir="ltr" is-upgraded> $ adb -s emulator-5554 shell $ sqlite3 /data/data/com.example.app/databases/rssitems.db SQLite version 3.3.12 Enter &quot;.help&quot; for instructions </pre></devsite-code> <p class="note"><strong>Note:</strong> It is only possible to access a SQLite database if you have root access to the file system, for example, on an emulator.</p> <p>For more information, see the <a href="http://www.sqlite.org/cli.html" class="external-link" ><code translate="no" dir="ltr">sqlite3</code> command line documentation</a>.</p> <h2 id="backends" data-text="adb USB backends" tabindex="-1">adb USB backends</h2> <p>The adb server can interact with the USB stack through two backends. It can either use the native backend of the OS (Windows, Linux, or macOS) or it can use the <code translate="no" dir="ltr">libusb</code> backend. Some features, such as <code translate="no" dir="ltr">attach</code>, <code translate="no" dir="ltr">detach</code>, and USB speed detection, are only available when using <code translate="no" dir="ltr">libusb</code> backend. </p> <p> You can choose a backend by using the <code translate="no" dir="ltr">ADB_LIBUSB</code> environment variable. If it isn't set, adb uses its default backend. The default behavior varies among OS. Starting with <a href="https://developer.android.com/tools/releases/platform-tools#revisions">ADB v34</a>, the <code translate="no" dir="ltr">liubusb</code> backend is used by default on all OS except Windows, where the native backend is used by default. If <code translate="no" dir="ltr">ADB_LIBUSB</code> is set, it determines whether the native backend or <code translate="no" dir="ltr">libusb</code> is used. See the <a href="https://android.googlesource.com/platform/packages/modules/adb/+/refs/heads/master/docs/user/adb.1.md">adb manual page</a> for more information about adb environment variables. </p> <aside class="experimental"> <b>Experimental:</b> Support for using the <code translate="no" dir="ltr">libusb</code> backend with Windows is experimental. As of ADB v34, only the macOS and Linux platforms have been tested with the <code translate="no" dir="ltr">libusb</code> library. </aside> <h2 id="mdnsBackends" data-text="adb mDNS backends" tabindex="-1">adb mDNS backends</h2> <p>ADB can use the multicast DNS protocol to automatically connect the server and devices. The ADB server ships with two backends, Bonjour (Apple's mdnsResponder) and Openscreen. </p> <p>The Bonjour backend needs a daemon to be running on the host machine. On macOS Apple's built-in daemon is always running, but on Windows and Linux, the user must make sure the <code translate="no" dir="ltr">mdnsd</code> daemon is up and running. If the command <code translate="no" dir="ltr">adb mdns check</code> returns an error, it is likely that ADB is using the Bonjour backend but there is no Bonjour daemon running.</p> <p>The Openscreen backend does not need a daemon to be running on the machine. Support for the Openscreen backend on macOS starts at ADB v35. Windows and Linux are supported as of ADB v34.</p> <p>By default ADB uses the Bonjour backend. This behavior can be changed using the environment variable <code translate="no" dir="ltr">ADB_MDNS_OPENSCREEN</code> (set to <code translate="no" dir="ltr">1</code> or <code translate="no" dir="ltr">0</code>). See the <a href="https://android.googlesource.com/platform/packages/modules/adb/+/refs/heads/master/docs/user/adb.1.md">ADB manual page</a> for further details. </p> <h2 id="burstMode" data-text="adb Burst Mode (starting with ADB 36.0.0)" tabindex="-1">adb Burst Mode (starting with ADB 36.0.0)</h2> <p>Burst Mode is an experimental feature that lets ADB to keep on sending packets to a device even before the device has responded to the previous packet. This greatly increases the throughput of ADB when transferring large files and also reduces latency while debugging. </p> <p>Burst Mode is disabled by default. To enable the feature, do one of the following: <ul> <li>Set the environment variable <code translate="no" dir="ltr">ADB_DELAYED_ACK</code> to <code translate="no" dir="ltr">1</code>.</li> <li>In Android Studio, go to the debugger settings at <b>File</b> (or <b>Android Studio</b> on macOS) <b>> Settings > Build, Execution, Deployment > Debugger</b> and set <b>ADB Server Burst Mode</b> to <b>Enabled</b>.</li> </ul> </p> <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 2025-02-12 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 2025-02-12 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&amp;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>{&#34;at&#34;: &#34;True&#34;, &#34;ga4&#34;: [{&#34;id&#34;: &#34;G-QFRN08RN6E&#34;, &#34;purpose&#34;: 0}], &#34;ga4p&#34;: [{&#34;id&#34;: &#34;G-QFRN08RN6E&#34;, &#34;purpose&#34;: 0}], &#34;gtm&#34;: [{&#34;id&#34;: &#34;GTM-KMSWPCJ&#34;, &#34;purpose&#34;: 0}], &#34;parameters&#34;: {&#34;internalUser&#34;: &#34;False&#34;, &#34;language&#34;: {&#34;machineTranslated&#34;: &#34;False&#34;, &#34;requested&#34;: &#34;en&#34;, &#34;served&#34;: &#34;en&#34;}, &#34;pageType&#34;: &#34;article&#34;, &#34;projectName&#34;: &#34;Android Studio&#34;, &#34;signedIn&#34;: &#34;False&#34;, &#34;tenant&#34;: &#34;android&#34;, &#34;recommendations&#34;: {&#34;sourcePage&#34;: &#34;&#34;, &#34;sourceType&#34;: 0, &#34;sourceRank&#34;: 0, &#34;sourceIdenticalDescriptions&#34;: 0, &#34;sourceTitleWords&#34;: 0, &#34;sourceDescriptionWords&#34;: 0, &#34;experiment&#34;: &#34;&#34;}, &#34;experiment&#34;: {&#34;ids&#34;: &#34;&#34;}}}</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="BBtFjyX7f/DH49BWMijAXlZ6wW2C1x"> (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,["Analytics__enable_clearcut_logging","Cloud__enable_legacy_calculator_redirect","Cloud__enable_cloud_facet_chat","MiscFeatureFlags__enable_dark_theme","MiscFeatureFlags__enable_firebase_utm","Profiles__enable_developer_profiles_callout","Profiles__enable_complete_playlist_endpoint","TpcFeatures__enable_mirror_tenant_redirects","Profiles__enable_join_program_group_endpoint","Concierge__enable_pushui","DevPro__enable_cloud_innovators_plus","MiscFeatureFlags__enable_variable_operator","Significatio__enable_by_tenant","Cloud__enable_llm_concierge_chat","MiscFeatureFlags__enable_project_variables","Cloud__enable_cloud_shell","Search__enable_ai_search_summaries","EngEduTelemetry__enable_engedu_telemetry","Cloud__enable_cloud_dlp_service","CloudShell__cloud_code_overflow_menu","CloudShell__cloud_shell_button","Profiles__enable_release_notes_notifications","BookNav__enable_tenant_cache_key","Profiles__enable_recognition_badges","Profiles__enable_completecodelab_endpoint","Search__enable_ai_eligibility_checks","Profiles__enable_public_developer_profiles","Profiles__enable_profile_collections","Search__enable_dynamic_content_confidential_banner","Search__enable_suggestions_from_borg","DevPro__enable_developer_subscriptions","Profiles__enable_page_saving","MiscFeatureFlags__enable_explain_this_code","MiscFeatureFlags__emergency_css","Search__enable_page_map","Experiments__reqs_query_experiments","Profiles__enable_stripe_subscription_management","Profiles__enable_dashboard_curated_recommendations","Profiles__enable_completequiz_endpoint","Profiles__require_profile_eligibility_for_signin","TpcFeatures__enable_unmirrored_page_left_nav","Cloud__enable_cloudx_ping","Profiles__enable_awarding_url","Cloud__enable_cloudx_experiment_ids","MiscFeatureFlags__developers_footer_image","MiscFeatureFlags__enable_view_transitions","MiscFeatureFlags__developers_footer_dark_image","Cloud__enable_free_trial_server_call","Cloud__enable_cloud_shell_fte_user_flow"],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>

Pages: 1 2 3 4 5 6 7 8 9 10