CINXE.COM
Google for Developers - from AI and Cloud to Mobile and Web
<!doctype html> <html lang="en" dir="ltr"> <head><script type="text/javascript" src="/_static/js/bundle-playback.js?v=HxkREWBo" charset="utf-8"></script> <script type="text/javascript" src="/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("http://web.archive.org/web"); __wm.wombat("https://developers.google.com/","20230928191814","http://web.archive.org/","web","/_static/", "1695928694"); </script> <link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=S1zqJCYt" /> <link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <meta name="google-signin-client-id" content="721724668570-nbkv1cfusk7kk4eni4pjvepaus73b13t.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="Google for Developers"> <meta property="og:type" content="website"><meta name="theme-color" content="#fff"><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/20230928191814/https://developers.google.com/_pwa/developers/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//web.archive.org/web/20230928191814/https://www.gstatic.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20230928191814/https://fonts.gstatic.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20230928191814/https://fonts.googleapis.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20230928191814/https://apis.google.com/" crossorigin> <link rel="preconnect" href="//web.archive.org/web/20230928191814/https://www.google-analytics.com/" crossorigin><link rel="stylesheet" href="//web.archive.org/web/20230928191814cs_/https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//web.archive.org/web/20230928191814cs_/https://fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=block"><link rel="stylesheet" href="http://web.archive.org/web/20230928191814cs_/https://www.gstatic.com/devrel-devsite/prod/v47c000584df8fd5ed12554bcabcc16cd4fd28aee940bdc8ae9e35cab77cbb7da/developers/css/app.css"> <link rel="shortcut icon" href="http://web.archive.org/web/20230928191814im_/https://www.gstatic.com/devrel-devsite/prod/v47c000584df8fd5ed12554bcabcc16cd4fd28aee940bdc8ae9e35cab77cbb7da/developers/images/favicon-new.png"> <link rel="apple-touch-icon" href="http://web.archive.org/web/20230928191814im_/https://www.gstatic.com/devrel-devsite/prod/v47c000584df8fd5ed12554bcabcc16cd4fd28aee940bdc8ae9e35cab77cbb7da/developers/images/touchicon-180-new.png"><link rel="canonical" href="http://web.archive.org/web/20230928191814/https://developers.google.com/"><link rel="search" type="application/opensearchdescription+xml" title="Google for Developers" href="http://web.archive.org/web/20230928191814/https://developers.google.com/s/opensearch.xml"> <link rel="alternate" hreflang="en" href="http://web.archive.org/web/20230928191814/https://developers.google.com/"/><link rel="alternate" hreflang="x-default" href="http://web.archive.org/web/20230928191814/https://developers.google.com/"/><link rel="alternate" hreflang="ar" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=ar"/><link rel="alternate" hreflang="bn" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=bn"/><link rel="alternate" hreflang="zh-Hans" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=zh-cn"/><link rel="alternate" hreflang="zh-Hant" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=zh-tw"/><link rel="alternate" hreflang="fa" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=fa"/><link rel="alternate" hreflang="fr" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=fr"/><link rel="alternate" hreflang="de" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=de"/><link rel="alternate" hreflang="he" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=he"/><link rel="alternate" hreflang="hi" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=hi"/><link rel="alternate" hreflang="id" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=id"/><link rel="alternate" hreflang="it" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=it"/><link rel="alternate" hreflang="ja" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=ja"/><link rel="alternate" hreflang="ko" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=ko"/><link rel="alternate" hreflang="pl" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=pl"/><link rel="alternate" hreflang="pt-BR" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=pt-br"/><link rel="alternate" hreflang="ru" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=ru"/><link rel="alternate" hreflang="es-419" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=es-419"/><link rel="alternate" hreflang="th" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=th"/><link rel="alternate" hreflang="tr" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=tr"/><link rel="alternate" hreflang="vi" href="http://web.archive.org/web/20230928191814/https://developers.google.com/?hl=vi"/><title>Google for Developers - from AI and Cloud to Mobile and Web</title> <meta property="og:title" content="Google for Developers - from AI and Cloud to Mobile and Web"><meta name="description" content="Explore developer resources, community events, and inspirational stories to help you build smarter and ship faster."> <meta property="og:description" content="Explore developer resources, community events, and inspirational stories to help you build smarter and ship faster."><meta property="og:url" content="http://web.archive.org/web/20230928191814/https://developers.google.com/"><meta property="og:image" content="http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/site-assets/images/home/developers-social-media.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="675"><meta property="og:locale" content="en"><meta name="twitter:card" content="summary"><meta name="twitter:image" content="http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/site-assets/images/home/developers-social-media.png"><script type="application/ld+json"> { "@context": "http://web.archive.org/web/20230928191814/https://schema.org", "@type": "Article", "headline": "Google for Developers - from AI and Cloud to Mobile and Web" } </script> <meta name="google-site-verification" content="u63GsPxC7nSL9_iKT6-jN0FpOze5tBvZ0yeeayDob7g"><script type="application/ld+json"> { "@context": "http://web.archive.org/web/20230928191814/http://schema.org/", "@type": "Organization", "name": "Google for Developers", "logo": "http://web.archive.org/web/20230928191814/https://www.gstatic.com/devrel-devsite/prod/v47c000584df8fd5ed12554bcabcc16cd4fd28aee940bdc8ae9e35cab77cbb7da/developers/images/touchicon-180-new.png", "url": "http://web.archive.org/web/20230928191814/https://developers.google.com/" } </script> <script type="application/ld+json"> { "@context": "http://web.archive.org/web/20230928191814/http://schema.org", "@type": "WebSite", "name": "Google for Developers", "url": "http://web.archive.org/web/20230928191814/https://developers.google.com/", "potentialAction": { "@type": "SearchAction", "target": "http://web.archive.org/web/20230928191814/https://developers.google.com/s/results?q={search_term_string}", "query-input": "required name=search_term_string" } } </script> <link rel="stylesheet" href="/web/20230928191814cs_/https://developers.google.com/extras.css"></head> <body class="dgc-hero-fullscreen" template="landing" theme="white" type="article" layout="full" pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"><devsite-header role="banner"> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="/web/20230928191814/https://developers.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="googleForDevelopers" track-metadata-position="nav" track-metadata-eventdetail="nav"> <img src="http://web.archive.org/web/20230928191814im_/https://www.gstatic.com/devrel-devsite/prod/v47c000584df8fd5ed12554bcabcc16cd4fd28aee940bdc8ae9e35cab77cbb7da/developers/images/lockup-new.svg" class="devsite-site-logo" alt="Google for Developers"> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list"> <li class="devsite-breadcrumb-item devsite-has-google-wordmark"> </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="http://web.archive.org/web/20230928191814/https://developers.google.com/products" track-metadata-eventdetail="https://developers.google.com/products" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - products" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Products" track-name="products"> Products </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Products" track-type="nav" track-metadata-eventdetail="https://developers.google.com/products" track-metadata-position="nav - products" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Products" track-name="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-title" role="heading" tooltip>Develop</li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://developer.android.com/" track-type="nav" track-metadata-eventdetail="//developer.android.com" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="develop" tooltip> <div class="devsite-nav-item-title"> Android </div> </a> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://chromeos.dev/" track-type="nav" track-metadata-eventdetail="//chromeos.dev/" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="develop" tooltip> <div class="devsite-nav-item-title"> ChromeOS </div> </a> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://cloud.google.com/" track-type="nav" track-metadata-eventdetail="//cloud.google.com" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="develop" tooltip> <div class="devsite-nav-item-title"> Cloud </div> </a> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://firebase.google.com/" track-type="nav" track-metadata-eventdetail="//firebase.google.com" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="develop" tooltip> <div class="devsite-nav-item-title"> Firebase </div> </a> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://flutter.dev/" track-type="nav" track-metadata-eventdetail="//flutter.dev" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="develop" tooltip> <div class="devsite-nav-item-title"> Flutter </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/assistant" track-type="nav" track-metadata-eventdetail="https://developers.google.com/assistant" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="develop" tooltip> <div class="devsite-nav-item-title"> Google Assistant </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/maps" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="develop" tooltip> <div class="devsite-nav-item-title"> Google Maps Platform </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/workspace" track-type="nav" track-metadata-eventdetail="https://developers.google.com/workspace" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="develop" tooltip> <div class="devsite-nav-item-title"> Google Workspace </div> </a> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://www.tensorflow.org/" track-type="nav" track-metadata-eventdetail="//www.tensorflow.org" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="develop" tooltip> <div class="devsite-nav-item-title"> TensorFlow </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/web" track-type="nav" track-metadata-eventdetail="https://developers.google.com/web" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="develop" tooltip> <div class="devsite-nav-item-title"> Web </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/youtube" track-type="nav" track-metadata-eventdetail="https://developers.google.com/youtube" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="develop" tooltip> <div class="devsite-nav-item-title"> YouTube </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Grow</li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://firebase.google.com/" track-type="nav" track-metadata-eventdetail="//firebase.google.com" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="grow" tooltip> <div class="devsite-nav-item-title"> Firebase </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/google-ads" track-type="nav" track-metadata-eventdetail="https://developers.google.com/google-ads" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="grow" tooltip> <div class="devsite-nav-item-title"> Google Ads </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/analytics" track-type="nav" track-metadata-eventdetail="https://developers.google.com/analytics" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="grow" tooltip> <div class="devsite-nav-item-title"> Google Analytics </div> </a> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://developer.android.com/distribute/" track-type="nav" track-metadata-eventdetail="//developer.android.com/distribute/" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="grow" tooltip> <div class="devsite-nav-item-title"> Google Play </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/search" track-type="nav" track-metadata-eventdetail="https://developers.google.com/search" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="grow" tooltip> <div class="devsite-nav-item-title"> Search </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/web/fundamentals/engage-and-retain/push-notifications" track-type="nav" track-metadata-eventdetail="https://developers.google.com/web/fundamentals/engage-and-retain/push-notifications" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="grow" tooltip> <div class="devsite-nav-item-title"> Web Push and Notification APIs </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Earn</li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/admob" track-type="nav" track-metadata-eventdetail="https://developers.google.com/admob" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="earn" tooltip> <div class="devsite-nav-item-title"> AdMob </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/google-ads/api" track-type="nav" track-metadata-eventdetail="https://developers.google.com/google-ads/api" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="earn" tooltip> <div class="devsite-nav-item-title"> Google Ads API </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/pay" track-type="nav" track-metadata-eventdetail="https://developers.google.com/pay" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="earn" tooltip> <div class="devsite-nav-item-title"> Google Pay </div> </a> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://developer.android.com/google/play/billing/" track-type="nav" track-metadata-eventdetail="//developer.android.com/google/play/billing/" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="earn" tooltip> <div class="devsite-nav-item-title"> Google Play Billing </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/interactive-media-ads" track-type="nav" track-metadata-eventdetail="https://developers.google.com/interactive-media-ads" track-metadata-position="nav - products" track-metadata-module="tertiary nav" track-metadata-module_headline="earn" tooltip> <div class="devsite-nav-item-title"> Interactive Media Ads </div> </a> </li> </ul> </div> </div> </div> </tab> <tab> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/solutions/catalog" track-metadata-eventdetail="https://developers.google.com/solutions/catalog" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - solutions" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Solutions" track-name="solutions"> Solutions </a> </tab> <tab> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/events" track-metadata-eventdetail="https://developers.google.com/events" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - events" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Events" track-name="events"> Events </a> </tab> <tab> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/learn" track-metadata-eventdetail="https://developers.google.com/learn" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - learn" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Learn" track-name="learn" aria-label="Learning Catalog"> Learn </a> </tab> <tab dropdown> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/community" track-metadata-eventdetail="https://developers.google.com/community" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community"> Community </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Community" track-type="nav" track-metadata-eventdetail="https://developers.google.com/community" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="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-title" role="heading" tooltip>Groups</li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/community/gdg" track-type="nav" track-metadata-eventdetail="https://developers.google.com/community/gdg" track-metadata-position="nav - community" track-metadata-module="tertiary nav" track-metadata-module_headline="groups" tooltip> <div class="devsite-nav-item-title"> Google Developer Groups </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/community/gdsc" track-type="nav" track-metadata-eventdetail="https://developers.google.com/community/gdsc" track-metadata-position="nav - community" track-metadata-module="tertiary nav" track-metadata-module_headline="groups" tooltip> <div class="devsite-nav-item-title"> Google Developer Student Clubs </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/womentechmakers" track-type="nav" track-metadata-eventdetail="https://developers.google.com/womentechmakers" track-metadata-position="nav - community" track-metadata-module="tertiary nav" track-metadata-module_headline="groups" tooltip> <div class="devsite-nav-item-title"> Women Techmakers </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/community/experts" track-type="nav" track-metadata-eventdetail="https://developers.google.com/community/experts" track-metadata-position="nav - community" track-metadata-module="tertiary nav" track-metadata-module_headline="groups" tooltip> <div class="devsite-nav-item-title"> Google Developer Experts </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://www.techequitycollective.com/" track-type="nav" track-metadata-eventdetail="https://www.techequitycollective.com" track-metadata-position="nav - community" track-metadata-module="tertiary nav" track-metadata-module_headline="groups" tooltip> <div class="devsite-nav-item-title"> Tech Equity Collective </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Programs</li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/community/accelerators" track-type="nav" track-metadata-eventdetail="https://developers.google.com/community/accelerators" track-metadata-position="nav - community" track-metadata-module="tertiary nav" track-metadata-module_headline="programs" tooltip> <div class="devsite-nav-item-title"> Accelerator </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/community/gdsc-solution-challenge" track-type="nav" track-metadata-eventdetail="https://developers.google.com/community/gdsc-solution-challenge" track-metadata-position="nav - community" track-metadata-module="tertiary nav" track-metadata-module_headline="programs" tooltip> <div class="devsite-nav-item-title"> Solution Challenge </div> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/community/devfest" track-type="nav" track-metadata-eventdetail="https://developers.google.com/community/devfest" track-metadata-position="nav - community" track-metadata-module="tertiary nav" track-metadata-module_headline="programs" tooltip> <div class="devsite-nav-item-title"> DevFest </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Stories</li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/community/stories" track-type="nav" track-metadata-eventdetail="https://developers.google.com/community/stories" track-metadata-position="nav - community" track-metadata-module="tertiary nav" track-metadata-module_headline="stories" tooltip> <div class="devsite-nav-item-title"> All Stories </div> </a> </li> </ul> </div> </div> </div> </tab> <tab> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/profile/u/me" track-metadata-eventdetail="https://developers.google.com/profile/u/me" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - developer profile" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Developer Profile" track-name="developer profile"> Developer Profile </a> </tab> <tab> <a href="http://web.archive.org/web/20230928191814/https://developers.googleblog.com/" track-metadata-eventdetail="https://developers.googleblog.com" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - blog" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Blog" track-name="blog"> Blog </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="Google for Developers" tenant-name="Google for Developers" role="combobox"> <form class="devsite-search-form" action="http://web.archive.org/web/20230928191814/https://developers.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> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en">English</a> </li> <li role="presentation"> <a role="menuitem" lang="id">Bahasa Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="de">Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es">Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419">Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr">Français</a> </li> <li role="presentation"> <a role="menuitem" lang="it">Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl">Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br">Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi">Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr">Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru">Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he">עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar">العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa">فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi">हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn">বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th">ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn">中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw">中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja">日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko">한국어</a> </li> </ul> </devsite-language-selector> <devsite-user enable-profiles fp-auth id="devsite-user"> <span class="button devsite-top-button" aria-hidden="true" visually-hidden>Sign in</span> </devsite-user> </div> </div> </div> <div class="devsite-collapsible-section devsite-header-no-lower-tabs "> <div class="devsite-header-background"> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars hidden> <div class="devsite-book-nav-filter hidden"> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <a href="/web/20230928191814/https://developers.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="googleForDevelopers" track-metadata-position="nav" track-metadata-eventdetail="nav"> <img src="http://web.archive.org/web/20230928191814im_/https://www.gstatic.com/devrel-devsite/prod/v47c000584df8fd5ed12554bcabcc16cd4fd28aee940bdc8ae9e35cab77cbb7da/developers/images/lockup-new.svg" class="devsite-site-logo" alt="Google for Developers"> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list"> <li class="devsite-breadcrumb-item devsite-has-google-wordmark"> </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/20230928191814/https://developers.google.com/products" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Products" track-name="products" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Products" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Products </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Products" track-name="products"> <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/20230928191814/https://developers.google.com/solutions/catalog" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Solutions" track-name="solutions" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Solutions" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Solutions </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/events" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Events" track-name="events" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Events" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Events </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/learn" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Learn" track-name="learn" aria-label="Learning Catalog" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Learn" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Learn </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/community" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Community" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Community </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community"> <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/20230928191814/https://developers.google.com/profile/u/me" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Developer Profile" track-name="developer profile" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Developer Profile" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Developer Profile </span> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://developers.googleblog.com/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Blog" track-name="blog" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Blog" track-type="globalNav" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Blog </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="Products" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip> Develop </span> </span> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://developer.android.com/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Android </span> </a> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://chromeos.dev/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ChromeOS" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> ChromeOS </span> </a> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://cloud.google.com/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cloud" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Cloud </span> </a> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://firebase.google.com/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Firebase" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Firebase </span> </a> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://flutter.dev/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Flutter" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Flutter </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/assistant" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Assistant" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Google Assistant </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/maps" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Maps Platform" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Google Maps Platform </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/workspace" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Workspace" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Google Workspace </span> </a> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://www.tensorflow.org/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: TensorFlow" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> TensorFlow </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/web" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Web" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Web </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/youtube" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: YouTube" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> YouTube </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip> Grow </span> </span> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://firebase.google.com/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Firebase" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Firebase </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/google-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"> <span class="devsite-nav-text" tooltip> Google Ads </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/analytics" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Analytics" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Google Analytics </span> </a> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://developer.android.com/distribute/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Play" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Google Play </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/search" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Search" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Search </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/web/fundamentals/engage-and-retain/push-notifications" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Web Push and Notification APIs" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Web Push and Notification APIs </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip> Earn </span> </span> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/admob" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: AdMob" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> AdMob </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/google-ads/api" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Ads API" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Google Ads API </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/pay" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Pay" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Google Pay </span> </a> </li> <li class="devsite-nav-item"> <a href="//web.archive.org/web/20230928191814/https://developer.android.com/google/play/billing/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Play Billing" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Google Play Billing </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/interactive-media-ads" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Interactive Media Ads" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Interactive Media Ads </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Community" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip> Groups </span> </span> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/community/gdg" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Developer Groups" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Google Developer Groups </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/community/gdsc" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Developer Student Clubs" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Google Developer Student Clubs </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/womentechmakers" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Women Techmakers" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Women Techmakers </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/community/experts" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Developer Experts" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Google Developer Experts </span> </a> </li> <li class="devsite-nav-item"> <a href="http://web.archive.org/web/20230928191814/https://www.techequitycollective.com/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Tech Equity Collective" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Tech Equity Collective </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip> Programs </span> </span> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/community/accelerators" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Accelerator" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Accelerator </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/community/gdsc-solution-challenge" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Solution Challenge" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> Solution Challenge </span> </a> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/community/devfest" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: DevFest" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> DevFest </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip> <span class="devsite-nav-text" tooltip> Stories </span> </span> </li> <li class="devsite-nav-item"> <a href="/web/20230928191814/https://developers.google.com/community/stories" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: All Stories" track-type="navMenu" track-metadata-eventdetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip> All Stories </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content"> <div class="devsite-sidebar"> <div class="devsite-sidebar-content"> <devsite-toc class="devsite-nav" role="navigation" aria-label="On this page" depth="2" scrollbars disabled></devsite-toc> <devsite-recommendations-sidebar class="nocontent devsite-nav"> </devsite-recommendations-sidebar> </div> </div> <devsite-content> <article class="devsite-article"><style> /* Styles inlined from /site-assets/styles/landing.css */ /* Home page template - hero promo full bleed */ .dgc-hero-promo-full-bleed, .dgc-hero-promo-full-bleed-black-text { padding: 0; } .dgc-hero-promo-full-bleed-black-text .devsite-landing-row-item-description-content { color: black; } .dgc-hero-promo-full-bleed .devsite-landing-row-inner, .dgc-hero-promo-full-bleed-black-text .devsite-landing-row-inner{ padding: 0 2.5rem; } .dgc-hero-promo-full-bleed-black-text a { color: black !important; } .dgc-hero-promo-full-bleed img, .dgc-hero-promo-full-bleed-black-text img { border-radius: .6rem; } .dgc-hero-promo-full-bleed .dgc-hero-promo-full-bleed-button { background-color: transparent !important; border: 1px solid var(--tenant-inverted-text-color, white) !important; color: var(--tenant-inverted-text-color, white) !important; } .dgc-hero-promo-full-bleed-black-text .dgc-hero-promo-full-bleed-button { background-color: transparent !important; border: 1px solid var(--tenant-primary-text-color, black) !important; color: var(--tenant-primary-text-color, black) !important; } .dgc-hero-promo-full-bleed-button:hover, .dgc-hero-promo-full-bleed-button:focus { background-color: rgb(0,0,0,.15) !important; } @media screen and (max-width: 870px) { .dgc-hero-promo-full-bleed, .dgc-hero-promo-full-bleed-black-text { padding: 24px 0; } } @media screen and (max-width: 600px) { .dgc-hero-promo-full-bleed, .dgc-hero-promo-full-bleed-black-text { padding: 1px 0 36px; } } /* Home page template - hero promo full bleed with animation */ .dgc-hero-promo-animated figure { background-image: url(/web/20230928191814im_/https://developers.google.com/homepage-assets/images/build-anything-with-google.png) !important; background-size: contain !important; border-radius: .6rem; } .dgc-hero-promo-animated img { animation: heroPromo 4s; } @keyframes heroPromo { 0%, 50% { opacity: 0; } 100% { opacity: 1; } } /* Home page template - hero promo stories offset */ .dgc-hero-offset-inner > div:first-child { margin-inline-start: -10vw; min-width: 50vw; width: 880px; } /* [1] Ensure the row item description slightly overlaps its media. */ .dgc-hero-offset-inner > div:last-child { background-color: var(--tenant-background-1); border-radius: 8px; box-shadow: 0 0 30px -10px grey; padding: 32px; z-index: 1 /* [1] */; } .dgc-hero-offset > div { padding: 0 48px; } .dgc-hero-offset img { border-radius: 8px; height: 400px; object-fit: cover; } @media screen and (max-width: 1310px) { .dgc-hero-offset-inner > div:first-child { margin-inline-start: -14vw; width: 78vw; } .dgc-hero-offset-inner > div:last-child { width: 40vw; } .dgc-hero-offset-inner h3 a { display: inline-block; font-size: 24px; line-height: 28px; } } @media screen and (max-width: 840px) { .dgc-hero-offset > div { padding: 0; } /* [1] Forces hero to display in a column with flex centering rather than a * row at 840px width */ .dgc-hero-offset-inner { display: flex !important; /* [1] */ } /* [1] Forces image container width to full screen width when resized to 840px * rather than having small amounts of whitespace on each side. */ .dgc-hero-offset-inner > div:first-child { margin-inline-start: 0; width: 100% !important /* [1] */; } .dgc-hero-offset img { border-radius: 0; height: 50vh; } /* [1] Pull the description up in order to to overlap the image. */ /* [2] Adds padding to header/description card at lower resolution width * because mobile breakpoints remove all padding. */ .dgc-hero-offset-inner > div:last-child { margin-top: -144px !important; /* [1] */ padding: 32px !important; /* [2] */ width: calc(100% - 64px); } } /* Home page template - I/O Fullscreen takeover */ .dgc-hero-fullscreen { --dgc-hero-grid: '. . . .' 3fr '. heading . .' '. item . .' '. . . .' .4fr / 65px 500px 5fr 65px; --dgc-hero-heading-font-size: 60px; --dgc-hero-heading-line-height: 64px; --dgc-hero-margin: 0 calc(-50vw + 50%); } .dgc-hero-fullscreen-item { --dgc-hero-fullscreen-item-padding: 24px; } .dgc-hero-fullscreen-row::after { --dgc-hero-background: url(/web/20230928191814im_/https://developers.google.com/homepage-assets/images/io-promo-2023-badge.svg) no-repeat top 38px left 38px / 300px, url(/web/20230928191814im_/https://developers.google.com/homepage-assets/images/io-promo-2023.png) no-repeat top right 3vw / auto 100vh #38a852; } @media screen and (min-width: 2000px) { .dgc-hero-fullscreen { --dgc-hero-grid: '. . . .' 1.5fr '. heading . .' '. item . .' '. . . .' .4fr / 80px 25vw 5fr 80px; } .dgc-hero-fullscreen-row::after { --dgc-hero-background: url(/web/20230928191814im_/https://developers.google.com/homepage-assets/images/io-promo-2023-badge.svg) no-repeat top 38px left 38px / 18vw auto, url(/web/20230928191814im_/https://developers.google.com/homepage-assets/images/io-promo-2023.png) no-repeat top right 3vw / contain #38a852 } .dgc-hero-fullscreen-row h2 { --dgc-hero-heading-font-size: 3vw; --dgc-hero-heading-line-height: 3vw; } .dgc-hero-fullscreen-item { --dgc-hero-fullscreen-item-padding: 1.5vw; } } @media screen and (max-width: 1440px) { .dgc-hero-fullscreen-row::after { --dgc-hero-background: url(/web/20230928191814im_/https://developers.google.com/homepage-assets/images/io-promo-2023-badge.svg) no-repeat top 38px left 38px / 300px, url(/web/20230928191814im_/https://developers.google.com/homepage-assets/images/io-promo-2023.png) no-repeat top right / cover #38a852; } } @media screen and (max-width: 1080px) { .dgc-hero-fullscreen-row::after { --dgc-hero-background: url(/web/20230928191814im_/https://developers.google.com/homepage-assets/images/io-promo-2023-badge.svg) no-repeat top 38px left 38px / 300px, url(/web/20230928191814im_/https://developers.google.com/homepage-assets/images/io-promo-2023.png) no-repeat top 188px right / cover #38a852; } } @media screen and (max-width: 800px) { .dgc-hero-fullscreen { --dgc-hero-grid: '. .' 7fr '. .' 'item .' '. .' .75fr / 5fr 1fr; --dgc-hero-margin: 0; } .dgc-hero-fullscreen-row::after { --dgc-hero-background: url(/web/20230928191814im_/https://developers.google.com/homepage-assets/images/io-promo-2023-badge.svg) no-repeat top left / 300px, url(/web/20230928191814im_/https://developers.google.com/homepage-assets/images/io-promo-2023-tablet.png) no-repeat top left / cover #202124; } } @media screen and (max-width: 600px) { .dgc-hero-fullscreen { --dgc-hero-grid: '.' 5fr '.' 'item' '.' .75fr / 1fr; --dgc-hero-heading-font-size: 40px; --dgc-hero-heading-line-height: 42px; } .dgc-hero-fullscreen-row::after { --dgc-hero-background: url(/web/20230928191814im_/https://developers.google.com/homepage-assets/images/io-promo-2023-badge.svg) no-repeat top 6px left 4px / 50vw, url(/web/20230928191814im_/https://developers.google.com/homepage-assets/images/io-promo-2023-mobile.png) no-repeat top left / cover #202124; } } @media screen and (max-width: 600px) and (max-height: 410px) { .dgc-hero-fullscreen { --dgc-hero-heading-font-size: 32px; --dgc-hero-heading-line-height: 34px; } .dgc-hero-fullscreen-item { --dgc-hero-fullscreen-item-padding: 12px; } } /* [1] Override default overflow hidden property to allow sticky properties, * which allows fullscreen takeover to slide over the below content. */ .dgc-hero-fullscreen .devsite-wrapper { overflow: unset !important; /* [1] */ } /* [1] Override primary color background so that the row has a transparent * background that doesn't cover up the background image. */ .dgc-hero-fullscreen-row { background: transparent !important; /* [1] */ overflow: hidden; padding: 0; position: relative; z-index: 1; } .dgc-hero-fullscreen-row::after, .dgc-hero-fullscreen-row .devsite-landing-row-html { height: calc(100vh - 112px); } .dgc-hero-fullscreen-row::after { background: var(--dgc-hero-background); content: ''; position: absolute; top: 0; width: 100vw; } .dgc-hero-fullscreen-row .devsite-landing-row-html { display: grid; grid: var(--dgc-hero-grid); margin: var(--dgc-hero-margin); } .dgc-hero-fullscreen-row h2, .dgc-hero-fullscreen-item { z-index: 1; } .dgc-hero-fullscreen-row h2 { font-size: var(--dgc-hero-heading-font-size); font-weight: 500; grid-area: heading; line-height: var(--dgc-hero-heading-line-height); margin-block: unset; } .dgc-hero-fullscreen-item { background: var(--tenant-background-1); border: var(--tenant-primary-border); border-radius: 8px; font: normal 20px 'Google Sans'; grid-area: item; padding: var(--dgc-hero-fullscreen-item-padding); } .dgc-hero-fullscreen-item p { margin-block: var(--dgc-hero-fullscreen-item-padding); } .dgc-hero-fullscreen-row a { background: #fbbc04; border: 1px solid #202124; color: #202124; } .dgc-hero-fullscreen-row a.button:hover { background: #f9ab00; border: 1px solid #202124; color: #202124; } .dgc-hero-fullscreen-row a.button:focus, .dgc-hero-fullscreen-row a.button:active { background: #f29900; border: 1px solid #202124; color: #202124; } /* Home page - logo garden following fullscreen hero */ .dgc-hero-fullscreen-row + .dgc-logo-garden { bottom: -30vh; position: sticky; } .dgc-hero-fullscreen-row + .dgc-build-smarter-hero { bottom: 0vh; position: sticky; } .dgc-build-smarter-hero video { aspect-ratio: 16 / 9; width: 960px; } .dgc-hero-fullscreen-row + .dgc-recs-carousel { bottom: -10vh; position: sticky; } /* Home page - hero */ /* Add a border between the hero and any following row other than .dgc-recs */ .dgc-hero + .devsite-landing-row:not(.dgc-recs) { border-top: 2px solid #f1f3f4; } .dgc-hero img { aspect-ratio: 720 / 416; } .dgc-hero .devsite-landing-row-item .devsite-landing-row-item-body h3 { font-size: 32px; line-height: 40px; } .dgc-hero .devsite-landing-row-item-image { margin: 40px auto; } .dgc-hero .devsite-landing-row-item-buttons { padding-top: 38px; } .dgc-recs-fallback { padding-top: 46px; } /* Reduce bottom padding for row to compensate for the extra space taken up by * carousel markers. */ .dgc-recs-carousel { padding-bottom: 16px; } /* Markers are only visible above 600px, so normalize the row padding for * mobile. */ @media screen and (max-width: 600px) { .dgc-recs-carousel { padding: 16px 26px; } } /* Home page - recommended content fallback */ .dgc-recs-fallback h2 { display: flex; font-size: 16px; line-height: 24px; margin-block: 0 24px; } .dgc-recs-fallback[header-position='top'] .devsite-landing-row-header + .devsite-landing-row-group { margin: 0; } .dgc-recs-fallback .devsite-landing-row-item-no-media h3 { font-size: 20px; line-height: 28px; } .dgc-recs-fallback .devsite-landing-row-item-icon-container[size], .dgc-recs-fallback [size] .devsite-landing-row-item-icon { height: 32px; width: 32px; } /* Home page - logo garden */ .dgc-logo-garden .devsite-landing-row-item-custom-image-icon { max-height: 64px; width: 64px; } .dgc-logo-garden-cta { padding-bottom: 64px; } @media screen and (max-width: 600px) { .dgc-hero-fullscreen-row + .dgc-logo-garden { bottom: -70vh; } .dgc-logo-garden-cta { margin-top: 40px; } } /* Home page - programs */ .dgc-programs.devsite-landing-row-item { overflow: visible; } .dgc-programs .devsite-landing-row-item-image { position: relative; } .dgc-programs .devsite-landing-row-item-image::before { background: center / contain no-repeat; content: ''; display: block; height: 160px; position: absolute; right: 8px; top: 50%; transform: translateY(-50%); width: 160px; } .dgc-programs--events .devsite-landing-row-item-image::before { background-image: url(/web/20230928191814im_/https://developers.google.com/site-assets/images/home/events-graphic.png); } .dgc-programs--community .devsite-landing-row-item-image::before { background-image: url(/web/20230928191814im_/https://developers.google.com/site-assets/images/home/community-graphic.png); } @media screen and (max-width: 840px) { .dgc-programs .devsite-landing-row-item-media { overflow: visible !important; } } /* Home page - experts */ .devsite-directory__wrapper { padding: 0 12px 0; } .devsite-directory__content { display: grid; grid-gap: 24px; grid-template-columns: repeat(var(--directory-columns, 4), 1fr); } .devsite-directory__content__item { background-color: #fff; margin: 0; padding: 0; } .experts-row { overflow: hidden; } .experts-directory__item__profile { padding: 20px 20px 0; text-align: center; } .experts-directory__item__profile-pic-holder { background-size: cover; border-radius: 50%; display: block; height: 100px; margin: 0 auto 20px; overflow: hidden; position: relative; width: 100px; } .experts-directory__item__name { margin: 0; } .experts-directory__item__name h3 { font-size: 12px; font-style: normal; font-weight: 500; padding-top: 15px; text-align: center; } .experts-directory__item__location, .experts-directory__item__experience { font: 400 14px/20px; margin-top: 0; } .experts-directory__item__expertise { color: gray; } .experts-directory__item__view-profile { margin: auto auto 16px; } @media screen and (max-width: 1000px) { .devsite-directory__content { --directory-columns: 2; } } @media screen and (max-width: 500px) { .devsite-directory__content { --directory-columns: 1; } } /* Google for Developers rebranding */ .dgc-build-smarter { align-items: center; } .dgc-build-smarter h3 { font: var(--dgc-build-smarter-font) !important; letter-spacing: unset; line-height: 110px !important; } .dgc-build-smarter + div { align-items: center; } .dgc-build-smarter + div > span { margin-left: 4px !important; } .dgc-build-smarter div { font: 400 24px 'Google Sans'; justify-content: center; } .dgc-ecosystem-bold-button, .dgc-ecosystem-bold-button:hover, .dgc-ecosystem-bold-button:focus, .dgc-ecosystem-bold-button:active { border: 2px solid var(--tenant-primary-text-color); } .dgc-build-smarter-buttons-label { font: 700 24px 'Google Sans'; margin-right: 30px; vertical-align: middle; } .dgc-build-smarter-buttons div { display: inline; } .dgc-build-smarter-buttons figure { pointer-events: none; } .dgc-web-ecosystem-cards header h2, .dgc-ecosystem-solution-cards header h2, .dgc-ecosystem-additional-solutions header h2, .dgc-ecosystem-case-studies h2, .dgc-social-footer h2 { font: 700 48px 'Google Sans'; } /* Overrides icon size */ .dgc-social-footer img { height: 38px !important; width: 38px !important; } /* Ensures LinkedIn image does not look stretched */ .dgc-social-footer .dgc-social-li img { width: 44.69px !important; } .dgc-web-ecosystem-cards header div, .dgc-ecosystem-solution-cards header div, .dgc-ecosystem-additional-solutions header div, .dgc-ecosystem-case-studies header div { font: 400 24px 'Google Sans'; } .dgc-web-ecosystem-card { flex-direction: row-reverse; } .dgc-web-ecosystem-card img { max-height: 105px; max-width: 155px; } .dgc-web-ecosystem-card > div:first-child { align-self: center; padding-right: 16px; } /* Google for Developers rebranding */ /* [1] Overrides blue link color in favor of primary text color */ .dgc-web-ecosystem-card h3 > a, .dgc-ecosystem-solution-card h3 > a, .dgc-ecosystem-additional-solutions-card h3 > a { color: var(--tenant-primary-text-color) !important; /* [1] */ font: 700 24px 'Google Sans'; } .dgc-web-ecosystem-card h3 + div, .dgc-ecosystem-solution-card h3 + div, .dgc-ecosystem-additional-solutions-card h3 + div, .android-spotlight h3 + div { font: 400 18px 'Roboto'; line-height: 24px; } /* [1] Forces material icons in buttons to have 0 margin */ .dgc-web-ecosystem-card .material-icons, .dgc-ecosystem-additional-solutions-card .material-icons, .dgc-build-smarter-buttons .material-icons, .dgc-ecosystem-bold-button .material-icons { margin: 0 !important; /* [1] */ } .dgc-logo-garden.dgc-ecosystem-logo-garden h2 { font: 700 48px 'Google Sans'; } .dgc-ecosystem-logo-garden + .dgc-logo-garden-cta { padding-top: 0; } .dgc-ecosystem-logo-garden .devsite-landing-row-item:not( .dgc-logo-garden-card) { background: var(--tenant-background-1); border: var(--tenant-primary-border); border-radius: 10px; } .dgc-ecosystem-logo-garden .devsite-landing-row-item:not( .dgc-logo-garden-card) > a { margin-bottom: auto; } .dgc-logo-garden-card { padding: 8px 32px 25px; } .dgc-logo-garden-card p:first-of-type { font-size: 18px; font-weight: 700; } .dgc-trending-row { --trending-carousel-padding-bottom: 64px; padding-inline: 8px; } .dgc-trending-row li > div { border-radius: 8px; height: 100%; padding: 32px 40px; } /* [1] Forces link color to be primary text color instead of blue */ .dgc-trending-row h3 a { color: var(--tenant-primary-text-color) !important; /* [1] */ font: 700 48px 'Google Sans'; } /* [1] Forces link color to be primary text color instead of blue */ .dgc-showcase-row h3 a { color: var(--tenant-primary-text-color) !important; /* [1] */ font: 700 40px 'Google Sans'; } .dgc-trending-row h3 + div, .dgc-showcase-row h3 + div { color: var(--tenant-primary-text-color); font: 400 18px 'Roboto'; line-height: 26px; } .dgc-trending-row .devsite-landing-row-item-labels span, .dgc-showcase-row .devsite-landing-row-item-labels span { font: 400 14px 'Roboto'; } .dgc-trending-row img, .dgc-showcase-row figure img { border-radius: 10px; } .dgc-showcase-row:last-of-type { margin-bottom: 40px; } .android-spotlight { background: #f1f3f4 !important; margin-bottom: 24px; padding-block: 64px !important; } .android-spotlight img { border-radius: 8px; } .android-spotlight-mobile { margin-bottom: 64px; } .android-spotlight h3 a { color: var(--tenant-primary-text-color) !important; font: 700 48px 'Google Sans'; } /* Carousel section */ .trending-carousel-bard img:first-of-type { display: block; } .trending-carousel-bard img:last-of-type { display: none; } .dgc-build-smarter h3 { --dgc-build-smarter-font: 700 100px 'Google Sans'; } .trending-carousel-slide { --trending-carousel-slide-flex-direction: row; --trending-carousel-slide-gap: 70px; } .trending-carousel-slide > div { --trending-carousel-slide-display: grid; } .trending-carousel-slide > div.trending-carousel-bard { --trending-carousel-slide-display: flex; --trending-carousel-slide-flex-direction: column-reverse; --trending-carousel-slide-gap: 0; } @media screen and (max-width: 1200px) { .dgc-build-smarter h3 { --dgc-build-smarter-font: 700 80px 'Google Sans'; } } @media screen and (max-width: 960px) { .dgc-build-smarter-hero > div > div { display: flex; flex-direction: column; } .trending-carousel-slide { --trending-carousel-slide-flex-direction: column-reverse; --trending-carousel-slide-gap: 20px; } .trending-carousel-slide > div:not(.trending-carousel-bard) .devsite-landing-row-item-media { align-self: baseline; width: 75%; } .dgc-trending-row { --trending-carousel-padding-bottom: 24px; } .dgc-logo-garden-cta { padding-bottom: 32px; } .dgc-trending-row { --trending-carousel-padding-bottom: 24px; } .dgc-logo-garden-cta { padding-bottom: 32px; } .trending-carousel-slide > div { --trending-carousel-slide-display: flex; } .trending-carousel-slide img { border: var(--tenant-primary-border); border-radius: 10px; } .trending-carousel-bard img { padding: 50px 12px 60px; } } @media screen and (max-width: 850px) { .dgc-ecosystem-logo-garden > div > div { grid-template-columns: 1fr 1fr !important; } } @media screen and (max-width: 600px) { .trending-carousel-slide { --trending-carousel-slide-gap: 0; } .trending-carousel-slide > div:not(.trending-carousel-bard) .devsite-landing-row-item-media { width: 100%; } .trending-carousel-bard img:first-of-type { display: none !important; } .trending-carousel-bard img:last-of-type { display: block !important; } .trending-carousel-bard > div:last-of-type { margin-top: 24px !important; } .trending-carousel-bard > div:last-of-type > div > div { padding-top: 0 !important; } /* [1] Forces logo garden to be 1 column at 600px width */ .dgc-ecosystem-logo-garden > div > div { grid-template-columns: 1fr !important; /* [1] */ } } .dgc-trending-row { --trending-row-padding-bottom: 64px; } .dgc-trending-row { padding-bottom: var(--trending-carousel-padding-bottom); } .dgc-trending-row-tech-stack { padding-top: 64px; } .trending-carousel-slide { align-items: center; display: flex; justify-content: center; margin: 0 auto; width: 100%; } .trending-carousel-slide > div.trending-carousel-bard { align-items: baseline; padding: 32px 40px 54px; width: 100%; } .trending-carousel-slide > div.trending-carousel-bard img { width: 1100px; } .trending-carousel-slide > div { align-items: center; border: var(--trending-carousel-slide-border, var(--tenant-primary-border)); display: var(--trending-carousel-slide-display); flex-direction: var(--trending-carousel-slide-flex-direction); gap: var(--trending-carousel-slide-gap); grid: auto-flow / 2fr 3fr; width: 100%; } .trending-carousel-slide > div > div { grid-column: unset !important; } /* [1] Forces carousel slide grid-column to be unset */ .trending-carousel-slide > div > div { grid-column: unset !important; /* [1] */ } /* Tech stack pages */ /* [1] Overrides font of page header */ .dgc-ecosystem-header h3 { font: 700 100px 'Google Sans' !important; /* [1] */ margin-bottom: 6px; } .dgc-ecosystem-header div { font: 400 24px 'Google Sans'; } .dgc-ecosystem-header-mobile { background: var(--dgc-ecosystem-header-mobile-background); padding: var(--dgc-ecosystem-header-mobile-padding); } .dgc-ecosystem-header-web { background: var(--dgc-ecosystem-header-web-background); padding: var(--dgc-ecosystem-header-web-padding); } .dgc-ecosystem-header-cloud { background: var(--dgc-ecosystem-header-cloud-background); padding: var(--dgc-ecosystem-header-cloud-padding); } .dgc-ecosystem-header-ai { background: var(--dgc-ecosystem-header-ai-background); padding: var(--dgc-ecosystem-header-ai-padding); } .dgc-ecosystem-related { background: #e8f0fe; padding-block: 64px; } .dgc-ecosystem-solution-cards { padding-block: 8px 0; } .dgc-ecosystem-solution-cards + section { padding-block: 24px 64px; } .dgc-ecosystem-case-studies { padding-bottom: 64px; } .dgc-ecosystem-case-studies header { max-width: 800px; } .dgc-ecosystem-solution-cards-paginator { display: grid; gap: 24px; grid: auto-flow / repeat(auto-fit, minmax(350px, 1fr)); margin-bottom: 24px; } .dgc-ecosystem-solution-card { border: var(--tenant-primary-border); border-radius: 8px; } .dgc-ecosystem-solution-card, .dgc-ecosystem-solution-card > div, .dgc-ecosystem-solution-card > div > div { height: 100%; } .dgc-ecosystem-solution-card .devsite-landing-row-item-labels { display: flex; justify-content: space-between; } .dgc-ecosystem-solution-card .devsite-landing-row-item-labels span { font: 400 14px 'Roboto'; } .dgc-ecosystem-solution-card-icons { align-items: center; display: flex; gap: 12px; margin-top: auto; padding-top: 32px; } .dgc-ecosystem-solution-card-icons + div { margin-top: 32px; } .dgc-ecosystem-solution-card-icons img { max-height: 32px; max-width: 32px; min-width: 32px; } .dgc-ecosystem-case-study .devsite-landing-row-item-labels span, .android-spotlight .devsite-landing-row-item-labels span { font: 400 14px 'Roboto'; } .dgc-ecosystem-case-study h3 a { color: #202124; font: 700 24px 'Google Sans'; } .dgc-ecosystem-case-study > div:first-child { padding: 24px 24px 0; } .dgc-ecosystem-additional-solutions-card > div:first-child { order: 1; padding: 25px; } .dgc-ecosystem-additional-solutions-card { display: grid; grid: auto-flow / 1.5fr 1fr; } .dgc-ecosystem-additional-solutions-card img { max-height: 100px; max-width: 155px; width: auto; } /* [1] Forces background color of row to be #f8f9fa instead of white */ .dgc-ecosystem-additional-solutions { background: #f8f9fa !important; /* [1] */ padding-block: 64px; } .dgc-ecosystem-header-mobile { --dgc-ecosystem-header-mobile-background: url(/web/20230928191814im_/https://developers.google.com/focus/images/mobile-header.png) no-repeat center center / min(calc(100vw - 66px), 1436px); --dgc-ecosystem-header-mobile-padding: min(9vw, 150px) 0; } .dgc-ecosystem-header-web { --dgc-ecosystem-header-web-background: url(/web/20230928191814im_/https://developers.google.com/focus/images/web-header.png) no-repeat center center / min(calc(100vw - 66px), 1436px); --dgc-ecosystem-header-web-padding: min(9vw, 150px) 0; } .dgc-ecosystem-header-cloud { --dgc-ecosystem-header-cloud-background: url(/web/20230928191814im_/https://developers.google.com/focus/images/cloud-header.png) no-repeat center center / min(calc(100vw - 66px), 1436px); --dgc-ecosystem-header-cloud-padding: min(9vw, 150px) 0; } .dgc-ecosystem-header-ai { --dgc-ecosystem-header-ai-background: url(/web/20230928191814im_/https://developers.google.com/focus/images/ai-header.png) no-repeat center center / min(calc(100vw - 66px), 1436px); --dgc-ecosystem-header-ai-padding: min(9vw, 150px) 0; } @media screen and (max-width: 1420px) { .dgc-build-smarter-hero .devsite-landing-row-item-buttons { display: block; } .dgc-build-smarter-buttons-label { margin: 0 0 8px 12px; } .dgc-ecosystem-additional-solutions-card img { width: -webkit-fill-available; } } @media screen and (max-width: 1000px) { .dgc-ecosystem-header-mobile { --dgc-ecosystem-header-mobile-background: url(/web/20230928191814im_/https://developers.google.com/focus/images/mobile-header-mobile.png) no-repeat top 30px left 30px / 50vw; --dgc-ecosystem-header-mobile-padding: 36vw 0 50px; } .dgc-ecosystem-header-web { --dgc-ecosystem-header-web-background: url(/web/20230928191814im_/https://developers.google.com/focus/images/web-header-mobile.png) no-repeat top 30px left 30px / 50vw; --dgc-ecosystem-header-web-padding: 36vw 0 50px; } .dgc-ecosystem-header-cloud { --dgc-ecosystem-header-cloud-background: url(/web/20230928191814im_/https://developers.google.com/focus/images/cloud-header-mobile.png) no-repeat top 30px left 30px / 50vw; --dgc-ecosystem-header-cloud-padding: 36vw 0 50px; } .dgc-ecosystem-header-ai { --dgc-ecosystem-header-ai-background: url(/web/20230928191814im_/https://developers.google.com/focus/images/ai-header-mobile.png) no-repeat top 30px left 30px / 50vw; --dgc-ecosystem-header-ai-padding: 36vw 0 50px; } } @media screen and (max-width: 840px) { .dgc-ecosystem-additional-solutions-card { grid: unset; } .dgc-web-ecosystem-card img { max-height: 105px; padding: 10px 0 0 10px; width: auto; } .dgc-ecosystem-additional-solutions-card img { width: auto; } } @media screen and (max-width: 600px) { .dgc-build-smarter h3 { line-height: 85px !important; } /* [1] Forces logo garden to be 1 column at 600px width */ .dgc-ecosystem-logo-garden > div > div { grid-template-columns: 1fr !important; /* [1] */ } .dgc-ecosystem-header-mobile { --dgc-ecosystem-header-mobile-background: url(/web/20230928191814im_/https://developers.google.com/focus/images/mobile-header-mobile.png) no-repeat top 30px left 30px / calc(100vw - 66px); --dgc-ecosystem-header-mobile-padding: 58vw 0 50px; } .dgc-ecosystem-header-web { --dgc-ecosystem-header-web-background: url(/web/20230928191814im_/https://developers.google.com/focus/images/web-header-mobile.png) no-repeat top 30px left 30px / calc(100vw - 66px); --dgc-ecosystem-header-web-padding: 58vw 0 50px; } .dgc-ecosystem-header-cloud { --dgc-ecosystem-header-cloud-background: url(/web/20230928191814im_/https://developers.google.com/focus/images/cloud-header-mobile.png) no-repeat top 30px left 30px / calc(100vw - 66px); --dgc-ecosystem-header-cloud-padding: 58vw 0 50px; } .dgc-ecosystem-header-ai { --dgc-ecosystem-header-ai-background: url(/web/20230928191814im_/https://developers.google.com/focus/images/ai-header-mobile.png) no-repeat top 30px left 30px / calc(100vw - 66px); --dgc-ecosystem-header-ai-padding: 58vw 0 50px; } .dgc-logo-garden-cta { margin-top: 0 !important; } .dgc-ecosystem-solution-cards + section { padding-block: 24px 32px; } .dgc-trending-row h3 a { font: 700 32px 'Google Sans'; } .dgc-ecosystem-additional-solutions { padding-block: 32px; } .dgc-ecosystem-case-studies { padding-bottom: 32px; } .android-spotlight-mobile { margin-bottom: 32px; } } </style> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="http://web.archive.org/web/20230928191814/https://developers.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="Google for Developers"> Google for Developers </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/products" 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=""> Products </a> </li> </ul> </div> <devsite-feature-tooltip ack-key="AckCollectionsBookmarkTooltipDismiss" analytics-category="Site-Wide Custom Events" analytics-action-show="Callout Profile displayed" analytics-action-close="Callout Profile dismissed" analytics-label="Create Collection Callout" class="devsite-page-bookmark-tooltip nocontent" dismiss-button="true" id="devsite-collections-dropdown" dismiss-button-text="Dismiss" close-button-text="Got it"> <devsite-bookmark></devsite-bookmark> <span slot="popout-heading"> Stay organized with collections </span> <span slot="popout-contents"> Save and categorize content based on your preferences. </span> </devsite-feature-tooltip> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded disabled> </devsite-toc> <div class="devsite-article-body clearfix "> <section class="devsite-landing-row devsite-landing-row-2-up devsite-landing-row-50 devsite-landing-row-hero devsite-landing-row-no-image-background dgc-build-smarter-hero" header-position="top"> <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item devsite-landing-row-item-no-media dgc-build-smarter" description-position="bottom"> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <h3 id="build-smarterbrship-faster" data-text="Build smarter,ship faster" class="hide-from-toc no-link" tabindex="0"> Build smarter,<br>ship faster </h3> <div class="devsite-landing-row-item-description-content"> Unlock creativity and simplify your workflow with open, integrated solutions. </div> </div> </div> </div> <div class="devsite-landing-row-item" description-position="bottom"> <video loop autoplay muted> <source src="/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/build-smarter.mp4" type="video/mp4"> </video> <span class="devsite-landing-row-item-buttons"> <div class="dgc-build-smarter-buttons-label">I'm building for:</div> <a href="/web/20230928191814/https://developers.google.com/focus/mobile-app-development" class="button dgc-ecosystem-bold-button" data-category="Homepage Hero Build smarter" data-label="Mobile button"> Mobile <span class="material-icons" aria-hidden="true" translate="no" translate="no">arrow_forward</span> </a> <a href="/web/20230928191814/https://developers.google.com/focus/web-development" class="button dgc-ecosystem-bold-button" data-category="Homepage Hero Build smarter" data-label="Web button"> Web <span class="material-icons" aria-hidden="true" translate="no" translate="no">arrow_forward</span> </a> <a href="/web/20230928191814/https://developers.google.com/focus/ai-development" class="button dgc-ecosystem-bold-button" data-category="Homepage Hero Build smarter" data-label="AI button"> AI <span class="material-icons" aria-hidden="true" translate="no" translate="no">arrow_forward</span> </a> <a href="/web/20230928191814/https://developers.google.com/focus/cloud-development" class="button dgc-ecosystem-bold-button" data-category="Homepage Hero Build smarter" data-label="Cloud button"> Cloud <span class="material-icons" aria-hidden="true" translate="no" translate="no">arrow_forward</span> </a> </span> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-4-up devsite-landing-row-header-centered devsite-landing-row-large-headings devsite-landing-row-logos dgc-logo-garden dgc-ecosystem-logo-garden" background="/web/20230928191814im_/https://developers.google.com/white" header-position="top"> <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header"> <div class="devsite-landing-row-header-text"> <h2 id="featured-products" data-text="Featured products" tabindex="0"> Featured products </h2> </div> </header> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item" description-position="bottom"> <a href="http://web.archive.org/web/20230928191814/https://developer.android.com/" data-category="Homepage Logo Garden" data-label="Android"> <div class="devsite-landing-row-item dgc-logo-garden-card" description-position="bottom"> <div class="devsite-landing-row-item-media"> <figure class="devsite-landing-row-item-custom-image"> <div class="devsite-landing-row-item-custom-image-icon-wrapper"> <div class="devsite-landing-row-item-custom-image-icon-container" size="medium"> <img class="devsite-landing-row-item-custom-image-icon" alt src="http://web.archive.org/web/20230928191814im_/https://developer.android.com/images/brand/Android_Robot.png"> </div> </div> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-description-content"> <p>Android</p> <p>Modern tools to help you build experiences that people love across every Android device.</p> </div> </div> </div> </div> </a> </div> <div class="devsite-landing-row-item" description-position="bottom"> <a href="http://web.archive.org/web/20230928191814/https://cloud.google.com/developers" data-category="Homepage Logo Garden" data-label="Google Cloud"> <div class="devsite-landing-row-item dgc-logo-garden-card" description-position="bottom"> <div class="devsite-landing-row-item-media"> <figure class="devsite-landing-row-item-custom-image"> <div class="devsite-landing-row-item-custom-image-icon-wrapper"> <div class="devsite-landing-row-item-custom-image-icon-container" size="medium"> <img class="devsite-landing-row-item-custom-image-icon" alt="" src="//web.archive.org/web/20230928191814im_/https://www.gstatic.com/images/branding/product/2x/google_cloud_64dp.png"> </div> </div> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-description-content"> <p>Google Cloud</p> <p>Build apps faster, make smarter business decisions, and connect people everywhere.</p> </div> </div> </div> </div> </a> </div> <div class="devsite-landing-row-item" description-position="bottom"> <a href="http://web.archive.org/web/20230928191814/https://www.tensorflow.org/" data-category="Homepage Logo Garden" data-label="TensorFlow"> <div class="devsite-landing-row-item dgc-logo-garden-card" description-position="bottom"> <div class="devsite-landing-row-item-media"> <figure class="devsite-landing-row-item-custom-image"> <div class="devsite-landing-row-item-custom-image-icon-wrapper"> <div class="devsite-landing-row-item-custom-image-icon-container" size="medium"> <img class="devsite-landing-row-item-custom-image-icon" alt="" src="/web/20230928191814im_/https://developers.google.com/static/site-assets/images/products/tensorflow-logo-196.png"> </div> </div> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-description-content"> <p>TensorFlow</p> <p>An end-to-end platform that makes it easy to build and deploy ML models in any environment.</p> </div> </div> </div> </div> </a> </div> <div class="devsite-landing-row-item" description-position="bottom"> <a href="http://web.archive.org/web/20230928191814/https://developer.chrome.com/" data-category="Homepage Logo Garden" data-label="Google Chrome"> <div class="devsite-landing-row-item dgc-logo-garden-card" description-position="bottom"> <div class="devsite-landing-row-item-media"> <figure class="devsite-landing-row-item-custom-image"> <div class="devsite-landing-row-item-custom-image-icon-wrapper"> <div class="devsite-landing-row-item-custom-image-icon-container" size="medium"> <img class="devsite-landing-row-item-custom-image-icon" alt="" src="/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/chromeos-logo.svg"> </div> </div> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-description-content"> <p>Google Chrome</p> <p>Modern tools and features that help you build high quality web experiences.</p> </div> </div> </div> </div> </a> </div> <div class="devsite-landing-row-item" description-position="bottom"> <a href="http://web.archive.org/web/20230928191814/https://play.google.com/console/about/" data-category="Homepage Logo Garden" data-label="Google Play"> <div class="devsite-landing-row-item dgc-logo-garden-card" description-position="bottom"> <div class="devsite-landing-row-item-media"> <figure class="devsite-landing-row-item-custom-image"> <div class="devsite-landing-row-item-custom-image-icon-wrapper"> <div class="devsite-landing-row-item-custom-image-icon-container" size="medium"> <img class="devsite-landing-row-item-custom-image-icon" alt="" src="http://web.archive.org/web/20230928191814im_/https://www.gstatic.com/images/branding/product/2x/play_prism_64dp.png"> </div> </div> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-description-content"> <p>Google Play</p> <p>Grow your business, improve app quality, engage your audience, and earn revenue.</p> </div> </div> </div> </div> </a> </div> <div class="devsite-landing-row-item" description-position="bottom"> <a href="http://web.archive.org/web/20230928191814/https://firebase.google.com/" data-category="Homepage Logo Garden" data-label="Firebase"> <div class="devsite-landing-row-item dgc-logo-garden-card" description-position="bottom"> <div class="devsite-landing-row-item-media"> <figure class="devsite-landing-row-item-custom-image"> <div class="devsite-landing-row-item-custom-image-icon-wrapper"> <div class="devsite-landing-row-item-custom-image-icon-container" size="medium"> <img class="devsite-landing-row-item-custom-image-icon" alt="" src="http://web.archive.org/web/20230928191814im_/https://www.gstatic.com/images/branding/product/2x/firebase_64dp.png"> </div> </div> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-description-content"> <p>Firebase</p> <p>An app development platform that helps you build and grow apps and games users love.</p> </div> </div> </div> </div> </a> </div> <div class="devsite-landing-row-item" description-position="bottom"> <a href="http://web.archive.org/web/20230928191814/https://developers.generativeai.google/products/palm" data-category="Homepage Logo Garden" data-label="PaLM"> <div class="devsite-landing-row-item dgc-logo-garden-card" description-position="bottom"> <div class="devsite-landing-row-item-media"> <figure class="devsite-landing-row-item-custom-image"> <div class="devsite-landing-row-item-custom-image-icon-wrapper"> <div class="devsite-landing-row-item-custom-image-icon-container" size="medium"> <img class="devsite-landing-row-item-custom-image-icon" alt src="/web/20230928191814im_/https://developers.google.com/static/focus/images/palm-logo.svg"> </div> </div> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-description-content"> <p>PaLM</p> <p>An easy and safe API to experiment with Google's large language models.</p> </div> </div> </div> </div> </a> </div> <div class="devsite-landing-row-item" description-position="bottom"> <a href="http://web.archive.org/web/20230928191814/https://developers.generativeai.google/products/makersuite" data-category="Homepage Logo Garden" data-label="MakerSuite"> <div class="devsite-landing-row-item dgc-logo-garden-card" description-position="bottom"> <div class="devsite-landing-row-item-media"> <figure class="devsite-landing-row-item-custom-image"> <div class="devsite-landing-row-item-custom-image-icon-wrapper"> <div class="devsite-landing-row-item-custom-image-icon-container" size="medium"> <img class="devsite-landing-row-item-custom-image-icon" alt src="/web/20230928191814im_/https://developers.google.com/static/focus/images/makersuite.png"> </div> </div> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-description-content"> <p>MakerSuite</p> <p>Quickly prototype generative AI applications in a browser - no ML expertise or coding required.</p> </div> </div> </div> </div> </a> </div> <div class="devsite-landing-row-item" description-position="bottom"> <a href="http://web.archive.org/web/20230928191814/https://flutter.dev/" data-category="Homepage Logo Garden" data-label="Flutter"> <div class="devsite-landing-row-item dgc-logo-garden-card" description-position="bottom"> <div class="devsite-landing-row-item-media"> <figure class="devsite-landing-row-item-custom-image"> <div class="devsite-landing-row-item-custom-image-icon-wrapper"> <div class="devsite-landing-row-item-custom-image-icon-container" size="medium"> <img class="devsite-landing-row-item-custom-image-icon" alt="" src="http://web.archive.org/web/20230928191814im_/https://www.gstatic.com/images/branding/product/2x/flutter_64dp.png"> </div> </div> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-description-content"> <p>Flutter</p> <p>Build, test, and deploy beautiful web, mobile, desktop and embedded apps from one codebase.</p> </div> </div> </div> </div> </a> </div> <div class="devsite-landing-row-item" description-position="bottom"> <a href="http://web.archive.org/web/20230928191814/https://ads.google.com/" data-category="Homepage Logo Garden" data-label="Google Ads"> <div class="devsite-landing-row-item dgc-logo-garden-card" description-position="bottom"> <div class="devsite-landing-row-item-media"> <figure class="devsite-landing-row-item-custom-image"> <div class="devsite-landing-row-item-custom-image-icon-wrapper"> <div class="devsite-landing-row-item-custom-image-icon-container" size="medium"> <img class="devsite-landing-row-item-custom-image-icon" alt="" src="/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/google-ads.svg"> </div> </div> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-description-content"> <p>Google Ads</p> <p>Promote your website, products, and app to the right users with Google Ads.</p> </div> </div> </div> </div> </a> </div> <div class="devsite-landing-row-item" description-position="bottom"> <a href="http://web.archive.org/web/20230928191814/https://www.kaggle.com/" data-category="Homepage Logo Garden" data-label="Kaggle"> <div class="devsite-landing-row-item dgc-logo-garden-card" description-position="bottom"> <div class="devsite-landing-row-item-media"> <figure class="devsite-landing-row-item-custom-image"> <div class="devsite-landing-row-item-custom-image-icon-wrapper"> <div class="devsite-landing-row-item-custom-image-icon-container" size="medium"> <img class="devsite-landing-row-item-custom-image-icon" alt="" src="/web/20230928191814im_/https://developers.google.com/static/focus/images/kaggle.svg"> </div> </div> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-description-content"> <p>Kaggle</p> <p>A platform to share machine learning data sets, explore and build models, and compete in competitions.</p> </div> </div> </div> </div> </a> </div> <div class="devsite-landing-row-item" description-position="bottom"> <a href="http://web.archive.org/web/20230928191814/https://angular.io/" data-category="Homepage Logo Garden" data-label="Angular"> <div class="devsite-landing-row-item dgc-logo-garden-card" description-position="bottom"> <div class="devsite-landing-row-item-media"> <figure class="devsite-landing-row-item-custom-image"> <div class="devsite-landing-row-item-custom-image-icon-wrapper"> <div class="devsite-landing-row-item-custom-image-icon-container" size="medium"> <img class="devsite-landing-row-item-custom-image-icon" alt="" src="/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/angular.png"> </div> </div> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-description-content"> <p>Angular</p> <p>The web development framework for building the future.</p> </div> </div> </div> </div> </a> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-item-centered devsite-landing-row-100 dgc-logo-garden-cta" header-position="top"> <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item devsite-landing-row-item-no-media" description-position="bottom"> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-buttons"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/products" class="button button-primary " data-category="Homepage Logo Garden" data-label="View all developer products">View all developer products</a> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-hero devsite-landing-row-no-image-background dgc-trending-row" header-position="top"> <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-html"> <devsite-carousel data-autoscroll-seconds="10" data-controls-position="center" data-markers-size="small"> <ul> <li class="trending-carousel-slide"> <div class="trending-carousel-palm"> <div class="devsite-landing-row-item-media"> <figure class="devsite-landing-row-item-image"> <a href="http://web.archive.org/web/20230928191814/https://developers.googleblog.com/2023/09/25-years-google-search-developer-trends.html" aria-label="25 years of Google Search image" data-category="Homepage Trending News Card" data-label="25 years of Google Search"> <img alt src="/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/google-search-25.webp"> </a> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-labels"> <span>Trending news</span> </div> <h3 class="hide-from-toc no-link" id="25-years-of-google-search" data-text=" 25 years of Google Search "> <a href="http://web.archive.org/web/20230928191814/https://developers.googleblog.com/2023/09/25-years-google-search-developer-trends.html" data-category="Homepage Trending News Card" data-label="25 years of Google Search"> 25 years of Google Search </a> </h3> <div class="devsite-landing-row-item-description-content"> From "how to center a div" to "generative AI," explore the queries that developers searched for. </div> <div class="devsite-landing-row-item-buttons"> <a href="http://web.archive.org/web/20230928191814/https://developers.googleblog.com/2023/09/25-years-google-search-developer-trends.html" class="button button-primary" data-category="Homepage Trending News Card" data-label="25 years of Google Search"> Learn more </a> </div> </div> </div> </div> </li> <li class="trending-carousel-slide"> <div class="trending-carousel-palm"> <div class="devsite-landing-row-item-media"> <figure class="devsite-landing-row-item-image"> <a href="http://web.archive.org/web/20230928191814/https://developers.googleblog.com/2023/09/how-space-invaders-arcore-game-was-made.html" aria-label="How SPACE INVADERS: World Defense was built image" data-category="Homepage Trending News Card" data-label="How SPACE INVADERS: World Defense was built"> <img alt src="/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/spaceinvaders.png"> </a> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-labels"> <span>Trending news</span> </div> <h3 class="hide-from-toc no-link" id="how-space-invaders:-world-defense-was-built" data-text=" How SPACE INVADERS: World Defense was built "> <a href="http://web.archive.org/web/20230928191814/https://developers.googleblog.com/2023/09/how-space-invaders-arcore-game-was-made.html" data-category="Homepage Trending News Card" data-label="How SPACE INVADERS: World Defense was built"> How SPACE INVADERS: World Defense was built </a> </h3> <div class="devsite-landing-row-item-description-content"> To celebrate the 45th anniversary of the game, ARCore and TAITO leveraged the Geospatial API. </div> <div class="devsite-landing-row-item-buttons"> <a href="http://web.archive.org/web/20230928191814/https://developers.googleblog.com/2023/09/how-space-invaders-arcore-game-was-made.html" class="button button-primary" data-category="Homepage Trending News Card" data-label="How SPACE INVADERS: World Defense was built"> Learn more </a> </div> </div> </div> </div> </li> <li class="trending-carousel-slide"> <div class="trending-carousel-palm"> <div class="devsite-landing-row-item-media"> <figure class="devsite-landing-row-item-image"> <a href="http://web.archive.org/web/20230928191814/https://blackgeniusacademy.careerkarma.com/" aria-label="Explore Tech Equity Collective Black Genius Academy image" data-category="Homepage Trending News Card" data-label="Explore Tech Equity Collective Black Genius Academy"> <img alt src="/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/black-genius-academy.png"> </a> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-labels"> <span>Trending news</span> </div> <h3 class="hide-from-toc no-link" id="explore-tech-equity-collective-black-genius-academy" data-text=" Explore Tech Equity Collective Black Genius Academy "> <a href="http://web.archive.org/web/20230928191814/https://blackgeniusacademy.careerkarma.com/" data-category="Homepage Trending News Card" data-label="Explore Tech Equity Collective Black Genius Academy"> Explore Tech Equity Collective Black Genius Academy </a> </h3> <div class="devsite-landing-row-item-description-content"> A new platform for Black talent to identify education programs and enter the industry. </div> <div class="devsite-landing-row-item-buttons"> <a href="http://web.archive.org/web/20230928191814/https://blackgeniusacademy.careerkarma.com/" class="button button-primary" data-category="Homepage Trending News Card" data-label="Explore Tech Equity Collective Black Genius Academy"> Learn more </a> </div> </div> </div> </div> </li> <li class="trending-carousel-slide"> <div class="trending-carousel-palm"> <div class="devsite-landing-row-item-media"> <figure class="devsite-landing-row-item-image"> <a href="http://web.archive.org/web/20230928191814/https://developers.googleblog.com/2023/08/makersuite-expands-adds-new-features-for-ai-makers.html" aria-label="MakerSuite is now available in 180 countries image" data-category="Homepage Trending News Card" data-label="MakerSuite is now available in 180 countries"> <img alt src="/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/makersuite.png"> </a> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-labels"> <span>Trending news</span> </div> <h3 class="hide-from-toc no-link" id="makersuite-is-now-available-in-180-countries" data-text=" MakerSuite is now available in 180 countries "> <a href="http://web.archive.org/web/20230928191814/https://developers.googleblog.com/2023/08/makersuite-expands-adds-new-features-for-ai-makers.html" data-category="Homepage Trending News Card" data-label="MakerSuite is now available in 180 countries"> MakerSuite is now available in 180 countries </a> </h3> <div class="devsite-landing-row-item-description-content"> Sign up now to prototype AI applications with the PaLM 2 language model. </div> <div class="devsite-landing-row-item-buttons"> <a href="http://web.archive.org/web/20230928191814/https://developers.googleblog.com/2023/08/makersuite-expands-adds-new-features-for-ai-makers.html" class="button button-primary" data-category="Homepage Trending News Card" data-label="MakerSuite is now available in 180 countries"> Learn more </a> </div> </div> </div> </div> </li> <li class="trending-carousel-slide"> <div class="trending-carousel-palm"> <div class="devsite-landing-row-item-media"> <figure class="devsite-landing-row-item-image"> <a href="http://web.archive.org/web/20230928191814/https://idx.dev/" aria-label="Explore the new, experimental Project IDX image" data-category="Homepage Trending News Card" data-label="Explore the new, experimental Project IDX"> <img alt src="/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/idx.png"> </a> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-labels"> <span>Trending news</span> </div> <h3 class="hide-from-toc no-link" id="explore-the-new,-experimental-project-idx" data-text=" Explore the new, experimental Project IDX "> <a href="http://web.archive.org/web/20230928191814/https://idx.dev/" data-category="Homepage Trending News Card" data-label="Explore the new, experimental Project IDX"> Explore the new, experimental Project IDX </a> </h3> <div class="devsite-landing-row-item-description-content"> An initiative to bring your full-stack, multiplatform app development workflow to the cloud. </div> <div class="devsite-landing-row-item-buttons"> <a href="http://web.archive.org/web/20230928191814/https://idx.dev/" class="button button-primary" data-category="Homepage Trending News Card" data-label="Explore the new, experimental Project IDX"> Learn more </a> </div> </div> </div> </div> </li> </ul> </devsite-carousel> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-50 devsite-landing-row-hero devsite-landing-row-no-image-background android-spotlight" header-position="top"> <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item" description-position="bottom"> <div class="devsite-landing-row-item-media devsite-landing-row-item-media-left "> <figure class="devsite-landing-row-item-image"> <a href="http://web.archive.org/web/20230928191814/https://developer.android.com/studio" aria-label="Android Studio Giraffe is now stable" data-category="Android Promo Banner" data-label="Android Studio Giraffe is now stable"> <img alt="" src="http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/focus/images/giraffe.png" srcset="http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/focus/images/giraffe_36.png 36w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/focus/images/giraffe_48.png 48w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/focus/images/giraffe_72.png 72w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/focus/images/giraffe_96.png 96w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/focus/images/giraffe_480.png 480w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/focus/images/giraffe_720.png 720w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/focus/images/giraffe_856.png 856w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/focus/images/giraffe_960.png 960w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/focus/images/giraffe_1440.png 1440w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/focus/images/giraffe_1920.png 1920w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/focus/images/giraffe_2880.png 2880w" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 708px" loading="lazy"> </a> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-labels"> <span class=" ">What's new in Android</span> </div> <h3 id="android-studio-giraffe-is-now-stable" data-text="Android Studio Giraffe is now stable" class="hide-from-toc no-link" tabindex="0"> <a href="http://web.archive.org/web/20230928191814/https://developer.android.com/studio" aria-label="Android Studio Giraffe is now stable" data-category="Android Promo Banner" data-label="Android Studio Giraffe is now stable"> Android Studio Giraffe is now stable </a> </h3> <div class="devsite-landing-row-item-description-content"> Featuring updates to Live Edit, Compose animation previews, a new Device Explorer, and more. </div> <div class="devsite-landing-row-item-buttons"> <a href="http://web.archive.org/web/20230928191814/https://developer.android.com/studio" class="button button-primary ">Download now</a> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-50 devsite-landing-row-hero devsite-landing-row-no-image-background dgc-showcase-row" background="/web/20230928191814im_/https://developers.google.com/white" header-position="top"> <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item" description-position="bottom"> <div class="devsite-landing-row-item-media devsite-landing-row-item-media-left "> <figure class="devsite-landing-row-item-image"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/events" aria-label="Find an event" data-category="Homepage Promo Banner" data-label="Find an event"> <img alt="" src="http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/explore-your-interests.jpg" srcset="http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/explore-your-interests_36.jpg 36w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/explore-your-interests_48.jpg 48w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/explore-your-interests_72.jpg 72w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/explore-your-interests_96.jpg 96w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/explore-your-interests_480.jpg 480w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/explore-your-interests_720.jpg 720w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/explore-your-interests_856.jpg 856w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/explore-your-interests_960.jpg 960w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/explore-your-interests_1440.jpg 1440w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/explore-your-interests_1920.jpg 1920w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/explore-your-interests_2880.jpg 2880w" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 708px" loading="lazy"> </a> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-labels"> <span class=" "><img alt src="/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/explore-interests-eyebrow.svg"></span> </div> <h3 id="find-an-event" data-text="Find an event" class="hide-from-toc no-link" tabindex="0"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/events" aria-label="Find an event" data-category="Homepage Promo Banner" data-label="Find an event"> Find an event </a> </h3> <div class="devsite-landing-row-item-description-content"> Grow your knowledge through online and in-person developer events. </div> <div class="devsite-landing-row-item-buttons"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/events" class="button " data-category="Homepage Promo Banner" data-label="Find an event">View events</a> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-50 devsite-landing-row-hero devsite-landing-row-no-image-background dgc-showcase-row" background="/web/20230928191814im_/https://developers.google.com/white" header-position="top"> <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item" description-position="bottom"> <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/learn" aria-label="Improve technical skills" data-category="Homepage Promo Banner" data-label="Improve technical skills"> <img alt="" src="http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/technical-skills.jpg" srcset="http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/technical-skills_36.jpg 36w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/technical-skills_48.jpg 48w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/technical-skills_72.jpg 72w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/technical-skills_96.jpg 96w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/technical-skills_480.jpg 480w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/technical-skills_720.jpg 720w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/technical-skills_856.jpg 856w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/technical-skills_960.jpg 960w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/technical-skills_1440.jpg 1440w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/technical-skills_1920.jpg 1920w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/technical-skills_2880.jpg 2880w" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 708px" loading="lazy"> </a> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-labels"> <span class=" "><img alt src="/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/technical-skills-eyebrow.svg"></span> </div> <h3 id="improve-technical-skills" data-text="Improve technical skills" class="hide-from-toc no-link" tabindex="0"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/learn" aria-label="Improve technical skills" data-category="Homepage Promo Banner" data-label="Improve technical skills"> Improve technical skills </a> </h3> <div class="devsite-landing-row-item-description-content"> Keep up with Google technology. Sharpen skills and master new ones. </div> <div class="devsite-landing-row-item-buttons"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/learn" class="button " data-label="Improve technical skills" data-category="Homepage Promo Banner">Start learning</a> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-50 devsite-landing-row-hero devsite-landing-row-no-image-background dgc-showcase-row" background="/web/20230928191814im_/https://developers.google.com/white" header-position="top"> <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item" description-position="bottom"> <div class="devsite-landing-row-item-media devsite-landing-row-item-media-left "> <figure class="devsite-landing-row-item-image"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/community" aria-label="Explore communities" data-category="Homepage Promo Banner" data-label="Join a community"> <img alt="" src="http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/find-community.png" srcset="http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/find-community_36.png 36w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/find-community_48.png 48w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/find-community_72.png 72w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/find-community_96.png 96w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/find-community_480.png 480w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/find-community_720.png 720w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/find-community_856.png 856w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/find-community_960.png 960w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/find-community_1440.png 1440w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/find-community_1920.png 1920w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/find-community_2880.png 2880w" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 708px" loading="lazy"> </a> </figure> </div> <div class="devsite-landing-row-item-description"> <div class="devsite-landing-row-item-body"> <div class="devsite-landing-row-item-labels"> <span class=" "><img alt src="/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/find-community-eyebrow.svg"></span> </div> <h3 id="join-a-community" data-text="Join a community" class="hide-from-toc no-link" tabindex="0"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/community" aria-label="Explore communities" data-category="Homepage Promo Banner" data-label="Join a community"> Join a community </a> </h3> <div class="devsite-landing-row-item-description-content"> Meet a diverse network, no matter where you are on your developer journey. </div> <div class="devsite-landing-row-item-buttons"> <a href="http://web.archive.org/web/20230928191814/https://developers.google.com/community" class="button " data-category="Homepage Promo Banner" data-label="Join a community">Explore communities</a> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-4-up devsite-landing-row-header-centered devsite-landing-row-large-headings devsite-landing-row-cards devsite-landing-row-no-image-background dgc-social-footer" background="/web/20230928191814im_/https://developers.google.com/white" header-position="top"> <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header"> <div class="devsite-landing-row-header-text"> <h2 id="follow-google-for-developers" data-text="Follow Google for Developers" tabindex="0"> Follow Google for Developers </h2> </div> </header> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item devsite-landing-row-item-no-media" description-position="bottom"> <div class="devsite-landing-row-item-description" icon-position="top"> <div class="devsite-landing-row-item-icon-container" size="medium"> <img class="devsite-landing-row-item-icon" alt="" src="http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/yt.svg" srcset="" sizes="64px" loading="lazy"> </div> <div class="devsite-landing-row-item-body"> <h3 id="youtube" data-text="YouTube" class="hide-from-toc no-link" tabindex="0"> YouTube </h3> <div class="devsite-landing-row-item-description-content"> <p>Subscribe to join a community of creative developers and learn the latest in Google technology.</p> </div> <div class="devsite-landing-row-item-buttons"> <a href="http://web.archive.org/web/20230928191814/https://www.youtube.com/user/GoogleDevelopers" class="button gc-analytics-event " data-label="YouTube, Learn more" data-category="Social Footer Card">Learn more</a> </div> </div> </div> </div> <div class="devsite-landing-row-item devsite-landing-row-item-no-media" description-position="bottom"> <div class="devsite-landing-row-item-description" icon-position="top"> <div class="devsite-landing-row-item-icon-container" size="medium"> <img class="devsite-landing-row-item-icon" alt="" src="http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/ig.webp" srcset="" sizes="64px" loading="lazy"> </div> <div class="devsite-landing-row-item-body"> <h3 id="instagram" data-text="Instagram" class="hide-from-toc no-link" tabindex="0"> Instagram </h3> <div class="devsite-landing-row-item-description-content"> <p>Follow and discover developer resources, community events, and inspirational stories.</p> </div> <div class="devsite-landing-row-item-buttons"> <a href="http://web.archive.org/web/20230928191814/https://www.instagram.com/googlefordevs/" class="button gc-analytics-event " data-label="Instagram, Learn more" data-category="Social Footer Card">Learn more</a> </div> </div> </div> </div> <div class="devsite-landing-row-item devsite-landing-row-item-no-media dgc-social-li" description-position="bottom"> <div class="devsite-landing-row-item-description" icon-position="top"> <div class="devsite-landing-row-item-icon-container" size="medium"> <img class="devsite-landing-row-item-icon" alt="" src="http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/li.png" srcset="http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/li_36.png 36w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/li_48.png 48w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/li_72.png 72w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/li_96.png 96w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/li_480.png 480w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/li_720.png 720w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/li_856.png 856w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/li_960.png 960w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/li_1440.png 1440w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/li_1920.png 1920w, http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/li_2880.png 2880w" sizes="64px" loading="lazy"> </div> <div class="devsite-landing-row-item-body"> <h3 id="linkedin" data-text="LinkedIn" class="hide-from-toc no-link" tabindex="0"> LinkedIn </h3> <div class="devsite-landing-row-item-description-content"> <p>Join a community of creative developers and learn how to use the latest in technology. </p> </div> <div class="devsite-landing-row-item-buttons"> <a href="http://web.archive.org/web/20230928191814/https://www.linkedin.com/showcase/googledevelopers/" class="button gc-analytics-event " data-label="LinkedIn, Learn more" data-category="Social Footer Card">Learn more</a> </div> </div> </div> </div> <div class="devsite-landing-row-item devsite-landing-row-item-no-media" description-position="bottom"> <div class="devsite-landing-row-item-description" icon-position="top"> <div class="devsite-landing-row-item-icon-container" size="medium"> <img class="devsite-landing-row-item-icon" alt="" src="http://web.archive.org/web/20230928191814im_/https://developers.google.com/static/homepage-assets/images/x.svg" srcset="" sizes="64px" loading="lazy"> </div> <div class="devsite-landing-row-item-body"> <h3 id="x" data-text="X" class="hide-from-toc no-link" tabindex="0"> X </h3> <div class="devsite-landing-row-item-description-content"> <p>Join the conversation to discover the latest developer tools, resources, events, and announcements.</p> </div> <div class="devsite-landing-row-item-buttons"> <a href="http://web.archive.org/web/20230928191814/https://twitter.com/googledevs" class="button gc-analytics-event " data-category="Social Footer Card" data-label="X, Learn more">Learn more</a> </div> </div> </div> </div> </div> </div> </section> <devsite-hats-survey class="nocontent" hats-id="5Djwt4Azw0iQ84LPiVd0QYQ4sHzc" listnr-id="5123748"></devsite-hats-survey> </div> </article> <devsite-notification> </devsite-notification> <div class="devsite-content-data"> <template class="devsite-thumb-rating-down-categories"> [{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Missing the information I need" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Too complicated / too many steps" },{ "type": "thumb-down", "id": "outOfDate", "label":"Out of date" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Samples / code issue" },{ "type": "thumb-down", "id": "otherDown", "label":"Other" }] </template> <template class="devsite-thumb-rating-up-categories"> [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Easy to understand" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Solved my problem" },{ "type": "thumb-up", "id": "otherUp", "label":"Other" }] </template> </div> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </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">Connect</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20230928191814/https://googledevelopers.blogspot.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="http://web.archive.org/web/20230928191814/https://www.instagram.com/googlefordevs/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)"> Instagram </a> </li> <li class="devsite-footer-linkbox-item"> <a href="http://web.archive.org/web/20230928191814/https://www.linkedin.com/showcase/googledevelopers/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> LinkedIn </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20230928191814/https://twitter.com/googledevs" 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/20230928191814/https://www.youtube.com/user/GoogleDevelopers" 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">Programs</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20230928191814/https://www.womentechmakers.com/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)"> Women Techmakers </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20230928191814/https://developers.google.com/community/gdg" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)"> Google Developer Groups </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20230928191814/https://developers.google.com/community/experts" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> Google Developer Experts </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20230928191814/https://developers.google.com/community/accelerators" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)"> Accelerators </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/web/20230928191814/https://developers.google.com/community/gdsc" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)"> Google Developer Student Clubs </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Developer consoles</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20230928191814/https://console.developers.google.com/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)"> Google API Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20230928191814/https://console.cloud.google.com/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)"> Google Cloud Platform Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20230928191814/https://play.google.com/apps/publish" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)"> Google Play Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20230928191814/https://console.firebase.google.com/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)"> Firebase Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20230928191814/https://console.actions.google.com/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)"> Actions on Google Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20230928191814/https://cast.google.com/publish" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)"> Cast SDK Developer Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//web.archive.org/web/20230928191814/https://chrome.google.com/webstore/developer/dashboard" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 7)"> Chrome Web Store Dashboard </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="http://web.archive.org/web/20230928191814/https://developers.google.com/" class="devsite-footer-sites-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Developers Link"> <picture> <source srcset="http://web.archive.org/web/20230928191814im_/https://www.gstatic.com/devrel-devsite/prod/v47c000584df8fd5ed12554bcabcc16cd4fd28aee940bdc8ae9e35cab77cbb7da/developers/images/lockup-google-for-developers-dark-theme.svg" media="(prefers-color-scheme: none)" class="devsite-dark-theme" loading="lazy" alt="Google Developers"> <img class="devsite-footer-sites-logo" src="http://web.archive.org/web/20230928191814im_/https://www.gstatic.com/devrel-devsite/prod/v47c000584df8fd5ed12554bcabcc16cd4fd28aee940bdc8ae9e35cab77cbb7da/developers/images/lockup-google-for-developers.svg" loading="lazy" alt="Google Developers"> </picture> </a> <ul class="devsite-footer-sites-list"> <li class="devsite-footer-sites-item"> <a href="//web.archive.org/web/20230928191814/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/20230928191814/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/20230928191814/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/20230928191814/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/20230928191814/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/20230928191814/https://developers.google.com/terms/site-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/20230928191814/https://policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link"> Privacy </a> </li> <li class="devsite-footer-utility-item devsite-footer-utility-button"> <span class="devsite-footer-utility-description">Sign up for the Google for Developers newsletter</span> <a class="devsite-footer-utility-link gc-analytics-event" href="/web/20230928191814/https://developers.google.com/newsletter/subscribe" data-category="Site-Wide Custom Events" data-label="Footer Subscribe link"> Subscribe </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en">English</a> </li> <li role="presentation"> <a role="menuitem" lang="id">Bahasa Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="de">Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es">Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419">Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr">Français</a> </li> <li role="presentation"> <a role="menuitem" lang="it">Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl">Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br">Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi">Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr">Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru">Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he">עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar">العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa">فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi">हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn">বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th">ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn">中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw">中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja">日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko">한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar> </devsite-snackbar> <devsite-tooltip></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics analytics-iframe enable-ga4> <script type="application/json" analytics>[{"dimensions": {"dimension5": "en", "dimension11": false, "dimension4": "Google for Developers", "dimension6": "en", "dimension1": "Signed out", "dimension3": false}, "gaid": "UA-24532603-1", "metrics": {"ratings_value": "metric1", "ratings_count": "metric2"}}, {"dimensions": {"dimension0": "39300012,39300251,39300490,39300192"}, "gaid": "", "metrics": {}}]</script> <script type="application/json" tag-management gtm>{"ga4": ["G-272J68FCRF", "G-P65P8J8YWQ"], "ga4p": ["G-272J68FCRF"], "gtm": [], "parameters": {"internalUser": "False", "language": {"machineTranslated": "False", "requested": "en", "served": "en"}, "pageType": "article", "projectName": "Google for Developers", "signedIn": "False", "tenant": "developers", "recommendations": {"sourcePage": "", "sourceType": 0, "sourceRank": 0, "sourceIdenticalDescriptions": 0, "sourceTitleWords": 0, "sourceDescriptionWords": 0, "experiment": ""}, "experiment": {"ids": "39300012,39300463,39300427,39300484,39300506,39300251,39300490,39300192"}}, "tags": []}</script> </devsite-analytics> <devsite-badger></devsite-badger> <script nonce="b6B+KjxWT29I22a8kFoIgBw5uj6D8K"> (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', 'http://web.archive.org/web/20230928191814/https://www.gstatic.com/devrel-devsite/prod/v47c000584df8fd5ed12554bcabcc16cd4fd28aee940bdc8ae9e35cab77cbb7da/developers/js/app_loader.js', '[1,"en",null,"/js/devsite_app_module.js","http://web.archive.org/web/20230928191814/https://www.gstatic.com/devrel-devsite/prod/v47c000584df8fd5ed12554bcabcc16cd4fd28aee940bdc8ae9e35cab77cbb7da","http://web.archive.org/web/20230928191814/https://www.gstatic.com/devrel-devsite/prod/v47c000584df8fd5ed12554bcabcc16cd4fd28aee940bdc8ae9e35cab77cbb7da/developers","http://web.archive.org/web/20230928191814/https://developers-dot-devsite-v2-prod.appspot.com",1,null,["/_pwa/developers/manifest.json","http://web.archive.org/web/20230928191814/https://www.gstatic.com/devrel-devsite/prod/v47c000584df8fd5ed12554bcabcc16cd4fd28aee940bdc8ae9e35cab77cbb7da/images/video-placeholder.svg","http://web.archive.org/web/20230928191814/https://www.gstatic.com/devrel-devsite/prod/v47c000584df8fd5ed12554bcabcc16cd4fd28aee940bdc8ae9e35cab77cbb7da/developers/images/favicon-new.png","http://web.archive.org/web/20230928191814/https://www.gstatic.com/devrel-devsite/prod/v47c000584df8fd5ed12554bcabcc16cd4fd28aee940bdc8ae9e35cab77cbb7da/developers/images/lockup-new.svg","http://web.archive.org/web/20230928191814/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,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,111,112,113,115,116,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,144,147,148,149,150,151,152,154,155,156,157,158,159,161,163,164,165,168,169,170,172,173,179,180,182,183,186,190,191,193,196],"AIzaSyAP-jjEJBzmIyKR4F-3XITp8yM9T1gEEI8","AIzaSyB6xiKGDR5O3Ak2okS4rLkauxGUG7XP0hg","developers.google.com","AIzaSyAQk0fBONSGUqCNznf6Krs82Ap1-NV6J4o","AIzaSyCCxcqdrZ_7QMeLCRY20bh_SXdAYqy70KY",null,null,null,["MiscFeatureFlags__emergency_css","Cloud__enable_cloudx_ping","BookNav__enable_book_nav_filtering","Significatio__enable_by_tenant","Search__enable_devsite_serp","Cloud__enable_cloudx_experiment_ids","Significatio__enable_experiment_id_caching","Concierge__enable_pushui","BookNav__enable_collapsible_book_nav","Profiles__enable_developer_profiles_dashboard_recommendations","Badges__enable_delete_badges","ContentExcellence__enable_verified_date","Cloud__enable_cloud_facet_chat","Profiles__enable_developer_profiles_callout","Cloud__enable_free_trial_server_call","Profiles__require_profile_eligibility_for_signin","Search__enable_faceted_search","Experiments__reqs_query_experiments","Localization__enable_locale_redirects","MiscFeatureFlags__enable_tls_version_for_gaia_calls","Profiles__enable_searchable_interests","Analytics__enable_ga4_analytics","AuthorPageInsights__enable_author_page_insights","Profiles__enable_profile_collections","Significatio__enable_footprints","MiscFeatureFlags__developers_footer_dark_image","Badges__enable_drag_and_drop_badges","Search__enable_dynamic_content_confidential_banner","OpenInReplit__enable_replit","ContentExcellence__enable_googler_button","SignIn__enable_auto_signin_oauth","Cloud__enable_cloud_shell","Profiles__enable_profile_communities","MiscFeatureFlags__developers_footer_image","Experiments__enable_experiments","Profiles__enable_page_saving","Badges__enable_hide_badges","Search__enable_acl_suggestions","MiscFeatureFlags__content_publisher_push_queue","Concierge__enable_api_explorer","Profiles__enable_profile_notifications_ui","Search__enable_page_map","MiscFeatureFlags__devpanel_url","Profiles__enable_suggested_interests","Cloud__enable_cloud_dlp_service","Concierge__enable_concierge","Profiles__enable_developer_profiles_interests","Search__enable_suggestions_from_borg","Cloud__enable_cloud_shell_fte_user_flow","Profiles__enable_public_developer_profiles"],null,null,"AIzaSyBLEMok-5suZ67qRPzx0qUtbnLmyT_kCVE","http://web.archive.org/web/20230928191814/https://developerscontentserving-pa.clients6.google.com","AIzaSyCM4QpTRSqP5qI4Dvjt4OAScIN8sOUlO-k","http://web.archive.org/web/20230928191814/https://developerscontentsearch-pa.clients6.google.com",1]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html><!-- FILE ARCHIVED ON 19:18:14 Sep 28, 2023 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 11:18:26 Nov 25, 2024. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 1.553 exclusion.robots: 0.036 exclusion.robots.policy: 0.021 esindex: 0.013 cdx.remote: 99.638 LoadShardBlock: 423.689 (6) PetaboxLoader3.resolve: 285.966 (3) PetaboxLoader3.datanode: 133.952 (7) load_resource: 180.454 -->