CINXE.COM

Android Jetpack Dev Resources - Android Developers

<!doctype html> <html lang="en" dir="ltr"> <head><script type="text/javascript" src="/_static/js/bundle-playback.js?v=HxkREWBo" charset="utf-8"></script> <script type="text/javascript" src="/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://developer.android.com/jetpack","20230331154515","https://web.archive.org/","web","/_static/", "1680277515"); </script> <link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=S1zqJCYt" /> <link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <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="#3ddc84"><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="/web/20230331154515/https://developer.android.com/_pwa/android/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//web.archive.org/web/20230331154515/https://www.gstatic.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20230331154515/https://fonts.gstatic.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20230331154515/https://fonts.googleapis.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20230331154515/https://apis.google.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20230331154515/https://www.google-analytics.com/" crossorigin><link rel="stylesheet" href="//web.archive.org/web/20230331154515cs_/https://fonts.googleapis.com/css?family=Roboto:300,400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&amp;display=swap"> <link rel="stylesheet" href="//web.archive.org/web/20230331154515cs_/https://fonts.googleapis.com/css2?family=Material+Icons&amp;family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&amp;display=block"><link rel="stylesheet" href="https://web.archive.org/web/20230331154515cs_/https://www.gstatic.com/devrel-devsite/prod/vc7c98be6f4d139e237c3cdaad6a00bb295b070a83e505cb2fa4435daae3d0901/android/css/app.css"> <link rel="shortcut icon" href="https://web.archive.org/web/20230331154515im_/https://www.gstatic.com/devrel-devsite/prod/vc7c98be6f4d139e237c3cdaad6a00bb295b070a83e505cb2fa4435daae3d0901/android/images/favicon.png"> <link rel="apple-touch-icon" href="https://web.archive.org/web/20230331154515im_/https://www.gstatic.com/devrel-devsite/prod/vc7c98be6f4d139e237c3cdaad6a00bb295b070a83e505cb2fa4435daae3d0901/android/images/touchicon-180.png"><link rel="canonical" href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack"><link rel="search" type="application/opensearchdescription+xml" title="Android Developers" href="https://web.archive.org/web/20230331154515/https://developer.android.com/s/opensearch.xml"> <link rel="alternate" hreflang="en" href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack"/><link rel="alternate" hreflang="x-default" href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack"/><link rel="alternate" hreflang="zh-Hans" href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack?hl=zh-cn"/><link rel="alternate" hreflang="zh-Hant" href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack?hl=zh-tw"/><link rel="alternate" hreflang="fr" href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack?hl=fr"/><link rel="alternate" hreflang="id" href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack?hl=id"/><link rel="alternate" hreflang="ja" href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack?hl=ja"/><link rel="alternate" hreflang="ko" href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack?hl=ko"/><link rel="alternate" hreflang="pt-BR" href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack?hl=pt-br"/><link rel="alternate" hreflang="es-419" href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack?hl=es-419"/><link rel="alternate" hreflang="vi" href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack?hl=vi"/><title>Android Jetpack Dev Resources - Android Developers</title> <meta property="og:title" content="Android Jetpack Dev Resources - Android Developers"><meta name="description" content="Follow best practices, eliminate boilerplate code, and reduce fragmentation "> <meta property="og:description" content="Follow best practices, eliminate boilerplate code, and reduce fragmentation "><meta name="description" content="Android Jetpack provides the most recent app dev resources and best practices through a suite of code libraries. Get started using Jetpack today. "><meta property="og:description" content="Android Jetpack provides the most recent app dev resources and best practices through a suite of code libraries. Get started using Jetpack today. "><meta property="og:url" content="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack"><meta property="og:image" content="https://web.archive.org/web/20230331154515im_/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"> <link rel="stylesheet" href="/web/20230331154515cs_/https://developer.android.com/extras.css"></head> <body class="" template="landing" theme="android-theme" type="product" layout="full" pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"><devsite-header> <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="/web/20230331154515/https://developer.android.com/" 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"> <img src="https://web.archive.org/web/20230331154515im_/https://www.gstatic.com/devrel-devsite/prod/vc7c98be6f4d139e237c3cdaad6a00bb295b070a83e505cb2fa4435daae3d0901/android/images/lockup.svg" class="devsite-site-logo" alt="Android Developers"> </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> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/about" track-metadata-eventdetail="https://developer.android.com/about" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - platform" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Platform" track-name="platform"> Platform </a> </tab> <tab> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/studio" track-metadata-eventdetail="https://developer.android.com/studio" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - android studio" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Android Studio" track-name="android studio"> Android Studio </a> </tab> <tab> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/distribute" track-metadata-eventdetail="https://developer.android.com/distribute" class="devsite-tabs-content gc-analytics-event " 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 active> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack" track-metadata-eventdetail="https://developer.android.com/jetpack" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - jetpack" track-metadata-module="primary nav" aria-label="Jetpack, selected" data-category="Site-Wide Custom Events" data-label="Tab: Jetpack" track-name="jetpack"> Jetpack </a> </tab> <tab> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/kotlin" track-metadata-eventdetail="https://developer.android.com/kotlin" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - kotlin" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Kotlin" track-name="kotlin"> Kotlin </a> </tab> <tab> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/docs" track-metadata-eventdetail="https://developer.android.com/docs" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - docs" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Docs" track-name="docs"> Docs </a> </tab> <tab> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/games" track-metadata-eventdetail="https://developer.android.com/games" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - games" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Games" track-name="games"> Games </a> </tab> </nav> </devsite-tabs> </div> <devsite-search aria-expanded="false" aria-haspopup="listbox" enable-signin enable-search enable-suggestions enable-query-completion project-name="Jetpack" tenant-name="Android Developers" role="combobox"> <form class="devsite-search-form" action="https://web.archive.org/web/20230331154515/https://developer.android.com/s/results" method="GET"> <div class="devsite-search-container"> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-haspopup="false" aria-multiline="false" aria-label="Search box" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="searchbox" type="text" value=""> <div class="devsite-search-image material-icons" aria-hidden="true"></div> </div> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> </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-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en">English</a> </li> <li role="presentation"> <a role="menuitem" lang="id">Bahasa Indonesia</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="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="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://web.archive.org/web/20230331154515/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://web.archive.org/web/20230331154515/https://developer.android.com/jetpack" 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="Jetpack"> Jetpack </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 active> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack" track-metadata-eventdetail="https://developer.android.com/jetpack" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - overview" track-metadata-module="primary nav" aria-label="Overview, selected" data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview"> Overview </a> </tab> <tab> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack/getting-started" track-metadata-eventdetail="https://developer.android.com/jetpack/getting-started" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - get started" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Get Started" track-name="get started"> Get Started </a> </tab> <tab> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack/samples" track-metadata-eventdetail="https://developer.android.com/jetpack/samples" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - samples" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Samples" track-name="samples"> Samples </a> </tab> <tab> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack/androidx/explorer" track-metadata-eventdetail="https://developer.android.com/jetpack/androidx/explorer" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - libraries" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Libraries" track-name="libraries"> Libraries </a> </tab> <tab> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack/community" track-metadata-eventdetail="https://developer.android.com/jetpack/community" class="devsite-tabs-content gc-analytics-event " 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> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars hidden> <div class="devsite-book-nav-filter hidden"> <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="/web/20230331154515/https://developer.android.com/" 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"> <img src="https://web.archive.org/web/20230331154515im_/https://www.gstatic.com/devrel-devsite/prod/vc7c98be6f4d139e237c3cdaad6a00bb295b070a83e505cb2fa4435daae3d0901/android/images/lockup.svg" class="devsite-site-logo" alt="Android Developers"> </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="/web/20230331154515/https://developer.android.com/about" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Platform" track-name="platform" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Platform" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Platform </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230331154515/https://developer.android.com/studio" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Android Studio" track-name="android studio" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android Studio" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Android Studio </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230331154515/https://developer.android.com/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="/web/20230331154515/https://developer.android.com/jetpack" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Jetpack" track-name="jetpack" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Jetpack" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Jetpack </span> </a> <ul class="devsite-nav-responsive-tabs"> <li class="devsite-nav-item"> <a href="/web/20230331154515/https://developer.android.com/jetpack" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230331154515/https://developer.android.com/jetpack/getting-started" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Get Started" track-name="get started" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Get Started" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Get Started </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230331154515/https://developer.android.com/jetpack/samples" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Samples" track-name="samples" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Samples" track-type="globalNav" 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="/web/20230331154515/https://developer.android.com/jetpack/androidx/explorer" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Libraries" track-name="libraries" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Libraries" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Libraries </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230331154515/https://developer.android.com/jetpack/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> </ul> </li> <li class="devsite-nav-item"> <a href="/web/20230331154515/https://developer.android.com/kotlin" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Kotlin" track-name="kotlin" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Kotlin" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Kotlin </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230331154515/https://developer.android.com/docs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Docs" track-name="docs" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Docs" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Docs </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230331154515/https://developer.android.com/games" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Games" track-name="games" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Games" track-type="globalNav" 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="/web/20230331154515/https://developer.android.com/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> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content"> <div class="devsite-sidebar"> <div class="devsite-sidebar-content"> <devsite-toc class="devsite-nav" role="navigation" aria-label="On this page" depth="2" scrollbars disabled></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://web.archive.org/web/20230331154515/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://web.archive.org/web/20230331154515/https://developer.android.com/jetpack" 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="Jetpack"> Jetpack </a> </li> </ul> </div> <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" 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> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded disabled> </devsite-toc> <div class="devsite-article-body clearfix "> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-50 devsite-landing-row-hero devsite-landing-row-no-image-background" background="/web/20230331154515im_/https://developer.android.com/navy" header-position="top"> <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item" description-position="bottom"> <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack/getting-started"> <img alt="" src="https://web.archive.org/web/20230331154515im_/https://developer.android.com/static/images/hero-assets/android-jetpack.svg" srcset="" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 708px" loading="lazy"> </a> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <h3 id="android-jetpack" data-text="Android Jetpack" class="hide-from-toc no-link" tabindex="0"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack/getting-started"> Android Jetpack </a> </h3> <div class="devsite-landing-row-item-description-content"> Jetpack is a suite of libraries to help developers follow best practices, reduce boilerplate code, and write code that works consistently across Android versions and devices so that developers can focus on the code they care about. </div> <div class="devsite-landing-row-item-buttons"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack/getting-started" class="button button-primary ">Get started using Jetpack</a> <a href="https://web.archive.org/web/20230331154515/https://www.youtube.com/watch?v=LmkKFCfmnhQ&amp;feature=youtu.be" class="button " data-modal-dialog-id="jetpack-video-lightbox">Watch video</a> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-67 devsite-landing-row-no-image-background devsite-landing-row-padding-xlarge android-promo" header-position="top"> <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item" background="/web/20230331154515im_/https://developer.android.com/light-green" description-position="left"> <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <img alt="" src="https://web.archive.org/web/20230331154515im_/https://developer.android.com/static/training/basics/firstapp/images/first_app.svg" srcset="" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 464px" loading="lazy"> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-labels"> <span class=" ">Jetpack Compose</span> </div> <h3 id="develop-ui-with-compose" data-text="Develop UI with Compose" class="hide-from-toc no-link" tabindex="0"> Develop UI with Compose </h3> <div class="devsite-landing-row-item-description-content"> A modern toolkit for building native UI that enables you to simplify and accelerate UI development on Android. </div> <div class="devsite-landing-row-item-buttons"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack/compose" class="button button-primary ">Get started</a> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-3-up dac-jetpack-updates" header-position="top"> <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header"> <div class="devsite-landing-row-header-text"> <h2 id="latest-updates" data-text="Latest updates" tabindex="0"> Latest updates </h2> </div> </header> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item devsite-landing-row-item-no-media dac-icon-card" background="/web/20230331154515im_/https://developer.android.com/light-blue" description-position="bottom"> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <h3 id="compose-october-22" data-text="Compose October 22" class="hide-from-toc no-link" tabindex="0"> <a href="https://web.archive.org/web/20230331154515/https://android-developers.googleblog.com/2022/10/whats-new-in-jetpack-compose.html"> Compose October 22 </a> </h3> <div class="devsite-landing-row-item-description-content"> Includes new features such as VariableFonts and SwipeToRefresh to make your UI development seamless. We also introduced Compose BOMs to help you track different Compose stable releases </div> <div class="devsite-landing-row-item-buttons"> <a href="https://web.archive.org/web/20230331154515/https://android-developers.googleblog.com/2022/10/whats-new-in-jetpack-compose.html" class="button dac-button dac-flat-button ">Learn more</a> </div> </div> </div> </div> <div class="devsite-landing-row-item devsite-landing-row-item-no-media dac-icon-card" background="/web/20230331154515im_/https://developer.android.com/light-blue" description-position="bottom"> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <h3 id="paging-31" data-text="Paging 3.1" class="hide-from-toc no-link" tabindex="0"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/topic/libraries/architecture/paging/v3-migration#benefits"> Paging 3.1 </a> </h3> <div class="devsite-landing-row-item-description-content"> Paging 3 includes first-class support for Kotlin coroutines and Flow, as well as laying the groundwork for Compose integration. This version has a focus on reducing boilerplate in your implementation. </div> <div class="devsite-landing-row-item-buttons"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/topic/libraries/architecture/paging/v3-migration#benefits" class="button dac-button dac-flat-button ">Learn more</a> </div> </div> </div> </div> <div class="devsite-landing-row-item devsite-landing-row-item-no-media dac-icon-card" background="/web/20230331154515im_/https://developer.android.com/light-blue" description-position="bottom"> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <h3 id="wear-compose-10" data-text="Wear Compose 1.0" class="hide-from-toc no-link" tabindex="0"> <a href="https://web.archive.org/web/20230331154515/https://android-developers.googleblog.com/2022/07/compose-for-wear-os-10-stable.html"> Wear Compose 1.0 </a> </h3> <div class="devsite-landing-row-item-description-content"> Leverage Compose on Wear OS! Compose for Wear OS builds upon the core Compose libraries providing additional wearable-specific components and, where appropriate, alternate implementations of core Compose components tailored to wearable devices. </div> <div class="devsite-landing-row-item-buttons"> <a href="https://web.archive.org/web/20230331154515/https://android-developers.googleblog.com/2022/07/compose-for-wear-os-10-stable.html" class="button dac-button dac-flat-button ">Learn more</a> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-3-up devsite-landing-row-padding-xlarge" background="/web/20230331154515im_/https://developer.android.com/grey" header-position="top"> <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header"> <div class="devsite-landing-row-header-text"> <h2 id="learn-to-use-jetpack" data-text="Learn to use Jetpack" tabindex="0"> Learn to use Jetpack </h2> </div> </header> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item devsite-landing-row-item-no-media fully-clickable" background="/web/20230331154515im_/https://developer.android.com/white" description-position="bottom"> <div class="devsite-landing-row-item-description" icon-position="top"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/courses/android-basics-compose/course"> <div class="devsite-landing-row-item-icon-container" size="medium"> <img class="devsite-landing-row-item-icon" alt="" src="https://web.archive.org/web/20230331154515im_/https://developer.android.com/static/images/picto-icons/learn.svg" srcset="" sizes="64px" loading="lazy"> </div> </a> <div class="devsite-landing-row-item-body"> <h3 id="fundamentals-training" data-text="Fundamentals Training" class="hide-from-toc no-link" tabindex="0"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/courses/android-basics-compose/course"> Fundamentals Training </a> </h3> <div class="devsite-landing-row-item-description-content"> Learn the essential Jetpack libraries in the Android Basics with Compose course and reduce boilerplate in your app </div> <div class="devsite-landing-row-item-buttons"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/courses/android-basics-compose/course" class="button gc-analytics-event button-with-icon" data-category="android-jetpack-landing-page" data-label="codelab-android-kotlin-fundamentals" data-action="click">Start course<span class="material-icons icon-after" aria-hidden="true">open_in_new</span></a> </div> </div> </div> </div> <div class="devsite-landing-row-item devsite-landing-row-item-no-media fully-clickable" background="/web/20230331154515im_/https://developer.android.com/white" description-position="bottom"> <div class="devsite-landing-row-item-description" icon-position="top"> <a href="https://web.archive.org/web/20230331154515/https://codelabs.developers.google.com/codelabs/android-room-with-a-view-kotlin/#0"> <div class="devsite-landing-row-item-icon-container" size="medium"> <img class="devsite-landing-row-item-icon" alt="" src="https://web.archive.org/web/20230331154515im_/https://developer.android.com/static/images/picto-icons/courses.svg" srcset="" sizes="64px" loading="lazy"> </div> </a> <div class="devsite-landing-row-item-body"> <h3 id="hands-on-tutorial" data-text="Hands-on Tutorial" class="hide-from-toc no-link" tabindex="0"> <a href="https://web.archive.org/web/20230331154515/https://codelabs.developers.google.com/codelabs/android-room-with-a-view-kotlin/#0"> Hands-on Tutorial </a> </h3> <div class="devsite-landing-row-item-description-content"> Get hands-on with three Jetpack libraries that simplify your data layer: LiveData, ViewModel and Room </div> <div class="devsite-landing-row-item-buttons"> <a href="https://web.archive.org/web/20230331154515/https://codelabs.developers.google.com/codelabs/android-room-with-a-view-kotlin/#0" class="button gc-analytics-event button-with-icon" data-label="codelab-android-room-with-a-view-kotlin" data-category="android-jetpack-landing-page" data-action="click">Start tutorial<span class="material-icons icon-after" aria-hidden="true">open_in_new</span></a> </div> </div> </div> </div> <div class="devsite-landing-row-item devsite-landing-row-item-no-media fully-clickable" background="/web/20230331154515im_/https://developer.android.com/white" description-position="bottom"> <div class="devsite-landing-row-item-description" icon-position="top"> <a href="https://web.archive.org/web/20230331154515/https://github.com/android/nowinandroid"> <div class="devsite-landing-row-item-icon-container" size="medium"> <img class="devsite-landing-row-item-icon" alt="" src="https://web.archive.org/web/20230331154515im_/https://developer.android.com/static/images/picto-icons/code-1.svg" srcset="" sizes="64px" loading="lazy"> </div> </a> <div class="devsite-landing-row-item-body"> <h3 id="now-in-android-sample-app" data-text="Now in Android sample app" class="hide-from-toc no-link" tabindex="0"> <a href="https://web.archive.org/web/20230331154515/https://github.com/android/nowinandroid"> Now in Android sample app </a> </h3> <div class="devsite-landing-row-item-description-content"> Explore how modern Android architecture is implemented in a real world app </div> <div class="devsite-landing-row-item-buttons"> <a href="https://web.archive.org/web/20230331154515/https://github.com/android/nowinandroid" class="button gc-analytics-event button-with-icon" data-category="android-jetpack-landing-page" data-label="sample-now-in-android" data-action="click">View the code<span class="material-icons icon-after" aria-hidden="true">open_in_new</span></a> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-2-up dac-jetpack-libraries-releases" background="/web/20230331154515im_/https://developer.android.com/white" header-position="top"> <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item devsite-landing-row-item-no-media dac-jetpack-libraries" background="/web/20230331154515im_/https://developer.android.com/grey" description-position="bottom"> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <h3 id="jetpack-libraries-a-hrefjetpackandroidxexplorer-classbutton-dac-button-dac-flat-button-ctaexplore-all-librariesa" data-text="Jetpack libraries Explore all libraries" class="hide-from-toc no-link" tabindex="0"> Jetpack libraries <a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/explorer" class="button dac-button dac-flat-button cta">Explore all libraries</a> </h3> <div class="devsite-landing-row-item-description-content"> <devsite-filter highlight="td a, td"> <input type="text" placeholder="Filter by keyword or use case"> <p>* Popular and often-used libraries are listed first</p> <table> <col style="width:25%"> <col style="width:75%"> <tbody class="list"> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/activity">activity *</a></td><td>Access composable APIs built on top of Activity.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/appcompat">appcompat *</a></td><td>Allows access to new APIs on older API versions of the platform (many using Material Design).</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/appsearch">appsearch *</a></td><td>Build custom in-app search capabilities for your users.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/camera">camera *</a></td><td>Build mobile camera apps.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/compose">compose *</a></td><td>Define your UI programmatically with composable functions that describe its shape and data dependencies.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/databinding">databinding *</a></td><td>Bind UI components in your layouts to data sources in your app using a declarative format.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/fragment">fragment *</a></td><td>Segment your app into multiple, independent screens that are hosted within an Activity.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/hilt">hilt *</a></td><td>Extend the functionality of Dagger Hilt to enable dependency injection of certain classes from the androidx libraries.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/lifecycle">lifecycle *</a></td><td>Build lifecycle-aware components that can adjust behavior based on the current lifecycle state of an activity or fragment.</td></tr> <tr> <td><a href="https://web.archive.org/web/20230331154515/https://material.io/develop/android">Material Design Components *</a></td> <td>Modular and customizable Material Design UI components for Android.</td> </tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/navigation">navigation *</a></td><td>Build and structure your in-app UI, handle deep links, and navigate between screens.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/paging">paging *</a></td><td>Load data in pages, and present it in a RecyclerView.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/room">room *</a></td><td>Create, store, and manage persistent data backed by a SQLite database.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/test">test *</a></td><td>Testing in Android.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/work">work *</a></td><td>Schedule and execute deferrable, constraint-based background tasks.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/ads">ads</a></td><td>Get an advertising ID with or without Play Services.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/annotation">annotation</a></td><td>Expose metadata that helps tools and other developers understand your app's code.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/arch-core">arch.core</a></td><td>Helper for other arch dependencies, including JUnit test rules that can be used with LiveData.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/asynclayoutinflater">asynclayoutinflater</a></td><td>Inflate layouts asynchronously to avoid jank in the UI.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/autofill">autofill</a></td><td>Improve autofill accuracy via extending hints.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/benchmark">benchmark</a></td><td>Accurately measure your code's performance within Android Studio.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/biometric">biometric</a></td><td>Authenticate with biometrics or device credentials, and perform cryptographic operations.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/browser">browser</a></td><td>Display webpages in the user's default browser.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/car-app">car-app</a></td><td>Build navigation and point of interest apps for Android Auto and Android Automotive OS.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/cardview">cardview</a></td><td>Implement the Material Design card pattern with round corners and drop shadows.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/collection">collection</a></td><td>Reduce the memory impact of existing and new collections that are small.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/compose-animation">compose.animation</a></td><td>Build animations in their Jetpack Compose applications to enrich the user experience.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/compose-compiler">compose.compiler</a></td><td>Transform @Composable functions and enable optimizations with a Kotlin compiler plugin.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/compose-foundation">compose.foundation</a></td><td>Write Jetpack Compose applications with ready to use building blocks and extend foundation to build your own design system pieces.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/compose-material">compose.material</a></td><td>Build Jetpack Compose UIs with ready to use Material Design Components. This is the higher level entry point of Compose, designed to provide components that match those described at www.material.io.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/compose-material3">compose.material3</a></td><td>Build Jetpack Compose UIs with Material Design 3 Components, the next evolution of Material Design. Material 3 includes updated theming and components and Material You personalization features like dynamic color, and is designed to be cohesive with the new Android 12 visual style and system UI.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/compose-runtime">compose.runtime</a></td><td>Fundamental building blocks of Compose's programming model and state management, and core runtime for the Compose Compiler Plugin to target.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/compose-ui">compose.ui</a></td><td>Fundamental components of compose UI needed to interact with the device, including layout, drawing, and input.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/concurrent">concurrent</a></td><td>Move tasks off the main thread with coroutines and take advantage of ListenableFuture.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/constraintlayout">constraintlayout</a></td><td>Position and size widgets in a flexible way with relative positioning.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/contentpager">contentpager</a></td><td>Load and page across ContentProvider data in a background thread.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/coordinatorlayout">coordinatorlayout</a></td><td>Position top-level application widgets, such as AppBarLayout and FloatingActionButton.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/core">core</a></td><td>Target the latest platform features and APIs while also supporting older devices.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/core-uwb">core.uwb</a></td><td>Implement UWB (ultra-wideband) on supported devices.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/credentials">credentials</a></td><td> This library provides unified access to a user's credentials. This can include passwords, passkeys and federated credentials. This library should be used to provide seamless and secure sign-in experiences. </td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/cursoradapter">cursoradapter</a></td><td>Expose Cursor data to a ListView widget.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/customview">customview</a></td><td>Implement custom views.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/datastore">datastore</a></td><td>Store data asynchronously, consistently, and transactionally, overcoming some of the drawbacks of SharedPreferences</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/documentfile">documentfile</a></td><td>View a file document.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/draganddrop">draganddrop</a></td><td>Accept drag-and-drop data from another app or within an app, and show a consistent drop target affordance.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/drawerlayout">drawerlayout</a></td><td>Implement a Material Design drawer widget.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/dynamicanimation">dynamicanimation</a></td><td>Create smooth animations with a physics-based animation API.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/emoji">emoji</a></td><td>Display emoji in current and older devices.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/emoji2">emoji2</a></td><td>Display emoji in current and older devices.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/enterprise">enterprise</a></td><td>Create enterprise-ready applications.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/exifinterface">exifinterface</a></td><td>Read and write image file EXIF tags.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/games">games</a></td><td>Use the Android Game SDK natively in your app to perform complex games tasks, like Frame Pacing.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/glance">glance</a></td><td>Build layouts for remote surfaces using a Jetpack Compose-style API.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/graphics">graphics</a></td><td>Leverage graphics facilities across multiple Android platform releases</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/gridlayout">gridlayout</a></td><td>Implement a grid layout.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/health">health</a></td><td>Create performant health applications in a platform agnostic way.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/health-connect">health.connect</a></td><td>Allows developers to read or write user's health and fitness records.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/heifwriter">heifwriter</a></td><td>Encode an image or image collection in HEIF format using the available codecs on the Android device.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/input">input</a></td><td>Reduce the latency of input interactions by predicting future MotionEvents</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/interpolator">interpolator</a></td><td>Use animation interpolators on older platforms.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/javascriptengine">javascriptengine</a></td><td>Enable your Android app to evaluate JavaScript.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/jetifier">jetifier</a></td><td>A standalone tool that migrates a library's dependencies on the deprecated support library to equivalent AndroidX dependencies.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/leanback">leanback</a></td><td>Write apps for Android TV devices using dpad-friendly widgets and template fragments.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/legacy">legacy</a></td><td>This artifact and its classes are deprecated. Starting with Android 8, background check restrictions make this class no longer useful.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/loader">loader</a></td><td>Load data for your UI that survives configuration changes.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/localbroadcastmanager">localbroadcastmanager</a></td><td>This artifact and its classes are deprecated. Use LiveData or reactive streams instead.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/media">media</a></td><td>Share media contents and controls with other apps. Superseded by media2.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/media2">media2</a></td><td>Share media contents and controls with other apps.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/media3">media3 *</a></td><td>Support libraries for media use cases.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/mediarouter">mediarouter</a></td><td>Enable media display and playback on remote receiver devices using a common user interface.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/multidex">multidex</a></td><td>Deploy applications with multiple dex files on pre-Android 5 devices.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/metrics">metrics</a></td><td>Track and report various runtime metrics for your application</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/palette">palette</a></td><td>Extract representative color palettes from images.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/percentlayout">percentlayout</a></td><td>This artifact and its classes are deprecated. Use ConstraintLayout and associated layouts instead.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/preference">preference</a></td><td>Build interactive settings screens without needing to interact with device storage or manage the UI.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/print">print</a></td><td>Print photos, docs, and other graphics and images from your app.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/privacysandbox-ads">privacysandbox.ads</a></td><td>This library enables integration with Privacy Preserving APIs, which are part of Privacy Sandbox on Android.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/privacysandbox-sdkruntime">privacysandbox.sdkruntime</a></td><td>This library provides components for SdkRuntime aware consumers</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/privacysandbox-tools">privacysandbox.tools</a></td><td>A library to utilize the Privacy Sandbox functionality in Android</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/privacysandbox-ui">privacysandbox.ui</a></td><td>TODO</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/profileinstaller">profileinstaller</a></td><td>Enables libraries to prepopulate ahead of time compilation traces to be read by ART.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/recommendation">recommendation</a></td><td>Promote content to the Android TV Launcher home screen.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/recyclerview">recyclerview</a></td><td>Display large sets of data in your UI while minimizing memory usage.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/remotecallback">remotecallback</a></td><td>Create a wrapper that makes it easier for developers to provide a PendingIntent.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/resourceinspection">resourceinspection</a></td><td>Surface the attributes of custom views in Android Studio’s Live Layout Inspector.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/savedstate">savedstate</a></td><td>Write pluggable components that save the UI state when a process dies, and restore it when the process restarts.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/security">security</a></td><td>Safely manage keys and encrypt files and sharedpreferences.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/sharetarget">sharetarget</a></td><td>Provide backwards compatibility for using shortcuts as direct share targets.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/slice">slice</a></td><td>Display templated UI elements outside your app.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/slidingpanelayout">slidingpanelayout</a></td><td>Implement a sliding pane UI pattern.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/startup">startup</a></td><td>Implement a straightforward, performant way to initialize components at app startup.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/sqlite">sqlite</a></td><td>Work with local SQLite databases. If possible, use Room instead.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/swiperefreshlayout">swiperefreshlayout</a></td><td>Implement the swipe-to-refresh UI pattern.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/test-uiautomator">test.uiautomator</a></td><td>Framework for cross app functional UI testing</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/textclassifier">textclassifier</a></td><td>Identifies conversations, links, selections, and other similar constructs in text.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/tracing">tracing</a></td><td>Write trace events to the system trace buffer.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/transition">transition</a></td><td>Animate motion in the UI with starting and ending layouts.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/tv">tv</a></td><td>Provides developers with Compose and Material design functionalities in order to write applications for TV</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/tvprovider">tvprovider</a></td><td>Provide Android TV channels.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/vectordrawable">vectordrawable</a></td><td>Render vector graphics.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/versionedparcelable">versionedparcelable</a></td><td>Provides a stable and compact binary serialization format that can be passed across processes or persisted safely.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/viewpager">viewpager</a></td><td>Display Views or Fragments in a swipeable format. If possible, use viewpager2 instead.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/viewpager2">viewpager2</a></td><td>Display Views or Fragments in a swipeable format.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/wear">wear</a></td><td>Create applications for Wear OS by Google smartwatches.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/wear-compose">wear.compose</a></td><td>Write Jetpack Compose applications for Wearable devices by providing functionality to support wearable specific devices, sizes, shapes and navigation gestures.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/wear-protolayout">wear.protolayout</a></td><td>This library allows defining a set of UI layouts and non-UI expressions to be rendered/evaluated on a remote surfaces.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/wear-tiles">wear.tiles</a></td><td>Create applications for Wear OS by Google smartwatches.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/wear-watchface">wear.watchface</a></td><td>Create applications for Wear OS by Google smartwatches.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/webkit">webkit</a></td><td>Work with modern WebView APIs on Android 5 and above.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/window">window</a></td><td>Helps support different device form factors such as foldable devices.</td></tr> <tr><td><a href="/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/window-extensions-core">window.extensions.core</a></td><td>The Core APIs for Window Manager Library Extensions</td></tr> </tbody> </table> <devsite-pagination container="devsite-filter" elements=".list tr" elements-per-page="10" initial-results="7" buttons> </devsite-pagination> </devsite-filter> </div> </div> </div> </div> <div class="devsite-landing-row-item devsite-landing-row-item-no-media dac-jetpack-releases" background="/web/20230331154515im_/https://developer.android.com/light-blue" description-position="bottom"> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <h3 id="whats-new" data-text="What's new" class="hide-from-toc no-link" tabindex="0"> What's new </h3> <div class="devsite-landing-row-item-description-content"> <dl> <dt><a href="https://web.archive.org/web/20230331154515/https://android-developers.googleblog.com/2022/10/whats-new-in-jetpack-compose.html">Compose October 22 Release</a></dt> <dd>We introduced new features such as VariableFonts and SwipeToRefresh to make your UI development seamless. We also introduced Compose BOMs to help you track different compose stable releases. Additionally, support for stable Material3 was launched. <br> <br> Check out our <a href="https://web.archive.org/web/20230331154515/https://android-developers.googleblog.com/2022/10/whats-new-in-jetpack-compose.html">blog post</a> for more details!</dd> <dt><a href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/car-app#version_12_2">Car 1.2.0</a></dt> <dd>Car apps built with 1.2.0 targeting the Android Automotive OS platform can now be published to the Play Store open testing channel.</dd> <dt><a href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack/androidx/releases/test#espresso_350_3">Espresso 3.5.0</a></dt> <dd>We included tracing for our tests. You should now see test specific spans when viewing traces from test runs in perfetto</dd> </dl> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-3-up devsite-landing-row-padding-xlarge" header-position="top"> <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header"> <div class="devsite-landing-row-header-text"> <h2 id="why-use-android-jetpack" data-text="Why use Android Jetpack?" tabindex="0"> Why use Android Jetpack? </h2> </div> </header> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item devsite-landing-row-item-no-media fully-clickable" background="/web/20230331154515im_/https://developer.android.com/grey" description-position="bottom"> <div class="devsite-landing-row-item-description" icon-position="top"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/stories/apps/iheartradio"> <div class="devsite-landing-row-item-icon-container" size="medium"> <img class="devsite-landing-row-item-icon" alt="" src="https://web.archive.org/web/20230331154515im_/https://developer.android.com/static/images/picto-icons/badge.svg" srcset="" sizes="64px" loading="lazy"> </div> </a> <div class="devsite-landing-row-item-body"> <h3 id="follow-best-practices" data-text="Follow best practices" class="hide-from-toc no-link" tabindex="0"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/stories/apps/iheartradio"> Follow best practices </a> </h3> <div class="devsite-landing-row-item-description-content"> Built around modern design practices, Android Jetpack Libraries enable fewer crashes and less memory leaks with backwards-compatibility baked in. </div> <div class="devsite-landing-row-item-buttons"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/stories/apps/iheartradio" class="button gc-analytics-event " data-category="android-jetpack-landing-page" data-action="click" data-label="stories-apps-iheartradio">Review case study</a> </div> </div> </div> </div> <div class="devsite-landing-row-item devsite-landing-row-item-no-media fully-clickable" background="/web/20230331154515im_/https://developer.android.com/grey" description-position="bottom"> <div class="devsite-landing-row-item-description" icon-position="top"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/stories/apps/monzo-camerax"> <div class="devsite-landing-row-item-icon-container" size="medium"> <img class="devsite-landing-row-item-icon" alt="" src="https://web.archive.org/web/20230331154515im_/https://developer.android.com/static/images/spot-icons/drag-drop.svg" srcset="" sizes="64px" loading="lazy"> </div> </a> <div class="devsite-landing-row-item-body"> <h3 id="eliminate-boilerplate-code" data-text="Eliminate boilerplate code" class="hide-from-toc no-link" tabindex="0"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/stories/apps/monzo-camerax"> Eliminate boilerplate code </a> </h3> <div class="devsite-landing-row-item-description-content"> Android Jetpack manages tedious activities like background tasks, navigation, and lifecycle management, so you can focus on what makes your app great. </div> <div class="devsite-landing-row-item-buttons"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/stories/apps/monzo-camerax" class="button gc-analytics-event " data-label="stories-apps-monzo-camerax" data-action="click" data-category="android-jetpack-landing-page">Review case study</a> </div> </div> </div> </div> <div class="devsite-landing-row-item devsite-landing-row-item-no-media fully-clickable" background="/web/20230331154515im_/https://developer.android.com/grey" description-position="bottom"> <div class="devsite-landing-row-item-description" icon-position="top"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack/testimonials"> <div class="devsite-landing-row-item-icon-container" size="medium"> <img class="devsite-landing-row-item-icon" alt="" src="https://web.archive.org/web/20230331154515im_/https://developer.android.com/static/images/picto-icons/reduce.svg" srcset="" sizes="64px" loading="lazy"> </div> </a> <div class="devsite-landing-row-item-body"> <h3 id="reduce-fragmentation" data-text="Reduce fragmentation" class="hide-from-toc no-link" tabindex="0"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack/testimonials"> Reduce fragmentation </a> </h3> <div class="devsite-landing-row-item-description-content"> Reduce complexity with libraries that work consistently across Android versions and devices. </div> <div class="devsite-landing-row-item-buttons"> <a href="https://web.archive.org/web/20230331154515/https://developer.android.com/jetpack/testimonials" class="button gc-analytics-event " data-label="jetpack-testimonials" data-category="android-jetpack-landing-page" data-action="click">Read testimonials</a> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-100 devsite-landing-row-padding-xlarge" header-position="top"> <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header"> <div class="devsite-landing-row-header-text"> <h2 id="news-and-videos" data-text="News and videos" tabindex="0"> News and videos </h2> </div> </header> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item devsite-landing-row-item-no-media" description-position="bottom"> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-description-content"> <devsite-dynamic-content class="android-editorial-and-updates" fields="image origin title summary date" initial-results="3" items-per-page="3" query="keyword:collection_topiclibrariesfoundation,origin:blogger+account:android developers+keyword:foundation,origin:youtube+keyword:foundation,keyword:collection_topiclibrariesarch,origin:blogger+account:android developers+keyword:arch,origin:youtube+keyword:arch,keyword:collection_topiclibrariesbehavior,origin:blogger+account:android developers+keyword:behavior,origin:youtube+keyword:behavior,keyword:collection_topiclibrariesui,origin:blogger+account:android developers+keyword:ui,origin:youtube+keyword:ui,origin:blogger+account:android developers+keyword:jetpack,origin:youtube+keyword:jetpack,keyword:collection_topiclibrariesui,origin:blogger+account:android developers+keyword:jetpack,origin:youtube+keyword:jetpack,origin:blogger+account:android developers+keyword:compose,origin:youtube+keyword:compose,keyword:collection_topiclibrariesui,origin:blogger+account:android developers+keyword:compose,origin:youtube+keyword:compose" sortorder="-timestamp"> </devsite-dynamic-content> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-3-up devsite-landing-row-75 android-illustrated-resources-secondary" header-position="top"> <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header"> <div class="devsite-landing-row-header-text"> <h2 id="get-involved-with-the-android-jetpack-community" data-text="Get involved with the Android Jetpack community" tabindex="0"> Get involved with the Android Jetpack community </h2> </div> </header> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item devsite-landing-row-item-no-media" background="/web/20230331154515im_/https://developer.android.com/light-green" description-position="bottom"> <div class="devsite-landing-row-item-description" icon-position="top"> <a href="https://web.archive.org/web/20230331154515/https://stackoverflow.com/questions/tagged/android-jetpack"> <div class="devsite-landing-row-item-icon-container" size="medium"> <img class="devsite-landing-row-item-icon" alt="" src="https://web.archive.org/web/20230331154515im_/https://developer.android.com/static/images/picto-icons/stack-overflow.svg" srcset="" sizes="64px" loading="lazy"> </div> </a> <div class="devsite-landing-row-item-body"> <h3 id="stack-overflow" data-text="Stack Overflow" class="hide-from-toc no-link" tabindex="0"> <a href="https://web.archive.org/web/20230331154515/https://stackoverflow.com/questions/tagged/android-jetpack"> Stack Overflow </a> </h3> <div class="devsite-landing-row-item-buttons"> <a href="https://web.archive.org/web/20230331154515/https://stackoverflow.com/questions/tagged/android-jetpack" class="button button-white ">Ask a question on Stack Overflow</a> </div> </div> </div> </div> <div class="devsite-landing-row-item devsite-landing-row-item-no-media" background="/web/20230331154515im_/https://developer.android.com/light-green" description-position="bottom"> <div class="devsite-landing-row-item-description" icon-position="top"> <a href="https://web.archive.org/web/20230331154515/https://issuetracker.google.com/"> <div class="devsite-landing-row-item-icon-container" size="medium"> <img class="devsite-landing-row-item-icon" alt="" src="https://web.archive.org/web/20230331154515im_/https://developer.android.com/static/images/picto-icons/bug.svg" srcset="" sizes="64px" loading="lazy"> </div> </a> <div class="devsite-landing-row-item-body"> <h3 id="issue-tracker" data-text="Issue tracker" class="hide-from-toc no-link" tabindex="0"> <a href="https://web.archive.org/web/20230331154515/https://issuetracker.google.com/"> Issue tracker </a> </h3> <div class="devsite-landing-row-item-buttons"> <a href="https://web.archive.org/web/20230331154515/https://issuetracker.google.com/" class="button button-white ">Report an issue</a> </div> </div> </div> </div> <div class="devsite-landing-row-item devsite-landing-row-item-no-media" background="/web/20230331154515im_/https://developer.android.com/light-green" description-position="bottom"> <div class="devsite-landing-row-item-description" icon-position="top"> <a href="https://web.archive.org/web/20230331154515/https://android-developers.googleblog.com/search/label/Jetpack"> <div class="devsite-landing-row-item-icon-container" size="medium"> <img class="devsite-landing-row-item-icon" alt="" src="https://web.archive.org/web/20230331154515im_/https://developer.android.com/static/images/logos/android-developers-blog.svg" srcset="" sizes="64px" loading="lazy"> </div> </a> <div class="devsite-landing-row-item-body"> <h3 id="android-developers-blog" data-text="Android Developers Blog" class="hide-from-toc no-link" tabindex="0"> <a href="https://web.archive.org/web/20230331154515/https://android-developers.googleblog.com/search/label/Jetpack"> Android Developers Blog </a> </h3> <div class="devsite-landing-row-item-buttons"> <a href="https://web.archive.org/web/20230331154515/https://android-developers.googleblog.com/search/label/Jetpack" class="button button-white ">Read about Android Jetpack</a> </div> </div> </div> </div> </div> </div> </section> <devsite-hats-survey class="nocontent" hats-id="onAFgYxTD0kxBYCLVTd0Z41p75CM" listnr-id="5207477"></devsite-hats-survey> </div> </article> <devsite-notification> </devsite-notification> <div class="devsite-content-data"> <template class="devsite-thumb-rating-down-categories"> [{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Missing the information I need" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Too complicated / too many steps" },{ "type": "thumb-down", "id": "outOfDate", "label":"Out of date" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Samples / code issue" },{ "type": "thumb-down", "id": "otherDown", "label":"Other" }] </template> <template class="devsite-thumb-rating-up-categories"> [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Easy to understand" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Solved my problem" },{ "type": "thumb-up", "id": "otherUp", "label":"Other" }] </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="//web.archive.org/web/20230331154515/https://twitter.com/AndroidDev" class="devsite-footer-promo-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Twitter Promo"> <img class="devsite-footer-promo-icon" src="/web/20230331154515im_/https://developer.android.com/_static/android/images/logo-twitter.svg" loading="lazy" alt="Twitter"> Twitter </a> <div class="devsite-footer-promo-description">Follow @AndroidDev on Twitter</div> </li> <li class="devsite-footer-promo"> <a href="//web.archive.org/web/20230331154515/https://www.youtube.com/user/androiddevelopers" class="devsite-footer-promo-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer YouTube Promo"> <img class="devsite-footer-promo-icon" src="//web.archive.org/web/20230331154515im_/https://www.gstatic.com/images/icons/material/product/2x/youtube_48dp.png" loading="lazy" alt="YouTube"> YouTube </a> <div class="devsite-footer-promo-description">Check out Android Developers on YouTube</div> </li> <li class="devsite-footer-promo"> <a href="//web.archive.org/web/20230331154515/https://www.linkedin.com/showcase/androiddev" class="devsite-footer-promo-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer LinkedIn Promo"> <img class="devsite-footer-promo-icon" src="/web/20230331154515im_/https://developer.android.com/_static/android/images/logo-linkedin.svg" loading="lazy" alt="LinkedIn"> LinkedIn </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="//web.archive.org/web/20230331154515/https://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="//web.archive.org/web/20230331154515/https://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="//web.archive.org/web/20230331154515/https://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="//web.archive.org/web/20230331154515/https://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="/web/20230331154515/https://developer.android.com/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="//web.archive.org/web/20230331154515/https://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="/web/20230331154515/https://developer.android.com/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="/web/20230331154515/https://developer.android.com/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="/web/20230331154515/https://developer.android.com/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="/web/20230331154515/https://developer.android.com/privacy" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> Privacy </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20230331154515/https://developer.android.com/training/connectivity/5g" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)"> 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="/web/20230331154515/https://developer.android.com/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="/web/20230331154515/https://developer.android.com/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="/web/20230331154515/https://developer.android.com/tv" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> Android TV </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20230331154515/https://developer.android.com/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="/web/20230331154515/https://developer.android.com/things" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)"> Android Things </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20230331154515/https://developer.android.com/chrome-os" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)"> Chrome OS devices </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="/web/20230331154515/https://developer.android.com/about/versions/13" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)"> Android 13 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20230331154515/https://developer.android.com/about/versions/12" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)"> Android 12 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20230331154515/https://developer.android.com/about/versions/11" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> Android 11 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20230331154515/https://developer.android.com/about/versions/10" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)"> Android 10 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20230331154515/https://developer.android.com/about/versions/pie" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)"> Pie </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20230331154515/https://developer.android.com/about/versions/oreo" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)"> Oreo </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20230331154515/https://developer.android.com/about/versions/nougat" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 7)"> Nougat </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="/web/20230331154515/https://developer.android.com/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="/web/20230331154515/https://developer.android.com/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="/web/20230331154515/https://developer.android.com/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="/web/20230331154515/https://developer.android.com/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="/web/20230331154515/https://developer.android.com/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="//web.archive.org/web/20230331154515/https://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="//web.archive.org/web/20230331154515/https://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="//web.archive.org/web/20230331154515/https://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://web.archive.org/web/20230331154515/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://web.archive.org/web/20230331154515/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://web.archive.org/web/20230331154515im_/https://www.gstatic.com/devrel-devsite/prod/vc7c98be6f4d139e237c3cdaad6a00bb295b070a83e505cb2fa4435daae3d0901/android/images/lockup-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://web.archive.org/web/20230331154515im_/https://www.gstatic.com/devrel-devsite/prod/vc7c98be6f4d139e237c3cdaad6a00bb295b070a83e505cb2fa4435daae3d0901/android/images/lockup-developers.svg" loading="lazy" alt="Google Developers"> </picture> </a> <ul class="devsite-footer-sites-list"> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20230331154515/https://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="//web.archive.org/web/20230331154515/https://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="//web.archive.org/web/20230331154515/https://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="//web.archive.org/web/20230331154515/https://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="//web.archive.org/web/20230331154515/https://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="//web.archive.org/web/20230331154515/https://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="/web/20230331154515/https://developer.android.com/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="/web/20230331154515/https://developer.android.com/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 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="/web/20230331154515/https://developer.android.com/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="id">Bahasa Indonesia</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="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="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 analytics-iframe enable-ga4> <script type="application/json" analytics>[{&#34;dimensions&#34;: {&#34;dimension1&#34;: &#34;Signed out&#34;, &#34;dimension3&#34;: false, &#34;dimension4&#34;: &#34;Jetpack&#34;, &#34;dimension6&#34;: &#34;en&#34;, &#34;dimension11&#34;: false, &#34;dimension5&#34;: &#34;en&#34;, &#34;dimension14&#34;: &#34;39300148&#34;, &#34;dimension9&#34;: &#34;39300014&#34;, &#34;dimension16&#34;: &#34;39300143&#34;}, &#34;gaid&#34;: &#34;UA-5831155-1&#34;, &#34;metrics&#34;: {&#34;ratings_value&#34;: &#34;metric1&#34;, &#34;ratings_count&#34;: &#34;metric2&#34;}}, {&#34;dimensions&#34;: {&#34;dimension0&#34;: &#34;39300012,39300241&#34;}, &#34;gaid&#34;: &#34;&#34;, &#34;metrics&#34;: {}}]</script> <script type="application/json" tag-management gtm>{&#34;ga4&#34;: [], &#34;gtm&#34;: [&#34;GTM-KMSWPCJ&#34;], &#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;product&#34;, &#34;projectName&#34;: &#34;Jetpack&#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;}}, &#34;tags&#34;: [&#34;GTM-KMSWPCJ&#34;]}</script> </devsite-analytics> <devsite-badger></devsite-badger> <android-fully-clickable target=" .android-grouped-resources .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="TuSRf901guiYNBoovgoWo9jmxmtToS"> (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://web.archive.org/web/20230331154515/https://www.gstatic.com/devrel-devsite/prod/vc7c98be6f4d139e237c3cdaad6a00bb295b070a83e505cb2fa4435daae3d0901/android/js/app_loader.js', '[3,"en",null,"/js/devsite_app_module.js","https://web.archive.org/web/20230331154515/https://www.gstatic.com/devrel-devsite/prod/vc7c98be6f4d139e237c3cdaad6a00bb295b070a83e505cb2fa4435daae3d0901","https://web.archive.org/web/20230331154515/https://www.gstatic.com/devrel-devsite/prod/vc7c98be6f4d139e237c3cdaad6a00bb295b070a83e505cb2fa4435daae3d0901/android","https://web.archive.org/web/20230331154515/https://android-dot-devsite-v2-prod.appspot.com",1,null,["/_pwa/android/manifest.json","https://web.archive.org/web/20230331154515/https://www.gstatic.com/devrel-devsite/prod/vc7c98be6f4d139e237c3cdaad6a00bb295b070a83e505cb2fa4435daae3d0901/images/video-placeholder.svg","https://web.archive.org/web/20230331154515/https://www.gstatic.com/devrel-devsite/prod/vc7c98be6f4d139e237c3cdaad6a00bb295b070a83e505cb2fa4435daae3d0901/android/images/favicon.png","https://web.archive.org/web/20230331154515/https://www.gstatic.com/devrel-devsite/prod/vc7c98be6f4d139e237c3cdaad6a00bb295b070a83e505cb2fa4435daae3d0901/android/images/lockup.svg","https://web.archive.org/web/20230331154515/https://fonts.googleapis.com/css?family=Roboto:300,400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,40,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,111,112,113,115,116,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,144,147,148,149,150,151,152,154,155,156,157,158,159,161,163,164,165,168,169,170,172,173,179,180,182,183,186,190,191,193,196],"AIzaSyAP-jjEJBzmIyKR4F-3XITp8yM9T1gEEI8","AIzaSyB6xiKGDR5O3Ak2okS4rLkauxGUG7XP0hg","developer.android.com","AIzaSyAQk0fBONSGUqCNznf6Krs82Ap1-NV6J4o","AIzaSyCCxcqdrZ_7QMeLCRY20bh_SXdAYqy70KY",null,null,null,["Cloud__enable_cloud_facet_chat","Analytics__enable_ga4_analytics","Profiles__enable_developer_profiles_dashboard_recommendations","Experiments__reqs_query_experiments","MiscFeatureFlags__enable_footprints_record_views","Search__enable_faceted_search","MiscFeatureFlags__devpanel_url","Profiles__enable_profile_communities","Cloud__enable_cloud_dlp_service","MiscFeatureFlags__emergency_css","MiscFeatureFlags__enable_tls_version_for_gaia_calls","Profiles__enable_page_saving","Significatio__enable_by_tenant","BookNav__enable_book_nav_filtering","BookNav__enable_collapsible_book_nav","Profiles__enable_developer_profiles_interests","Profiles__enable_profile_notifications_ui","Profiles__enable_public_developer_profiles","Badges__enable_delete_badges","Localization__enable_locale_redirects","Cloud__enable_cloud_shell","Cloud__enable_cloud_shell_fte_user_flow","Experiments__enable_experiments","Cloud__enable_cloudx_ping","Search__enable_devsite_serp","Profiles__enable_profile_collections","Search__enable_suggestions_from_borg","Profiles__require_profile_eligibility_for_signin","Search__enable_acl_suggestions","Badges__enable_drag_and_drop_badges","Search__enable_page_map","Cloud__enable_cloudx_experiment_ids","Significatio__enable_experiment_id_caching","SignIn__enable_auto_signin_oauth","Badges__enable_hide_badges","Profiles__enable_developer_profiles_callout"]]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html><!-- FILE ARCHIVED ON 15:45:15 Mar 31, 2023 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 22:43:45 Dec 02, 2024. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 0.512 exclusion.robots: 0.028 exclusion.robots.policy: 0.017 esindex: 0.008 cdx.remote: 26.549 LoadShardBlock: 152.466 (3) PetaboxLoader3.datanode: 80.59 (4) PetaboxLoader3.resolve: 163.092 (2) load_resource: 150.99 -->

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