CINXE.COM

Distribute Android apps to testers using the Firebase CLI

<!doctype html> <html lang="en" dir="ltr"> <head><script type="text/javascript" src="https://web-static.archive.org/_static/js/bundle-playback.js?v=7YQSqjSh" charset="utf-8"></script> <script type="text/javascript" src="https://web-static.archive.org/_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="https://web-static.archive.org/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://firebase.google.com/docs/app-distribution/android/distribute-cli","20210817011108","https://web.archive.org/","web","https://web-static.archive.org/_static/", "1629162668"); </script> <link rel="stylesheet" type="text/css" href="https://web-static.archive.org/_static/css/banner-styles.css?v=p7PEIJWi" /> <link rel="stylesheet" type="text/css" href="https://web-static.archive.org/_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"> <meta property="og:site_name" content="Firebase"> <meta property="og:type" content="website"><meta name="theme-color" content="#039be5"><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/20210817011108/https://firebase.google.com/_pwa/firebase/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//web.archive.org/web/20210817011108/https://www.gstatic.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20210817011108/https://fonts.gstatic.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20210817011108/https://fonts.googleapis.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20210817011108/https://apis.google.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20210817011108/https://www.google-analytics.com/" crossorigin><link rel="stylesheet" href="//web.archive.org/web/20210817011108cs_/https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&amp;display=swap"> <link rel="stylesheet" href="//web.archive.org/web/20210817011108cs_/https://fonts.googleapis.com/css?family=Material+Icons&amp;display=block"><link rel="stylesheet" href="https://web.archive.org/web/20210817011108cs_/https://www.gstatic.com/devrel-devsite/prod/vd7ff44c5bfb37fb3237a957a44096487cf6c040e737614b6a01efed4db62f3c8/firebase/css/app.css"> <link rel="shortcut icon" href="https://web.archive.org/web/20210817011108im_/https://www.gstatic.com/devrel-devsite/prod/vd7ff44c5bfb37fb3237a957a44096487cf6c040e737614b6a01efed4db62f3c8/firebase/images/favicon.png"> <link rel="apple-touch-icon" href="https://web.archive.org/web/20210817011108im_/https://www.gstatic.com/devrel-devsite/prod/vd7ff44c5bfb37fb3237a957a44096487cf6c040e737614b6a01efed4db62f3c8/firebase/images/touchicon-180.png"><link rel="canonical" href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/app-distribution/android/distribute-cli"><link rel="search" type="application/opensearchdescription+xml" title="Firebase" href="https://web.archive.org/web/20210817011108/https://firebase.google.com/s/opensearch.xml"> <title>Distribute Android apps to testers using the Firebase CLI</title> <meta property="og:title" content="Distribute Android apps to testers using the Firebase CLI"><meta property="og:url" content="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/app-distribution/android/distribute-cli"><meta property="og:locale" content="en"> <meta name="gtm_var" data-key="docType" data-value="how-to"> </head> <body class="" template="page" theme="firebase-theme" type="article" layout="docs" 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/20210817011108/https://firebase.google.com/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="firebase" track-metadata-position="nav" track-metadata-eventdetail="nav"> <img src="https://web.archive.org/web/20210817011108im_/https://www.gstatic.com/devrel-devsite/prod/vd7ff44c5bfb37fb3237a957a44096487cf6c040e737614b6a01efed4db62f3c8/firebase/images/lockup.png" class="devsite-site-logo" alt="Firebase"> </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 dropdown> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/products-build" class="gc-analytics-event " track-type="nav" track-name="products" track-metadata-eventdetail="https://firebase.google.com/products-build" track-metadata-position="nav - products" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Products"> Products </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Products" track-type="nav" track-name="products" track-metadata-eventdetail="https://firebase.google.com/products-build" track-metadata-position="nav - products" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Products" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/products-build" track-type="nav" track-name="build" track-metadata-eventdetail="https://firebase.google.com/products-build" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Build </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/products-release" track-type="nav" track-name="release &amp; monitor" track-metadata-eventdetail="https://firebase.google.com/products-release" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Release &amp; Monitor </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/products-engage" track-type="nav" track-name="engage" track-metadata-eventdetail="https://firebase.google.com/products-engage" track-metadata-position="nav - products" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Engage </div> </a> </li> </ul> </div> </div> </div> </tab> <tab> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/use-cases" class="gc-analytics-event " track-type="nav" track-name="use cases" track-metadata-eventdetail="https://firebase.google.com/use-cases" track-metadata-position="nav - use cases" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Use Cases"> Use Cases </a> </tab> <tab> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/pricing" class="gc-analytics-event " track-type="nav" track-name="pricing" track-metadata-eventdetail="https://firebase.google.com/pricing" track-metadata-position="nav - pricing" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Pricing"> Pricing </a> </tab> <tab dropdown active> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs" class="gc-analytics-event " track-type="nav" track-name="docs" track-metadata-eventdetail="https://firebase.google.com/docs" track-metadata-position="nav - docs" track-metadata-module="primary nav" aria-label="Docs, selected" data-category="Site-Wide Custom Events" data-label="Tab: Docs"> Docs </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Docs" track-type="nav" track-name="docs" track-metadata-eventdetail="https://firebase.google.com/docs" track-metadata-position="nav - docs" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Docs" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs" track-type="nav" track-name="overview" track-metadata-eventdetail="https://firebase.google.com/docs" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Overview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/guides" track-type="nav" track-name="fundamentals" track-metadata-eventdetail="https://firebase.google.com/docs/guides" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Fundamentals </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/build" track-type="nav" track-name="build" track-metadata-eventdetail="https://firebase.google.com/docs/build" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Build </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/release" track-type="nav" track-name="release &amp; monitor" track-metadata-eventdetail="https://firebase.google.com/docs/release" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Release &amp; Monitor </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/engage" track-type="nav" track-name="engage" track-metadata-eventdetail="https://firebase.google.com/docs/engage" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Engage </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/reference" track-type="nav" track-name="reference" track-metadata-eventdetail="https://firebase.google.com/docs/reference" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Reference </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/samples" track-type="nav" track-name="samples" track-metadata-eventdetail="https://firebase.google.com/docs/samples" track-metadata-position="nav - docs" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Samples </div> </a> </li> </ul> </div> </div> </div> </tab> <tab dropdown> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/community" class="gc-analytics-event " track-type="nav" track-name="community" track-metadata-eventdetail="https://firebase.google.com/community" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Community"> Community </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Community" track-type="nav" track-name="community" track-metadata-eventdetail="https://firebase.google.com/community" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Community" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/community/learn" track-type="nav" track-name="learn" track-metadata-eventdetail="https://firebase.google.com/community/learn" track-metadata-position="nav - community" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Learn </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/community/events" track-type="nav" track-name="events" track-metadata-eventdetail="https://firebase.google.com/community/events" track-metadata-position="nav - community" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Events </div> </a> </li> </ul> </div> </div> </div> </tab> <tab> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/support" class="gc-analytics-event " track-type="nav" track-name="support" track-metadata-eventdetail="https://firebase.google.com/support" track-metadata-position="nav - support" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Support"> Support </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="Firebase" tenant-name="Firebase" role="combobox"> <form class="devsite-search-form" action="https://web.archive.org/web/20210817011108/https://firebase.google.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> <devsite-select class="devsite-language-selector-menu"> <select aria-label="Select your language preference." class="devsite-language-selector-select" name="language" track-name="click" track-type="languageSelector"> <option>Language</option> <option value="en" lang="en" track-metadata-original-language="en" track-metadata-selected-language="en" track-name="changed" track-type="languageSelector"> English </option> <option value="id" lang="id" track-metadata-original-language="en" track-metadata-selected-language="id" track-name="changed" track-type="languageSelector"> Bahasa Indonesia </option> <option value="de" lang="de" track-metadata-original-language="en" track-metadata-selected-language="de" track-name="changed" track-type="languageSelector"> Deutsch </option> <option value="es_419" lang="es_419" track-metadata-original-language="en" track-metadata-selected-language="es_419" track-name="changed" track-type="languageSelector"> Español – América Latina </option> <option value="fr" lang="fr" track-metadata-original-language="en" track-metadata-selected-language="fr" track-name="changed" track-type="languageSelector"> Français </option> <option value="it" lang="it" track-metadata-original-language="en" track-metadata-selected-language="it" track-name="changed" track-type="languageSelector"> Italiano </option> <option value="pl" lang="pl" track-metadata-original-language="en" track-metadata-selected-language="pl" track-name="changed" track-type="languageSelector"> Polski </option> <option value="pt_br" lang="pt_br" track-metadata-original-language="en" track-metadata-selected-language="pt_br" track-name="changed" track-type="languageSelector"> Português – Brasil </option> <option value="vi" lang="vi" track-metadata-original-language="en" track-metadata-selected-language="vi" track-name="changed" track-type="languageSelector"> Tiếng Việt </option> <option value="tr" lang="tr" track-metadata-original-language="en" track-metadata-selected-language="tr" track-name="changed" track-type="languageSelector"> Türkçe </option> <option value="ru" lang="ru" track-metadata-original-language="en" track-metadata-selected-language="ru" track-name="changed" track-type="languageSelector"> Русский </option> <option value="he" lang="he" track-metadata-original-language="en" track-metadata-selected-language="he" track-name="changed" track-type="languageSelector"> עברית&#39; </option> <option value="ar" lang="ar" track-metadata-original-language="en" track-metadata-selected-language="ar" track-name="changed" track-type="languageSelector"> العربيّة </option> <option value="fa" lang="fa" track-metadata-original-language="en" track-metadata-selected-language="fa" track-name="changed" track-type="languageSelector"> فارسی </option> <option value="hi" lang="hi" track-metadata-original-language="en" track-metadata-selected-language="hi" track-name="changed" track-type="languageSelector"> हिंदी </option> <option value="bn" lang="bn" track-metadata-original-language="en" track-metadata-selected-language="bn" track-name="changed" track-type="languageSelector"> বাংলা </option> <option value="th" lang="th" track-metadata-original-language="en" track-metadata-selected-language="th" track-name="changed" track-type="languageSelector"> ภาษาไทย </option> <option value="zh_cn" lang="zh_cn" track-metadata-original-language="en" track-metadata-selected-language="zh_cn" track-name="changed" track-type="languageSelector"> 中文 – 简体 </option> <option value="zh_tw" lang="zh_tw" track-metadata-original-language="en" track-metadata-selected-language="zh_tw" track-name="changed" track-type="languageSelector"> 中文 – 繁體 </option> <option value="ja" lang="ja" track-metadata-original-language="en" track-metadata-selected-language="ja" track-name="changed" track-type="languageSelector"> 日本語 </option> <option value="ko" lang="ko" track-metadata-original-language="en" track-metadata-selected-language="ko" track-name="changed" track-type="languageSelector"> 한국어 </option> </select> </devsite-select> </devsite-language-selector> <a class="devsite-header-link devsite-top-button button gc-analytics-event" href="//web.archive.org/web/20210817011108/https://console.firebase.google.com/" data-category="Site-Wide Custom Events" data-label="Site header link"> Go to console </a> <devsite-user enable-profiles fp-auth id="devsite-user"></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/20210817011108/https://firebase.google.com/docs" 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=""> Documentation </a> </li> </ul> </div> </div> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Lower tabs"> <tab> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs" class="gc-analytics-event " track-type="nav" track-name="overview" track-metadata-eventdetail="https://firebase.google.com/docs" track-metadata-position="nav - overview" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Overview"> Overview </a> </tab> <tab dropdown> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/guides" class="gc-analytics-event " track-type="nav" track-name="fundamentals" track-metadata-eventdetail="https://firebase.google.com/docs/guides" track-metadata-position="nav - fundamentals" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Fundamentals"> Fundamentals </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Fundamentals" track-type="nav" track-name="fundamentals" track-metadata-eventdetail="https://firebase.google.com/docs/guides" track-metadata-position="nav - fundamentals" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Fundamentals" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/ios/setup" track-type="nav" track-name="add firebase - ios" track-metadata-eventdetail="https://firebase.google.com/docs/ios/setup" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Add Firebase - iOS </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/android/setup" track-type="nav" track-name="add firebase - android" track-metadata-eventdetail="https://firebase.google.com/docs/android/setup" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Add Firebase - Android </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/web/setup" track-type="nav" track-name="add firebase - web" track-metadata-eventdetail="https://firebase.google.com/docs/web/setup" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Add Firebase - Web </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/cpp/setup" track-type="nav" track-name="add firebase - c++" track-metadata-eventdetail="https://firebase.google.com/docs/cpp/setup" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Add Firebase - C++ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/unity/setup" track-type="nav" track-name="add firebase - unity" track-metadata-eventdetail="https://firebase.google.com/docs/unity/setup" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Add Firebase - Unity </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/admin/setup" track-type="nav" track-name="add firebase - server environments" track-metadata-eventdetail="https://firebase.google.com/docs/admin/setup" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Add Firebase - Server environments </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/projects/learn-more" track-type="nav" track-name="manage firebase projects" track-metadata-eventdetail="https://firebase.google.com/docs/projects/learn-more" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Manage Firebase projects </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/libraries" track-type="nav" track-name="supported platforms &amp; frameworks" track-metadata-eventdetail="https://firebase.google.com/docs/libraries" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Supported platforms &amp; frameworks </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/app-check" track-type="nav" track-name="protect project resources with app check" track-metadata-eventdetail="https://firebase.google.com/docs/app-check" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Protect project resources with App Check </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/emulator-suite" track-type="nav" track-name="use emulator suite" track-metadata-eventdetail="https://firebase.google.com/docs/emulator-suite" track-metadata-position="nav - fundamentals" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Use Emulator Suite </div> </a> </li> </ul> </div> </div> </div> </tab> <tab dropdown> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/build" class="gc-analytics-event " track-type="nav" track-name="build" track-metadata-eventdetail="https://firebase.google.com/docs/build" track-metadata-position="nav - build" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Build"> Build </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Build" track-type="nav" track-name="build" track-metadata-eventdetail="https://firebase.google.com/docs/build" track-metadata-position="nav - build" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Build" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/emulator-suite" track-type="nav" track-name="emulator suite" track-metadata-eventdetail="https://firebase.google.com/docs/emulator-suite" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Emulator Suite </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/auth" track-type="nav" track-name="authentication" track-metadata-eventdetail="https://firebase.google.com/docs/auth" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Authentication </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/database" track-type="nav" track-name="realtime database" track-metadata-eventdetail="https://firebase.google.com/docs/database" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Realtime Database </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/firestore" track-type="nav" track-name="firestore" track-metadata-eventdetail="https://firebase.google.com/docs/firestore" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Firestore </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/storage" track-type="nav" track-name="storage" track-metadata-eventdetail="https://firebase.google.com/docs/storage" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Storage </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/ml" track-type="nav" track-name="ml" track-metadata-eventdetail="https://firebase.google.com/docs/ml" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> ML </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/hosting" track-type="nav" track-name="hosting" track-metadata-eventdetail="https://firebase.google.com/docs/hosting" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Hosting </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/functions" track-type="nav" track-name="cloud functions" track-metadata-eventdetail="https://firebase.google.com/docs/functions" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Cloud Functions </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/rules" track-type="nav" track-name="security rules" track-metadata-eventdetail="https://firebase.google.com/docs/rules" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Security Rules </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/extensions" track-type="nav" track-name="extensions" track-metadata-eventdetail="https://firebase.google.com/docs/extensions" track-metadata-position="nav - build" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Extensions </div> </a> </li> </ul> </div> </div> </div> </tab> <tab dropdown active> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/release" class="gc-analytics-event " track-type="nav" track-name="release &amp; monitor" track-metadata-eventdetail="https://firebase.google.com/docs/release" track-metadata-position="nav - release &amp; monitor" track-metadata-module="primary nav" aria-label="Release &amp; Monitor, selected" data-category="Site-Wide Custom Events" data-label="Tab: Release &amp; Monitor"> Release &amp; Monitor </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Release &amp; Monitor" track-type="nav" track-name="release &amp; monitor" track-metadata-eventdetail="https://firebase.google.com/docs/release" track-metadata-position="nav - release &amp; monitor" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Release &amp; Monitor" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/crashlytics" track-type="nav" track-name="crashlytics" track-metadata-eventdetail="https://firebase.google.com/docs/crashlytics" track-metadata-position="nav - release &amp; monitor" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Crashlytics </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/perf-mon" track-type="nav" track-name="performance monitoring" track-metadata-eventdetail="https://firebase.google.com/docs/perf-mon" track-metadata-position="nav - release &amp; monitor" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Performance Monitoring </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/test-lab" track-type="nav" track-name="test lab" track-metadata-eventdetail="https://firebase.google.com/docs/test-lab" track-metadata-position="nav - release &amp; monitor" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Test Lab </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/app-distribution" track-type="nav" track-name="app distribution" track-metadata-eventdetail="https://firebase.google.com/docs/app-distribution" track-metadata-position="nav - release &amp; monitor" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> App Distribution </div> </a> </li> </ul> </div> </div> </div> </tab> <tab dropdown> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/engage" class="gc-analytics-event " track-type="nav" track-name="engage" track-metadata-eventdetail="https://firebase.google.com/docs/engage" track-metadata-position="nav - engage" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Engage"> Engage </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Engage" track-type="nav" track-name="engage" track-metadata-eventdetail="https://firebase.google.com/docs/engage" track-metadata-position="nav - engage" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Engage" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/analytics" track-type="nav" track-name="analytics" track-metadata-eventdetail="https://firebase.google.com/docs/analytics" track-metadata-position="nav - engage" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Analytics </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/remote-config" track-type="nav" track-name="remote config" track-metadata-eventdetail="https://firebase.google.com/docs/remote-config" track-metadata-position="nav - engage" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Remote Config </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/predictions" track-type="nav" track-name="predictions" track-metadata-eventdetail="https://firebase.google.com/docs/predictions" track-metadata-position="nav - engage" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Predictions </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/ab-testing" track-type="nav" track-name="a/b testing" track-metadata-eventdetail="https://firebase.google.com/docs/ab-testing" track-metadata-position="nav - engage" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> A/B Testing </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/cloud-messaging" track-type="nav" track-name="cloud messaging" track-metadata-eventdetail="https://firebase.google.com/docs/cloud-messaging" track-metadata-position="nav - engage" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Cloud Messaging </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/in-app-messaging" track-type="nav" track-name="in-app messaging" track-metadata-eventdetail="https://firebase.google.com/docs/in-app-messaging" track-metadata-position="nav - engage" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> In-App Messaging </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/dynamic-links" track-type="nav" track-name="dynamic links" track-metadata-eventdetail="https://firebase.google.com/docs/dynamic-links" track-metadata-position="nav - engage" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Dynamic Links </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/admob" track-type="nav" track-name="google admob" track-metadata-eventdetail="https://firebase.google.com/docs/admob" track-metadata-position="nav - engage" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Google AdMob </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/ads" track-type="nav" track-name="google ads" track-metadata-eventdetail="https://firebase.google.com/docs/ads" track-metadata-position="nav - engage" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> Google Ads </div> </a> </li> <li class="devsite-nav-item"> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/app-indexing" track-type="nav" track-name="app indexing" track-metadata-eventdetail="https://firebase.google.com/docs/app-indexing" track-metadata-position="nav - engage" track-metadata-module="tertiary nav" tooltip> <div class="devsite-nav-item-title"> App Indexing </div> </a> </li> </ul> </div> </div> </div> </tab> <tab> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/reference" class="gc-analytics-event " track-type="nav" track-name="reference" track-metadata-eventdetail="https://firebase.google.com/docs/reference" track-metadata-position="nav - reference" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Reference"> Reference </a> </tab> <tab> <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/samples" class="gc-analytics-event " track-type="nav" track-name="samples" track-metadata-eventdetail="https://firebase.google.com/docs/samples" track-metadata-position="nav - samples" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Samples"> Samples </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars> <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/20210817011108/https://firebase.google.com/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="firebase" track-metadata-position="nav" track-metadata-eventdetail="nav"> <img src="https://web.archive.org/web/20210817011108im_/https://www.gstatic.com/devrel-devsite/prod/vd7ff44c5bfb37fb3237a957a44096487cf6c040e737614b6a01efed4db62f3c8/firebase/images/lockup.png" class="devsite-site-logo" alt="Firebase"> </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/20210817011108/https://firebase.google.com/products-build" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Products" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="products"> <span class="devsite-nav-text" tooltip> Products </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip menu="Products"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Products"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/use-cases" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Use Cases" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="useCases"> <span class="devsite-nav-text" tooltip> Use Cases </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/pricing" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Pricing" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="pricing"> <span class="devsite-nav-text" tooltip> Pricing </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Docs" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="docs"> <span class="devsite-nav-text" tooltip> Docs </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip menu="Docs"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Docs"> </span> </span> </li> </ul> <ul class="devsite-nav-responsive-tabs"> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="overview"> <span class="devsite-nav-text" tooltip> Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/guides" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Fundamentals" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="fundamentals"> <span class="devsite-nav-text" tooltip> Fundamentals </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu devsite-lower-tab-item"> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip menu="Fundamentals"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Fundamentals"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/build" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Build" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="build"> <span class="devsite-nav-text" tooltip> Build </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu devsite-lower-tab-item"> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip menu="Build"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Build"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/release" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Release &amp; Monitor" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="release&amp;Monitor"> <span class="devsite-nav-text" tooltip menu="_book"> Release &amp; Monitor </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="_book"> </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu devsite-lower-tab-item"> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip menu="Release &amp; Monitor"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Release &amp; Monitor"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/engage" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Engage" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="engage"> <span class="devsite-nav-text" tooltip> Engage </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu devsite-lower-tab-item"> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip menu="Engage"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Engage"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/reference" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Reference" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="reference"> <span class="devsite-nav-text" tooltip> Reference </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/samples" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Samples" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="samples"> <span class="devsite-nav-text" tooltip> Samples </span> </a> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/community" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Community" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="community"> <span class="devsite-nav-text" tooltip> Community </span> <span class="devsite-nav-icon material-icons" data-icon="forward"> </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip menu="Community"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Community"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/support" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Support" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="support"> <span class="devsite-nav-text" tooltip> Support </span> </a> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20210817011108/https://console.firebase.google.com/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Go to console" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="goToConsole"> <span class="devsite-nav-text" tooltip> Go to console </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom" role="navigation"> <ul class="devsite-nav-list" menu="_book"> <li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/release" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview</span></a></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Crashlytics</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/crashlytics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/crashlytics/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/crashlytics/upgrade-sdk" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Upgrade from Fabric (legacy)</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/crashlytics/start-using-analytics" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get metrics with Google Analytics</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/crashlytics/test-implementation" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test your implementation</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/crashlytics/customize-crash-reports" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Customize crash reports</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get deobfuscated crash reports</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/crashlytics/ndk-reports" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get Android NDK crash reports</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/crashlytics/velocity-alerts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Customize velocity alerts</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/crashlytics/bigquery-export" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Export data to BigQuery</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/crashlytics/troubleshooting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Troubleshooting</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Performance Monitoring</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Get started</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon/get-started-ios" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon/get-started-android" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon/get-started-web" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Web</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Learn about automatically collected data</span></div></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon/app-start-foreground-background-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>App start, foreground, background (iOS &amp; Android)</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon/screen-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Screen rendering (iOS &amp; Android)</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon/page-load-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Page loading (web)</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon/network-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>HTTP/S network requests</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Customize data collection and aggregation</span></div></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon/custom-code-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Add monitoring for specific code</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon/custom-network-traces" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Add monitoring for specific network requests</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon/custom-url-patterns" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Create custom URL patterns</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon/disable-sdk" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Disable Performance Monitoring</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Track, view, and filter data</span></div></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon/console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Overview of the console</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon/attributes" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Filter data using attributes</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon/issue-management" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>View performance issues</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon/bigquery-export" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Export data to BigQuery</span></a></li><li class="devsite-nav-item devsite-nav-break"></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon/troubleshooting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Troubleshooting &amp; FAQ</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Test Lab</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>iOS</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/ios/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/ios/run-game-loop-test" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Run a Game Loop test</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/ios/run-xctest" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Run an XCTest</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/ios/firebase-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with the Firebase console</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/ios/command-line" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with the gcloud CLI</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/ios/available-testing-devices" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test on available devices</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/ios/analyzing-results" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Analyze test results</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>Android</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/android/get-started" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Get started</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/android/instrumentation-test" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Run an instrumentation test</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/android/robo-ux-test" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Run a Robo test</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/android/game-loop" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Run a Game Loop test</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/android/firebase-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with the Firebase console</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/android/command-line" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with the gcloud CLI</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/android/android-studio" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with Android Studio</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/android/available-testing-devices" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test on available devices</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/android/avds" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with virtual devices</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/android/analyzing-results" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Analyze test results</span></a></li></ul></devsite-expandable-nav></li><li class="devsite-nav-item devsite-nav-new"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/troubleshooting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Troubleshooting</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-new"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/usage-quotas-pricing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Usage, quotas, &amp; pricing</span><span class="devsite-nav-icon material-icons" data-icon="new" data-title="New!" aria-hidden="true"></span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/android/continuous" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Test with CI systems</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/extend-with-functions" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Extend with Cloud Functions</span></a></li><li class="devsite-nav-item devsite-nav-expandable"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>REST API reference</span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/reference/testing/rest" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Testing (submit test &amp; monitor)</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/test-lab/reference/toolresults/rest" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>ToolResults (retrieve results)</span></a></li></ul></devsite-expandable-nav></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-expandable devsite-nav-accordion devsite-nav-beta"><devsite-expandable-nav collapsed> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"><span class="devsite-nav-text" tooltip>App Distribution</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/app-distribution" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Introduction</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/app-distribution/manage-testers" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Manage testers</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/app-distribution/troubleshooting" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Troubleshooting</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Set up for testers</span></div></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/app-distribution/ios/set-up-for-testing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>iOS</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/app-distribution/android/set-up-for-testing" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Android</span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Distribute iOS apps</span></div></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/app-distribution/ios/distribute-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the Firebase console</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/app-distribution/ios/distribute-cli" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the Firebase CLI</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/app-distribution/ios/distribute-fastlane" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use fastlane</span></a></li><li class="devsite-nav-item devsite-nav-beta"><a href="/web/20210817011108/https://firebase.google.com/docs/app-distribution/set-up-alerts" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Set up in-app alerts</span><span class="devsite-nav-icon material-icons" data-icon="beta" data-title="Beta" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Distribute Android apps</span></div></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/app-distribution/android/distribute-console" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the Firebase console</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/app-distribution/android/distribute-cli" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use the Firebase CLI</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/app-distribution/android/distribute-fastlane" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use fastlane</span></a></li><li class="devsite-nav-item"><a href="/web/20210817011108/https://firebase.google.com/docs/app-distribution/android/distribute-gradle" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Use Gradle</span></a></li></ul></devsite-expandable-nav></li> <li class="devsite-nav-item devsite-nav-divider devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"><span class="devsite-nav-text" tooltip>Related products</span></div></li> <li class="devsite-nav-item"><a href="//web.archive.org/web/20210817011108/https://firebase.google.com/docs/analytics/" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Analytics</span></a></li> <li class="devsite-nav-item"><a href="//web.archive.org/web/20210817011108/https://firebase.google.com/docs/remote-config/" class="devsite-nav-title"><span class="devsite-nav-text" tooltip>Remote Config</span></a></li> </ul> <ul class="devsite-nav-list" menu="Products" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/products-build" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Build" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="build"> <span class="devsite-nav-text" tooltip> Build </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/products-release" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Release &amp; Monitor" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="release&amp;Monitor"> <span class="devsite-nav-text" tooltip> Release &amp; Monitor </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/products-engage" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Engage" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="engage"> <span class="devsite-nav-text" tooltip> Engage </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Docs" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="overview"> <span class="devsite-nav-text" tooltip> Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/guides" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Fundamentals" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="fundamentals"> <span class="devsite-nav-text" tooltip> Fundamentals </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/build" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Build" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="build"> <span class="devsite-nav-text" tooltip> Build </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/release" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Release &amp; Monitor" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="release&amp;Monitor"> <span class="devsite-nav-text" tooltip> Release &amp; Monitor </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/engage" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Engage" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="engage"> <span class="devsite-nav-text" tooltip> Engage </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/reference" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Reference" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="reference"> <span class="devsite-nav-text" tooltip> Reference </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/samples" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Samples" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="samples"> <span class="devsite-nav-text" tooltip> Samples </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Community" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/community/learn" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Learn" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="learn"> <span class="devsite-nav-text" tooltip> Learn </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/community/events" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Events" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="events"> <span class="devsite-nav-text" tooltip> Events </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Fundamentals" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/ios/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - iOS" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="addFirebase-Ios"> <span class="devsite-nav-text" tooltip> Add Firebase - iOS </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/android/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - Android" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="addFirebase-Android"> <span class="devsite-nav-text" tooltip> Add Firebase - Android </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/web/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - Web" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="addFirebase-Web"> <span class="devsite-nav-text" tooltip> Add Firebase - Web </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/cpp/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - C++" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="addFirebase-C++"> <span class="devsite-nav-text" tooltip> Add Firebase - C++ </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/unity/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - Unity" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="addFirebase-Unity"> <span class="devsite-nav-text" tooltip> Add Firebase - Unity </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/admin/setup" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Add Firebase - Server environments" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="addFirebase-ServerEnvironments"> <span class="devsite-nav-text" tooltip> Add Firebase - Server environments </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/projects/learn-more" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Manage Firebase projects" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="manageFirebaseProjects"> <span class="devsite-nav-text" tooltip> Manage Firebase projects </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/libraries" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Supported platforms &amp; frameworks" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="supportedPlatforms&amp;Frameworks"> <span class="devsite-nav-text" tooltip> Supported platforms &amp; frameworks </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/app-check" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Protect project resources with App Check" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="protectProjectResourcesWithAppCheck"> <span class="devsite-nav-text" tooltip> Protect project resources with App Check </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/emulator-suite" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Use Emulator Suite" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="useEmulatorSuite"> <span class="devsite-nav-text" tooltip> Use Emulator Suite </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Build" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/emulator-suite" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Emulator Suite" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="emulatorSuite"> <span class="devsite-nav-text" tooltip> Emulator Suite </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/auth" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Authentication" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="authentication"> <span class="devsite-nav-text" tooltip> Authentication </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/database" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Realtime Database" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="realtimeDatabase"> <span class="devsite-nav-text" tooltip> Realtime Database </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/firestore" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Firestore" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="firestore"> <span class="devsite-nav-text" tooltip> Firestore </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/storage" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Storage" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="storage"> <span class="devsite-nav-text" tooltip> Storage </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/ml" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ML" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="ml"> <span class="devsite-nav-text" tooltip> ML </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/hosting" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Hosting" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="hosting"> <span class="devsite-nav-text" tooltip> Hosting </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/functions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cloud Functions" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="cloudFunctions"> <span class="devsite-nav-text" tooltip> Cloud Functions </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/rules" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Security Rules" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="securityRules"> <span class="devsite-nav-text" tooltip> Security Rules </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/extensions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Extensions" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="extensions"> <span class="devsite-nav-text" tooltip> Extensions </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Release &amp; Monitor" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/crashlytics" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Crashlytics" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="crashlytics"> <span class="devsite-nav-text" tooltip> Crashlytics </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/perf-mon" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Performance Monitoring" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="performanceMonitoring"> <span class="devsite-nav-text" tooltip> Performance Monitoring </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/test-lab" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Test Lab" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="testLab"> <span class="devsite-nav-text" tooltip> Test Lab </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/app-distribution" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: App Distribution" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="appDistribution"> <span class="devsite-nav-text" tooltip> App Distribution </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Engage" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/analytics" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Analytics" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="analytics"> <span class="devsite-nav-text" tooltip> Analytics </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/remote-config" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Remote Config" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="remoteConfig"> <span class="devsite-nav-text" tooltip> Remote Config </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/predictions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Predictions" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="predictions"> <span class="devsite-nav-text" tooltip> Predictions </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/ab-testing" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: A/B Testing" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="a/bTesting"> <span class="devsite-nav-text" tooltip> A/B Testing </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/cloud-messaging" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cloud Messaging" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="cloudMessaging"> <span class="devsite-nav-text" tooltip> Cloud Messaging </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/in-app-messaging" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: In-App Messaging" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="inAppMessaging"> <span class="devsite-nav-text" tooltip> In-App Messaging </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/dynamic-links" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Dynamic Links" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="dynamicLinks"> <span class="devsite-nav-text" tooltip> Dynamic Links </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/admob" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google AdMob" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="googleAdmob"> <span class="devsite-nav-text" tooltip> Google AdMob </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/ads" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Ads" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="googleAds"> <span class="devsite-nav-text" tooltip> Google Ads </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/app-indexing" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: App Indexing" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav" track-name="appIndexing"> <span class="devsite-nav-text" tooltip> App Indexing </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" has-book-nav has-toc> <div class="devsite-sidebar"> <div class="sidebar-content"> <devsite-toc class="devsite-nav" role="navigation" aria-label="Table of contents" scrollbars></devsite-toc> </div> </div> <devsite-content> <article class="devsite-article"><style> /* Styles inlined from /styles/docs.css */ .center { text-align: center } /* Used in AdMob code examples */ .oldcode { opacity: .40; /* IE 8 */ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); /* IE <= 7 */ filter:alpha(opacity=40); } .newcode { font-weight: bold; } /* Device Screenshots */ .deviceshot { max-width: 700px; max-height: 400px; } /* Start Changelog styles */ .badge { position: relative; top: -3px; border-radius: 16px; display: inline-block; width: 90px; height: 32px; line-height: 32px; margin-right: 10px; text-transform: uppercase; font-size: 13px; font-weight: 700; text-align: center; } /* Colours for each type of changelog entry. */ /* TODO: Change the colours to match the site colour scheme */ .badge-changed { background-color: #F4B400; color: #fff; } .badge-fixed { background-color: #4285F4; color: #fff; } .badge-important { background-color: #DB4437; color: #fff; } .badge-feature { background-color: #0F9D58; color: #fff; } .badge-deprecated { background-color: #DB4437; color: #fff; } .badge-issue { background-color: #DB4437; color: #fff; } .changelog > ul { padding-left: 0; } .changelog > ul > li { list-style-type: none; margin-bottom: 22px; } .firebase-support-release-page .changelog > ul { list-style-type: none; padding-left: 110px; } .firebase-release-roundup .changelog > ul { list-style-type: disc outside; padding-left: 40px; } .firebase-release-roundup .changelog > ul > li { list-style-type: disc outside; margin-bottom: 12px; } .release-changed::before, .release-feature::before, .release-fixed::before, .release-issue::before, .release-deprecated::before, .release-removed::before, .release-unchanged::before, .release-rules::before, .release-android::before, .release-android-bom::before, .release-ios::before, .release-admin::before, .release-cpp::before, .release-unity::before, .release-functions::before, .release-javascript::before { display: block; float: left; color: white; width: 100px; height: 32px; margin-left: -110px; margin-right: 10px; margin-top: -5px; padding-top: 4px; text-transform: uppercase; font-size: 13px; font-weight: 700; text-align: center; border-radius: 16px; } .release-changed::before { content: "changed"; background-color: #F4B400; } .release-feature::before { content: "feature"; background-color: #0F9D58; } .release-fixed::before { content: "fixed"; background-color: #4285F4; } .release-issue::before { content: "issue"; background-color: #DB4437; } .release-deprecated::before { content: "deprecated"; background-color: #E65100; } .release-removed::before { content: "removed"; background-color: #546E7A; } .release-unchanged::before { content: "no change"; background-color: #CCCCCC; } .release-android::before { content: "android"; background-color: #A4C639; } .release-android-bom::before { content: "android bom"; background-color: #A4C639; } .release-ios::before { text-transform: none; content: "iOS"; background-color: #007aff; } .release-admin::before { content: "admin"; background-color: #039BE5; } .release-cpp::before { content: "c++"; background-color: #FF8A65; } .release-unity::before { content: "unity"; background-color: #00cccc; } .release-functions::before { content: "functions"; background-color: #2C384A; } .release-javascript::before { content: "javascript"; background-color: #7e57c2; } .release-rules::before { content: "rules"; background-color: #1B3A57; } /* End Changelog styles */ /* Docs Overview page styles */ .docs-android, .docs-ios, .docs-web, .docs-cpp, .docs-unity { height: 64px; width: 64px; margin: 10px 16px 0 -16px; } .firebase-docs-overview .devsite-landing-row h2 { margin: 80px 0 -40px; } .devsite-landing-row-3-up .docs-landing-row-item { width: calc((100% - 80px)/2); display: inline-block; } .docs-landing-icon { font-size: 48px; height: 48px; margin: 11px; width: 48px; } .firebase-reference-list { display: -ms-flex; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; list-style: none; margin: 0 0 40px; padding: 0; } .firebase-reference-list-item { -ms-flex: 0 0 50%; flex: 0 0 50%; margin: 40px 0 0; padding: 0; } .firebase-reference-list-item > a { -ms-flex-align: center; align-items: center; display: -ms-flex; display: flex; } .firebase-reference-list-item > a:not(:hover) h3 { color: #424242; } .firebase-reference-list-item > a:not(:hover) li, .firebase-reference-list-item > a:not(:hover) p { color: #757575; } .firebase-reference-list-item .docs-landing-icon { -ms-flex-align: center; align-items: center; background-color: #f5f5f5; border-radius: 50%; -ms-flex: 0 0 88px; flex: 0 0 88px; height: 88px; -ms-justify-content: center; justify-content: center; margin: 0 16px 0 0; padding: 20px; } .firebase-reference-list-item h3 { -ms-flex: 0 0 auto; flex: 0 0 auto; font-size: 18px; line-height: 28px; margin: 0; } .firebase-reference-list-item ul { list-style: none; padding: 0; } .docs-android, .docs-ios, .docs-web, .docs-cpp, .docs-unity { height: 88px; width: auto; } .firebase-reference-list-item.docs-android .docs-landing-icon { color: #00bfa5; } .firebase-reference-list-item.docs-cpp .docs-landing-icon { color: #fd8c09; } .firebase-reference-list-item.docs-ios .docs-landing-icon { color: #16aaca; } .firebase-reference-list-item.docs-unity .docs-landing-icon { color: #000000; } .firebase-reference-list-item.docs-web .docs-landing-icon { color: #c52062; } .firebase-reference-list-item.docs-http .docs-landing-icon { color: #3F51B5; } @media (max-width: 1000px) { .firebase-reference-list { -ms-flex-direction: column; flex-direction: column; } } /* end Docs Overview page styles */ /* Full-page platform selector for Crashlytics docs */ /* Note: h3 in selector content must include hide-from-toc */ .full-page-selector, .full-page-selector-content { border: none; font-size: inherit; } .full-page-selector > .kd-buttonbar { margin: 32px 0px; } .full-page-selector > section { display: none; } .full-page-selector-content > .selected { padding: 0; font-size: inherit; } .full-page-selector-content > .kd-buttonbar { display: none; } .select-page { display: none; } .select-page + .ds-selector-tabs, .after-selection ~ .ds-selector-tabs { border: none; font-size: inherit; } .select-page + .ds-selector-tabs > .kd-buttonbar { margin: 32px 0px; } .select-page + .ds-selector-tabs > section { display: none; } .after-selection ~ .ds-selector-tabs > .selected { padding: 0; font-size: inherit; } .after-selection ~ .ds-selector-tabs > section p { line-height: 24px; } .after-selection ~ .ds-selector-tabs > .kd-buttonbar { display: none; } /* End full-page platform selector */ /* Custom beta and alpha indicators (v1 format, followed by v2 format) */ .devsite-nav-alpha .devsite-nav-icon::before, .devsite-nav-icon[data-icon="alpha"]::before { content: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTMuMjA2IDE1YTU0LjIxNCA1NC4yMTQgMCAwIDEtLjkyLTIuNTc4bC0uMTQtLjQxNGE4MS43NiA4MS43NiAwIDAgMC0uMTM2LS40MDJDMTAuODUgMTMuNjcyIDkuNTYyIDE0LjUgNy41IDE0LjUgNC44MSAxNC41IDMgMTIuNjE2IDMgOXMxLjgxLTUuNSA0LjUtNS41YzIuMDYyIDAgMy4zNS44MjggNC41MSAyLjg5NGwuMTM3LS40MDIuMTM5LS40MTRjLjM4LTEuMTI3LjY1My0xLjkwMi45Mi0yLjU3OGgyLjE2NmMtLjM2NC44My0uNjcyIDEuNjgtMS4xOSAzLjIxN2wtLjE0LjQxM0E1Ny45OSA1Ny45OSAwIDAgMSAxMy4xOTQgOWMuMjc1LjcxLjU1NCAxLjQ5OC44NDggMi4zN2wuMTQuNDEzYy41MTggMS41MzguODI2IDIuMzg3IDEuMTkgMy4yMTdoLTIuMTY2ek03LjUgNS41QzUuOTMyIDUuNSA1IDYuNDcgNSA5YzAgMi41My45MzIgMy41IDIuNSAzLjUgMS40OTcgMCAyLjQ0NC0uOTE3IDMuNTM1LTMuNUM5Ljk0NCA2LjQxNyA4Ljk5NyA1LjUgNy41IDUuNXoiIGZpbGw9InJnYmEoMCwwLDAsLjM4KSIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zdmc+'); } .devsite-nav-beta .devsite-nav-icon::before, .devsite-nav-icon[data-icon="beta"]::before { content: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMTIuMjM2IDcuNjgzQTQgNCAwIDAgMSAxMCAxNUg3djJINVY0YTIgMiAwIDAgMSAyLTJoMi41YTMuNSAzLjUgMCAwIDEgMi43MzYgNS42ODN6TTcgMTNoM2EyIDIgMCAxIDAgMC00SDd2NHptMC02aDIuNWExLjUgMS41IDAgMCAwIDAtM0g3djN6IiBmaWxsPSJyZ2JhKDAsMCwwLC4zOCkiIGZpbGwtcnVsZT0ibm9uemVybyIvPjwvc3ZnPg=='); } .firebase-platform-label { font: 500 12px/24px Roboto,sans-serif; } /* Full-page platform selector dropdown */ /* Note: use menu variables in _elements.html file */ .full-page-selector-dropdown { border: none; position: relative; float: left; display: inline-block; } .full-page-selector-dropdown > .ds-selector-tabs { display: none; position: absolute; min-width: 160px; z-index: 1; } .full-page-selector-dropdown:hover .ds-selector-tabs { display: block; margin: 0; } .full-page-selector-dropdown:hover .kd-tabbutton { display: block; border: none; height: inherit; text-align: left; } .full-page-selector-dropdown:hover .kd-buttonbar { border: none; height: inherit; } .full-page-selector-dropdown h3:hover { color: white; background-color: #039be5; } .full-page-selector-dropdown:hover .devsite-overflow-menu-button { display: none; } </style> <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/20210817011108/https://firebase.google.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="Firebase"> Firebase </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/20210817011108/https://firebase.google.com/docs" 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=""> Docs </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/20210817011108/https://firebase.google.com/docs/release" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail=""> Release &amp; Monitor </a> </li> </ul> <devsite-thumb-rating position="header"> <template class="thumb-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="thumb-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> <template class="thumb-rating-feedback"> <devsite-feedback position="thumb-rating" project-name="Firebase" product-id="719752" bucket="" context="" version="t-devsite-webserver-20210809-r02-rc00.437250104648096395" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="thumb-rating" project-feedback-url="https://firebase.google.com/support/contact/bugs-features/" project-icon="https://firebase.google.com/_static/firebase/images/logo.png" project-support-url="https://firebase.google.com/support/" feedback-type="thumb-rating"> <button> Need to tell us more? </button> </devsite-feedback> </template> </devsite-thumb-rating> </div> <devsite-feedback position="header" project-name="Firebase" product-id="719752" bucket="" context="" version="t-devsite-webserver-20210809-r02-rc00.437250104648096395" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="header" project-feedback-url="https://firebase.google.com/support/contact/bugs-features/" project-icon="https://firebase.google.com/_static/firebase/images/logo.png" project-support-url="https://firebase.google.com/support/" feedback-type="thumb-rating"> <button> Send feedback </button> </devsite-feedback> <h1 class="devsite-page-title">Distribute Android apps to testers using the Firebase CLI</h1> <devsite-bookmark></devsite-bookmark> <devsite-toc class="devsite-nav" devsite-toc-embedded> </devsite-toc> <div class="devsite-article-body clearfix "> <div> <devsite-nav-buttons name="apptype"> <button value="apk" default>APK</button> <button value="aab">AAB</button> </devsite-nav-buttons> </div> <div class="after-selection"></div> <p>This guide describes how to distribute APKs to testers using the Firebase CLI. The CLI tool lets you specify testers and release notes for a build, then distributes the build accordingly.</p> <h2 id="before_you_begin" data-text="Before you begin">Before you begin</h2> <p>If you haven&#39;t already, <a href="/web/20210817011108/https://firebase.google.com/docs/android/setup#console">add Firebase to your Android project</a>.</p> <p>If you aren&#39;t using any other Firebase products, you only have to create a project and register your app. However, if you decide to use additional products in the future, be sure to complete all of the steps on the page linked above.</p> <aside class="caution"> <b>Caution:</b> When you register your app with Firebase, make sure to enter the same package name as the app you're distributing. The package name value is case-sensitive and cannot be changed for your app in Firebase after it's registered with your Firebase project. </aside> <h2 id="step_1_build_your_app" data-text="Step 1. Build your app">Step 1. Build your app</h2> <p>When you&#39;re ready to distribute a pre-release version of your app to testers, build your APK using your normal process. You must sign the APK with your debug key or app signing key.</p> <h2 id="step_2_distribute_your_app_to_testers" data-text="Step 2. Distribute your app to testers">Step 2. Distribute your app to testers</h2> <p>To distribute your app to testers, upload your APK file using the Firebase CLI:</p> <ol> <li> Install or update to the latest version of the <a href="/web/20210817011108/https://firebase.google.com/docs/cli#install_the_firebase_cli">Firebase CLI</a> (we recommend downloading the standalone binary for the CLI specific to your OS). Make sure to <a href="/web/20210817011108/https://firebase.google.com/docs/cli#sign-in-test-cli">sign in</a> and test that you can access your projects. <aside class="note"><b>Note:</b> If you're using the Firebase CLI in a CI environment, you can also authenticate with a <a href="/web/20210817011108/https://firebase.google.com/docs/app-distribution/authenticate-service-account">service account</a> or by using <a href="/web/20210817011108/https://firebase.google.com/docs/cli#cli-ci-systems"><code translate="no" dir="ltr">login:ci</code>.</a></aside> </li> <li> In the <a href="https://web.archive.org/web/20210817011108/https://console.firebase.google.com/project/_/appdistribution">App Distribution page</a> of the Firebase console, select the app you want to distribute, then click <b>Get started</b>. </li> <li> <p>Run the <code translate="no" dir="ltr">appdistribution:distribute</code> command to upload your app and distribute it to testers. Use the following parameters to configure the distribution:</p> <table class="responsive"> <thead> <tr> <th colspan="2">appdistribution:distribute options</th> </tr> </thead> <tbody> <tr> <td> <code translate="no" dir="ltr">--app</code> </td> <td> <p><b>Required</b>: Your app's Firebase App ID. You can find the App ID in the Firebase console, on the <a href="//web.archive.org/web/20210817011108/https://console.firebase.google.com/project/_/settings/general/">General Settings page</a>.</p> <pre translate="no" dir="ltr">--app 1:1234567890:android:0a1b2c3d4e5f67890</pre> </td> </tr> <tr> <td> <code translate="no" dir="ltr">--token</code> </td> <td> <p> A refresh token that's printed when you authenticate your CI environment with the Firebase CLI (read <a href="https://web.archive.org/web/20210817011108/https://firebase.google.com/docs/cli#cli-ci-systems">Use the CLI with CI systems </a> for more information). </p> <pre translate="no" dir="ltr">--token "$FIREBASE_TOKEN"</pre> </td> </tr> <tr> <td> <code translate="no" dir="ltr">--release-notes</code><br> <code translate="no" dir="ltr">--release-notes-file</code> </td> <td> <p>Release notes for this build.</p> <p>You can either specify the release notes directly:</p> <pre translate="no" dir="ltr">--release-notes "Text of release notes"</pre> <p>Or, specify the path to a plain text file:</p> <pre translate="no" dir="ltr">--release-notes-file "/path/to/release-notes.txt"</pre> </td> </tr> <tr> <td> <code translate="no" dir="ltr">--testers</code><br> <code translate="no" dir="ltr">--testers-file</code> </td> <td> <p>The email addresses of the testers you want to invite.</p> <p>You can specify the testers as a comma-separated list of email addresses:</p> <pre translate="no" dir="ltr">--testers "ali@example.com, bri@example.com, cal@example.com"</pre> <p>Or, you can specify the path to a plain text file containing a comma-separated list of email addresses:</p> <pre translate="no" dir="ltr">--testers-file "/path/to/testers.txt"</pre> </td> </tr> <tr> <td> <code translate="no" dir="ltr">--groups</code><br> <code translate="no" dir="ltr">--groups-file</code> </td> <td> <p>The tester groups you want to invite (refer to <a href="/web/20210817011108/https://firebase.google.com/docs/app-distribution/manage-testers">Manage testers</a>). Groups are specified using <term>group aliases</term>, which you can look up in the Firebase console.</p> <p>You can specify the groups as a comma-separated list:</p> <pre translate="no" dir="ltr">--groups "qa-team, trusted-testers"</pre> <p>Or, you can specify the path to a plain text file containing a comma-separated list of group names:</p> <pre translate="no" dir="ltr">--groups-file "/path/to/groups.txt"</pre> </td> </tr> <tr> <td> <code translate="no" dir="ltr">--debug</code> </td> <td> <p>A flag you can include to print verbose log output.</p> </td> </tr> </tbody> </table> <p>For example:</p> <pre class="devsite-terminal devsite-click-to-copy" translate="no" dir="ltr"> firebase appdistribution:distribute test.apk \ --app 1:1234567890:android:0a1b2c3d4e5f67890 \ --release-notes "Bug fixes and improvements" --testers-file testers.txt </pre> </li> </ol> <p>Once you distribute your build, it becomes available in the App Distribution dashboard of the Firebase console for 150 days (five months). When the build is 30 days from expiring, an expiration notice appears in both the console and your tester&#39;s list of builds on their test device.</p> <p>Testers who haven&#39;t been invited to test the app receive email invitations to get started, and existing testers receive email notifications that a new build is ready to test (read the <a href="/web/20210817011108/https://firebase.google.com/docs/app-distribution/android/set-up-for-testing">tester set up guide</a> for instructions on how to install the test app). You can monitor the status of each tester-whether they accepted the invitation and whether they downloaded the app-in the Firebase console.</p> </div> <devsite-thumb-rating position="footer"> <template class="thumb-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="thumb-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> <template class="thumb-rating-feedback"> <devsite-feedback position="thumb-rating" project-name="Firebase" product-id="719752" bucket="" context="" version="t-devsite-webserver-20210809-r02-rc00.437250104648096395" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="thumb-rating" project-feedback-url="https://firebase.google.com/support/contact/bugs-features/" project-icon="https://firebase.google.com/_static/firebase/images/logo.png" project-support-url="https://firebase.google.com/support/" feedback-type="thumb-rating"> <button> Need to tell us more? </button> </devsite-feedback> </template> </devsite-thumb-rating> <devsite-feedback position="footer" project-name="Firebase" product-id="719752" bucket="" context="" version="t-devsite-webserver-20210809-r02-rc00.437250104648096395" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="footer" project-feedback-url="https://firebase.google.com/support/contact/bugs-features/" project-icon="https://firebase.google.com/_static/firebase/images/logo.png" project-support-url="https://firebase.google.com/support/" feedback-type="thumb-rating"> <button> Send feedback </button> </devsite-feedback> </article> <devsite-content-footer class="nocontent"> <p>Except as otherwise noted, the content of this page is licensed under the <a href="https://web.archive.org/web/20210817011108/https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 License</a>, and code samples are licensed under the <a href="https://web.archive.org/web/20210817011108/https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 License</a>. For details, see the <a href="https://web.archive.org/web/20210817011108/https://developers.google.com/site-policies">Google Developers Site Policies</a>. Java is a registered trademark of Oracle and/or its affiliates.</p> <p>Last updated 2021-08-09 UTC.</p> </devsite-content-footer> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </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">Learn</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/guides/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)"> Guides </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/reference/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)"> Reference </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/samples/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> Samples </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20210817011108/https://firebase.google.com/docs/libraries/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)"> Libraries </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210817011108/https://github.com/firebase/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)"> GitHub </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Stay connected</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210817011108/https://firebase.googleblog.com/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)"> Blog </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20210817011108/https://firebase.google.com/summit/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)"> Firebase Summit </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210817011108/https://www.facebook.com/Firebase/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> Facebook </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210817011108/https://twitter.com/Firebase" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)"> Twitter </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210817011108/https://www.youtube.com/user/Firebase" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)"> YouTube </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/20210817011108/https://firebase.google.com/support/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)"> Contact support </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210817011108/https://stackoverflow.com/questions/tagged/firebase" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)"> Stack Overflow </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210817011108/https://firebase.community/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> Slack community </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20210817011108/https://groups.google.com/forum/#!forum/firebase-talk" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)"> Google group </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20210817011108/https://firebase.google.com/support/releases" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)"> Release notes </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20210817011108/https://firebase.google.com/support/faq/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)"> FAQs </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/20210817011108/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"> <img class="devsite-footer-sites-logo" src="https://web.archive.org/web/20210817011108im_/https://www.gstatic.com/devrel-devsite/prod/vd7ff44c5bfb37fb3237a957a44096487cf6c040e737614b6a01efed4db62f3c8/firebase/images/lockup-developers.svg" loading="lazy" alt="Google Developers"> </a> <ul class="devsite-footer-sites-list"> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20210817011108/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/20210817011108/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/20210817011108/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/20210817011108/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/20210817011108/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/20210817011108/https://firebase.google.com/terms/" data-category="Site-Wide Custom Events" data-label="Footer Terms link"> Terms </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//web.archive.org/web/20210817011108/https://policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link"> Privacy </a> </li> </ul> <devsite-language-selector> <devsite-select class="devsite-language-selector-menu"> <select aria-label="Select your language preference." class="devsite-language-selector-select" name="language" track-name="click" track-type="languageSelector"> <option>Language</option> <option value="en" lang="en" track-metadata-original-language="en" track-metadata-selected-language="en" track-name="changed" track-type="languageSelector"> English </option> <option value="id" lang="id" track-metadata-original-language="en" track-metadata-selected-language="id" track-name="changed" track-type="languageSelector"> Bahasa Indonesia </option> <option value="de" lang="de" track-metadata-original-language="en" track-metadata-selected-language="de" track-name="changed" track-type="languageSelector"> Deutsch </option> <option value="es_419" lang="es_419" track-metadata-original-language="en" track-metadata-selected-language="es_419" track-name="changed" track-type="languageSelector"> Español – América Latina </option> <option value="fr" lang="fr" track-metadata-original-language="en" track-metadata-selected-language="fr" track-name="changed" track-type="languageSelector"> Français </option> <option value="it" lang="it" track-metadata-original-language="en" track-metadata-selected-language="it" track-name="changed" track-type="languageSelector"> Italiano </option> <option value="pl" lang="pl" track-metadata-original-language="en" track-metadata-selected-language="pl" track-name="changed" track-type="languageSelector"> Polski </option> <option value="pt_br" lang="pt_br" track-metadata-original-language="en" track-metadata-selected-language="pt_br" track-name="changed" track-type="languageSelector"> Português – Brasil </option> <option value="vi" lang="vi" track-metadata-original-language="en" track-metadata-selected-language="vi" track-name="changed" track-type="languageSelector"> Tiếng Việt </option> <option value="tr" lang="tr" track-metadata-original-language="en" track-metadata-selected-language="tr" track-name="changed" track-type="languageSelector"> Türkçe </option> <option value="ru" lang="ru" track-metadata-original-language="en" track-metadata-selected-language="ru" track-name="changed" track-type="languageSelector"> Русский </option> <option value="he" lang="he" track-metadata-original-language="en" track-metadata-selected-language="he" track-name="changed" track-type="languageSelector"> עברית&#39; </option> <option value="ar" lang="ar" track-metadata-original-language="en" track-metadata-selected-language="ar" track-name="changed" track-type="languageSelector"> العربيّة </option> <option value="fa" lang="fa" track-metadata-original-language="en" track-metadata-selected-language="fa" track-name="changed" track-type="languageSelector"> فارسی </option> <option value="hi" lang="hi" track-metadata-original-language="en" track-metadata-selected-language="hi" track-name="changed" track-type="languageSelector"> हिंदी </option> <option value="bn" lang="bn" track-metadata-original-language="en" track-metadata-selected-language="bn" track-name="changed" track-type="languageSelector"> বাংলা </option> <option value="th" lang="th" track-metadata-original-language="en" track-metadata-selected-language="th" track-name="changed" track-type="languageSelector"> ภาษาไทย </option> <option value="zh_cn" lang="zh_cn" track-metadata-original-language="en" track-metadata-selected-language="zh_cn" track-name="changed" track-type="languageSelector"> 中文 – 简体 </option> <option value="zh_tw" lang="zh_tw" track-metadata-original-language="en" track-metadata-selected-language="zh_tw" track-name="changed" track-type="languageSelector"> 中文 – 繁體 </option> <option value="ja" lang="ja" track-metadata-original-language="en" track-metadata-selected-language="ja" track-name="changed" track-type="languageSelector"> 日本語 </option> <option value="ko" lang="ko" track-metadata-original-language="en" track-metadata-selected-language="ko" track-name="changed" track-type="languageSelector"> 한국어 </option> </select> </devsite-select> </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 enable-analytics-iframe> <script type="application/json" analytics>[]</script> <script type="application/json" gtm>{"parameters": {"freeTrialEligibleUser": "False", "internalUser": "False", "language": {"machineTranslated": "False", "requested": "en", "served": "en"}, "pageType": "article", "projectName": "Firebase", "signedIn": "False", "tenant": "firebase", "recommendations": {"sourcePage": "", "sourceType": 0, "sourceRank": 0, "sourceIdenticalDescriptions": 0, "sourceTitleWords": 0, "sourceDescriptionWords": 0, "experiment": ""}}, "tags": ["GTM-N84485"]}</script> </devsite-analytics> <devsite-badger></devsite-badger> <firebase-gtm></firebase-gtm> <script nonce="Xv4fxgXwmigN1q6xi03HV8tBAOudZ+"> (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/20210817011108/https://www.gstatic.com/devrel-devsite/prod/vd7ff44c5bfb37fb3237a957a44096487cf6c040e737614b6a01efed4db62f3c8/firebase/js/app_loader.js', '[4,"en",null,"/js/devsite_app_module.js","https://web.archive.org/web/20210817011108/https://www.gstatic.com/devrel-devsite/prod/vd7ff44c5bfb37fb3237a957a44096487cf6c040e737614b6a01efed4db62f3c8","https://web.archive.org/web/20210817011108/https://www.gstatic.com/devrel-devsite/prod/vd7ff44c5bfb37fb3237a957a44096487cf6c040e737614b6a01efed4db62f3c8/firebase","https://web.archive.org/web/20210817011108/https://firebase-dot-devsite-v2-prod.appspot.com",null,null,["/_pwa/firebase/manifest.json","https://web.archive.org/web/20210817011108/https://www.gstatic.com/devrel-devsite/prod/vd7ff44c5bfb37fb3237a957a44096487cf6c040e737614b6a01efed4db62f3c8/images/video-placeholder.svg","https://web.archive.org/web/20210817011108/https://www.gstatic.com/devrel-devsite/prod/vd7ff44c5bfb37fb3237a957a44096487cf6c040e737614b6a01efed4db62f3c8/firebase/images/favicon.png","https://web.archive.org/web/20210817011108/https://www.gstatic.com/devrel-devsite/prod/vd7ff44c5bfb37fb3237a957a44096487cf6c040e737614b6a01efed4db62f3c8/firebase/images/lockup.png","https://web.archive.org/web/20210817011108/https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto: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,63,70,75,76,80,87,88,91,92,93,97,98,100,101,102,103,104,105,107,108,111,112,113,115,116,117,118,120,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,147,148,149,151],"AIzaSyAP-jjEJBzmIyKR4F-3XITp8yM9T1gEEI8","AIzaSyB6xiKGDR5O3Ak2okS4rLkauxGUG7XP0hg"]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html><!-- FILE ARCHIVED ON 01:11:08 Aug 17, 2021 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 05:32:00 Mar 01, 2025. 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.645 exclusion.robots: 0.041 exclusion.robots.policy: 0.029 esindex: 0.012 cdx.remote: 28.93 LoadShardBlock: 337.246 (3) PetaboxLoader3.datanode: 122.073 (4) PetaboxLoader3.resolve: 163.861 (2) load_resource: 151.503 -->

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