CINXE.COM
VDP Guide | Google for Developers
<!doctype html> <html lang="en" dir="ltr"> <head> <meta name="google-signin-client-id" content="721724668570-nbkv1cfusk7kk4eni4pjvepaus73b13t.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="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="/_pwa/developers/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.googleapis.com" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/css/app.css"> <link rel="shortcut icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/favicon-new.png"> <link rel="apple-touch-icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/touchicon-180-new.png"><link rel="canonical" href="https://developers.google.com/android/play-protect/starting-a-vdp"><link rel="search" type="application/opensearchdescription+xml" title="Google for Developers" href="https://developers.google.com/s/opensearch.xml"> <link rel="alternate" hreflang="en" href="https://developers.google.com/android/play-protect/starting-a-vdp" /><link rel="alternate" hreflang="x-default" href="https://developers.google.com/android/play-protect/starting-a-vdp" /><link rel="alternate" hreflang="ar" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=ar" /><link rel="alternate" hreflang="bn" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=bn" /><link rel="alternate" hreflang="zh-Hans" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=zh-tw" /><link rel="alternate" hreflang="fa" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=fa" /><link rel="alternate" hreflang="fr" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=fr" /><link rel="alternate" hreflang="de" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=de" /><link rel="alternate" hreflang="he" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=he" /><link rel="alternate" hreflang="hi" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=hi" /><link rel="alternate" hreflang="id" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=id" /><link rel="alternate" hreflang="it" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=it" /><link rel="alternate" hreflang="ja" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=ja" /><link rel="alternate" hreflang="ko" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=ko" /><link rel="alternate" hreflang="pl" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=pl" /><link rel="alternate" hreflang="pt-BR" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=pt-br" /><link rel="alternate" hreflang="ru" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=ru" /><link rel="alternate" hreflang="es-419" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=es-419" /><link rel="alternate" hreflang="th" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=th" /><link rel="alternate" hreflang="tr" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=tr" /><link rel="alternate" hreflang="vi" href="https://developers.google.com/android/play-protect/starting-a-vdp?hl=vi" /><title>VDP Guide | Google for Developers</title> <meta property="og:title" content="VDP Guide | Google for Developers"><meta name="description" content="How to start planning, creating, and launching a vulnerability disclosure program"> <meta property="og:description" content="How to start planning, creating, and launching a vulnerability disclosure program"><meta property="og:url" content="https://developers.google.com/android/play-protect/starting-a-vdp"><meta property="og:image" content="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/opengraph/white.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="675"><meta property="og:locale" content="en"><meta name="twitter:card" content="summary_large_image"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "" } </script> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="landing" theme="white" type="article" layout="full" concierge='hide' pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner"> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> <a href="https://developers.google.com/android/play-protect/starting-a-vdp" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Upper Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Vulnerability Disclosure Program" > <h1 class="devsite-product-name">Vulnerability Disclosure Program</h1> </a> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> <devsite-tabs class="upper-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Upper tabs"> <tab > <a href="https://developers.google.com/android/play-protect" track-metadata-eventdetail="https://developers.google.com/android/play-protect" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - google play protect home" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Google Play Protect Home" track-name="google play protect home" > Google Play Protect Home </a> </tab> <tab class="devsite-active"> <a href="https://developers.google.com/android/play-protect/starting-a-vdp" track-metadata-eventdetail="https://developers.google.com/android/play-protect/starting-a-vdp" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - vdp home" track-metadata-module="primary nav" aria-label="VDP Home, selected" data-category="Site-Wide Custom Events" data-label="Tab: VDP Home" track-name="vdp home" > VDP Home </a> </tab> <tab > <a href="https://developers.google.com/android/play-protect/starting-a-vdp/docs" track-metadata-eventdetail="https://developers.google.com/android/play-protect/starting-a-vdp/docs" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - get started" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Get Started" track-name="get started" > Get Started </a> </tab> </nav> </devsite-tabs> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="VDP Guide" tenant-name="Google for Developers" project-scope="/android/play-protect/starting-a-vdp" url-scoped="https://developers.google.com/s/results/android/play-protect/starting-a-vdp" disabled > <form class="devsite-search-form" action="https://developers.google.com/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value="" disabled> <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >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="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> <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 class="devsite-header-billboard"> <h1 class="euclidFont" id="starting-a-vulnerability-disclosure-program" data-text="Starting A Vulnerability Disclosure Program" tabindex="-1">Starting A Vulnerability Disclosure Program</h1> </div> <div class="devsite-header-billboard-search"> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="" tenant-name="Google for Developers" project-scope="/android/play-protect/starting-a-vdp" url-scoped="https://developers.google.com/s/results/android/play-protect/starting-a-vdp" > <form class="devsite-search-form" action="https://developers.google.com/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value="" > <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars hidden> <div class="devsite-book-nav-filter" hidden> <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> <a href="https://developers.google.com/android/play-protect/starting-a-vdp" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Upper Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Vulnerability Disclosure Program" > Vulnerability Disclosure Program </a> </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="/android/play-protect" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Google Play Protect Home" track-name="google play protect home" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Play Protect Home" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Play Protect Home </span> </a> </li> <li class="devsite-nav-item"> <a href="/android/play-protect/starting-a-vdp" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: VDP Home" track-name="vdp home" data-category="Site-Wide Custom Events" data-label="Responsive Tab: VDP Home" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > VDP Home </span> </a> </li> <li class="devsite-nav-item"> <a href="/android/play-protect/starting-a-vdp/docs" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Get Started" track-name="get started" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Get Started" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Get Started </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" > <devsite-content> <article class="devsite-article"><style> /* Styles inlined from /android/play-protect/custom/gppStyle.css */ @font-face { font-family: Euclid; src: url(/android/play-protect/custom/euclid.woff); } @font-face { font-family: andBlack; src: url(/android/play-protect/custom/and_black.woff); } @keyframes play-float { 0% { transform: translatey(-10px); } 50% { transform: translatey(-30px); } 100% { transform: translatey(-10px); } } .heroTop { /* App Defense Alliance Index */ margin-top: 50px; font-family: andBlack; font-size: 18px; margin-right: 40px; margin-left: 40px; } img { margin-left: auto; margin-right: auto; display: block; } .grid-container { display: grid; grid-template-columns: auto auto; padding: 10px; grid-gap: 10px; } .grid-item { padding: 10px; background-color: #F1F3F4; text-align: center; } .phatitle { background-color: #D2E3FC; border-radius: 10px; padding: 5px 5px 10px 10px; margin-top: 30px; margin-bottom: 30px; filter: drop-shadow(5px 5px 5px #9AA0A6); } .box { width: 900px; padding-top: 5px; border-width: 1px; padding-left: 3px; padding-bottom: 10px; margin: auto; word-wrap: break-word; } .gpp-partner-description { /* App Defense Alliance Index */ padding: 0px 10px 0px 0px; font-size: 18px; } .gpp-billboard { /* App Defense Alliance Index */ font-family: Euclid; font-size: 350%; z-index: 1; } .se-billboard { /* App Defense Alliance Index */ font-size: 350%; z-index: 1; } .readyse-billboard { /* App Defense Alliance Index */ font-family: andBlack; font-size: 350%; z-index: 1; } .gpp-partners-header { /* App Defense Alliance Index */ font-family: Euclid; font-size: 150%; } /* ********* Animations ******** */ .container { width: 100%; height: 100%; display: flex; flex-direction: column; justify-content: center; align-items: center; } .adaContainer { /* App Defense Alliance Index */ width: 100%; height: 100%; display: flex; flex-direction: column; justify-content: center; align-items: center; position: relative; margin-top: 50px; } .play-play { -webkit-filter: drop-shadow(5px 5px 5px #9AA0A6); filter: drop-shadow(5px 5px 5px #9AA0A6); overflow: hidden; transform: translatey(0px); animation: play-float 6s ease-in-out infinite; } .gppparallax { /* The image used */ background-image: url('/android/play-protect/images/hero-poster.jpg'); border-radius: 5px; /* Set a specific height */ min-height: 20px; margin: 0 0 15px 0; /* Create the parallax scrolling effect */ background-attachment: fixed; background-position: center; background-repeat: no-repeat; background-size: cover; } /* ******* Linear Roll or Spin ******* */ @-webkit-keyframes shift_linearRoll { 0% { -ms-transform: scale(1, 1) rotate(0deg) translate(0px, 0px); -webkit-transform: scale(1, 1) rotate(0deg) translate(0px, 0px); transform: scale(1, 1) rotate(0deg) translate(0px, 0px); } 100% { -ms-transform: scale(1, 1) rotate(360deg) translate(0px, 0px); -webkit-transform: scale(1, 1) rotate(360deg) translate(0px, 0px); transform: scale(1, 1) rotate(360deg) translate(0px, 0px); } } @keyframes shift_linearRoll { 0% { -ms-transform: scale(1, 1) rotate(0deg) translate(0px, 0px); -webkit-transform: scale(1, 1) rotate(0deg) translate(0px, 0px); transform: scale(1, 1) rotate(0deg) translate(0px, 0px); } 100% { -ms-transform: scale(1, 1) rotate(360deg) translate(0px, 0px); -webkit-transform: scale(1, 1) rotate(360deg) translate(0px, 0px); transform: scale(1, 1) rotate(360deg) translate(0px, 0px); } } .gppRoll { -webkit-animation-delay: 0s; -webkit-animation-duration: 2s; -webkit-animation-name: shift_linearRoll; -webkit-animation-fill-mode: forwards; animation-delay: 0s; animation-duration: 2s; animation-name: shift_linearRoll; animation-fill-mode: forwards; animation: shift_linearRoll 6s infinite; position: relative; } .seroll { -webkit-animation-delay: 2s; -webkit-animation-duration: 3s; -webkit-animation-name: shift_linearRoll; -webkit-animation-fill-mode: forwards; animation-delay: 2s; animation-duration: 3s; animation-name: shift_linearRoll; animation-fill-mode: forwards; animation: shift_linearRoll 5s infinite; position: relative; } /* ******** On-load fade into view from 0% to 100% ******** */ @-webkit-keyframes shift_enterZoom { 0% { -ms-transform: scale(0, 0); -webkit-transform: scale(0, 0); transform: scale(0, 0); opacity: 0; } 100% { -ms-transform: scale(1, 1); -webkit-transform: scale(1, 1); transform: scale(1, 1); opacity: 1; } } .gppEnterZoom { -webkit-animation-delay: 0s; -webkit-animation-duration: 2s; -webkit-animation-name: shift_enterZoom; -webkit-animation-fill-mode: forwards; animation-delay: 0s; animation-duration: 2s; animation-name: shift_enterZoom; animation-fill-mode: forwards; position: absolute; } .euclidFont { font-family: "Euclid" !important; } .vuln-grey { background-color: #212121 !important; color: #fff !important; box-shadow: 10px 10px 5px rgba(48, 188, 255, 0.2) !important; } [background=blue-grey-dark] { background-color: #212121 !important; } /* ******* Hacker Hints Custom Notice ******* */ aside, aside code, aside :link, aside :visited, .hacknote, .hacknote code, .hacknote :link, .hacknote :visited, .special, .special code, .special :link, .special :visited { background: #212121; color: #fff; } aside::before, .hacknote::before, .special::before { content: "code"; } /* **** cari **** */ *, *:before, *:after { box-sizing: border-box; } .testimonials-section { background: #fff; height: 400px; position: relative; overflow: hidden; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-flex-flow: row nowrap; -ms-flex-flow: row nowrap; flex-flow: row nowrap; -webkit-box-align: end; -webkit-align-items: flex-end; -ms-flex-align: end; align-items: flex-end; -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } .slider__nav { width: 12px; height: 12px; margin: 900px 12px; border-radius: 50%; z-index: 10; outline: 6px solid #ccc; outline-offset: -6px; box-shadow: 0 0 0 0 #333, 0 0 0 0 rgba(51, 51, 51, 0); cursor: pointer; -webkit-appearance: none; -moz-appearance: none; appearance: none; -webkit-backface-visibility: hidden; backface-visibility: hidden; } .slider__nav:checked { -webkit-animation: check 0.4s linear forwards; animation: check 0.4s linear forwards; } .slider__nav:checked:nth-of-type(1) ~ .slider__inner { left: 0%; } .slider__nav:checked:nth-of-type(2) ~ .slider__inner { left: -100%; } .slider__nav:checked:nth-of-type(3) ~ .slider__inner { left: -200%; } .slider__nav:checked:nth-of-type(4) ~ .slider__inner { left: -300%; } .slider__nav:checked:nth-of-type(5) ~ .slider__inner { left: -400%; } .slider__inner { position: absolute; top: 18px; left: 0; width: 500%; height: auto; -webkit-transition: left 0.4s; transition: left 0.4s; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-flex-flow: row nowrap; -ms-flex-flow: row nowrap; flex-flow: row nowrap; } .slider__contents { height: 100%; text-align: center; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; -webkit-flex-flow: column nowrap; -ms-flex-flow: column nowrap; flex-flow: column nowrap; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } .slider__caption { font-size: 12px; color: #111; opacity: .5; font-family: 'Roboto'; font-weight: bold; } .slider__txt { font-size: 12px; font-weight: bold; font-family: 'Roboto'; line-height: 1.7; color: #f86734; max-width: 750px; } quote { font-weight: bold; font-size: 100px; color: #000; margin-bottom: 0; margin-top: 8px; } @-webkit-keyframes check { 50% { outline-color: #333; box-shadow: 0 0 0 12px #333, 0 0 0 36px rgba(51, 51, 51, 0.2); } 100% { outline-color: #333; box-shadow: 0 0 0 0 #333, 0 0 0 0 rgba(51, 51, 51, 0); } } @keyframes check { 50% { outline-color: #333; box-shadow: 0 0 0 12px #333, 0 0 0 36px rgba(51, 51, 51, 0.2); } 100% { outline-color: #333; box-shadow: 0 0 0 0 #333, 0 0 0 0 rgba(51, 51, 51, 0); } } </style> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://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="" > Home </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="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> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/android/play-protect/starting-a-vdp" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail="Vulnerability Disclosure Program" > VDP Guide </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 devsite-no-page-title"> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-67 devsite-landing-row-large-headings devsite-landing-row-no-image-background" background="blue-grey-dark" 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"> <picture> <img alt="" src="https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpHeroAnimation.gif" srcset="https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpHeroAnimation.gif" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 464px" fetchpriority="high"> </picture> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="vulnerability-disclosure-program-vdp" data-text="Vulnerability Disclosure Program (VDP)" class="hide-from-toc no-link" tabindex="0"> Vulnerability Disclosure Program (VDP) </h3> <div class="devsite-landing-row-item-description-content"> No organization has perfect security. Security and privacy are tantamount to user trust in your app, but breaches occur daily. There's never enough time or resources to secure everything. What do you do? Imagine if you could tap into the knowledge of hundreds of security researchers, all helping you identify vulnerabilities in your apps. You could find and fix vulnerabilities as they are introduced into production, helping reduce the risk of security incidents. You can also use this data to find root causes of vulnerabilities and make overarching improvements to your security program.<br /> <p>How do you know if you're actually ready to start a vulnerability disclosure program?</p> <p>Our assessment section will help you determine if you have everything you need to get started and help you identify and address missing pieces.</p> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-3-up devsite-landing-row-cards devsite-landing-row-no-image-background" background="blue-grey-dark" header-position="top" > <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header" > <div class="devsite-landing-row-header-text"> <div class="devsite-landing-row-description"> <h2 class="euclidFont" id="get-started" data-text="Get started" tabindex="-1">Get started</h2> </div> </div> </header> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item vuln-grey" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <a href="https://developers.google.com/android/play-protect/starting-a-vdp/docs/assessment"> <picture> <img alt="" src="https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpAssessment.png" srcset="https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpAssessment_36.png 36w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpAssessment_48.png 48w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpAssessment_72.png 72w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpAssessment_96.png 96w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpAssessment_480.png 480w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpAssessment_720.png 720w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpAssessment_856.png 856w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpAssessment_960.png 960w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpAssessment_1440.png 1440w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpAssessment_1920.png 1920w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpAssessment_2880.png 2880w" sizes="(max-width: 840px) 50vw, 464px" loading="lazy" > </picture> </a> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="assessment" data-text="Assessment" class="hide-from-toc no-link" tabindex="0"> <a href="https://developers.google.com/android/play-protect/starting-a-vdp/docs/assessment"> Assessment </a> </h3> <div class="devsite-landing-row-item-description-content"> <p style="color: #fff">It is important to assess your current development team, processes, and bandwidth to ensure your company has the proper infrastructure in place to launch a successful vulnerability disclosure program (VDP). Our assessment guide outlines some of the most important aspects to consider before planning to launch a VDP.</p> </div> <div class="devsite-landing-row-item-buttons"> <a href="https://developers.google.com/android/play-protect/starting-a-vdp/docs/assessment" class="button " >Assessment</a> </div> </div> </div> </div> <div class="devsite-landing-row-item vuln-grey" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <a href="https://developers.google.com/android/play-protect/starting-a-vdp/docs/preparation"> <picture> <img alt="" src="https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpPreparation.png" srcset="https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpPreparation_36.png 36w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpPreparation_48.png 48w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpPreparation_72.png 72w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpPreparation_96.png 96w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpPreparation_480.png 480w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpPreparation_720.png 720w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpPreparation_856.png 856w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpPreparation_960.png 960w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpPreparation_1440.png 1440w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpPreparation_1920.png 1920w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpPreparation_2880.png 2880w" sizes="(max-width: 840px) 50vw, 464px" loading="lazy" > </picture> </a> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="preparation" data-text="Preparation" class="hide-from-toc no-link" tabindex="0"> <a href="https://developers.google.com/android/play-protect/starting-a-vdp/docs/preparation"> Preparation </a> </h3> <div class="devsite-landing-row-item-description-content"> <p style="color: #fff">It is important to assess your current development team, processes, and bandwidth to ensure your company has the proper infrastructure in place to launch a successful vulnerability disclosure program (VDP). Our assessment guide outlines some of the most important aspects to consider before planning to launch a VDP.</p> </div> <div class="devsite-landing-row-item-buttons"> <a href="https://developers.google.com/android/play-protect/starting-a-vdp/docs/preparation" class="button " >Preparation</a> </div> </div> </div> </div> <div class="devsite-landing-row-item vuln-grey" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <a href="https://developers.google.com/android/play-protect/starting-a-vdp/docs/stakeholder-buy-in"> <picture> <img alt="" src="https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpStakeholders.png" srcset="https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpStakeholders_36.png 36w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpStakeholders_48.png 48w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpStakeholders_72.png 72w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpStakeholders_96.png 96w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpStakeholders_480.png 480w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpStakeholders_720.png 720w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpStakeholders_856.png 856w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpStakeholders_960.png 960w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpStakeholders_1440.png 1440w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpStakeholders_1920.png 1920w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpStakeholders_2880.png 2880w" sizes="(max-width: 840px) 50vw, 464px" loading="lazy" > </picture> </a> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="stakeholder-buy-in" data-text="Stakeholder buy-in" class="hide-from-toc no-link" tabindex="0"> <a href="https://developers.google.com/android/play-protect/starting-a-vdp/docs/stakeholder-buy-in"> Stakeholder buy-in </a> </h3> <div class="devsite-landing-row-item-description-content"> <p style="color: #fff">You can be technically prepared for starting a VDP, but you still need organizational buy-in for your program to be successful. The following sections address how to achieve buy-in from various key stakeholders necessary to start and run your VDP.</p> </div> <div class="devsite-landing-row-item-buttons"> <a href="https://developers.google.com/android/play-protect/starting-a-vdp/docs/stakeholder-buy-in" class="button " >Stakeholder Buy-in</a> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-3-up devsite-landing-row-cards devsite-landing-row-no-image-background" background="blue-grey-dark" header-position="top" > <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item vuln-grey" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <a href="https://developers.google.com/android/play-protect/starting-a-vdp/docs/creating-your-vdp"> <picture> <img alt="" src="https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpCreatingVdp.png" srcset="https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpCreatingVdp_36.png 36w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpCreatingVdp_48.png 48w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpCreatingVdp_72.png 72w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpCreatingVdp_96.png 96w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpCreatingVdp_480.png 480w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpCreatingVdp_720.png 720w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpCreatingVdp_856.png 856w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpCreatingVdp_960.png 960w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpCreatingVdp_1440.png 1440w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpCreatingVdp_1920.png 1920w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpCreatingVdp_2880.png 2880w" sizes="(max-width: 840px) 50vw, 464px" loading="lazy" > </picture> </a> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="creating-your-vdp" data-text="Creating Your VDP" class="hide-from-toc no-link" tabindex="0"> <a href="https://developers.google.com/android/play-protect/starting-a-vdp/docs/creating-your-vdp"> Creating Your VDP </a> </h3> <div class="devsite-landing-row-item-description-content"> <p style="color: #fff">We’ve covered assessment and preparation of security best practices to prepare for running a VDP, as well as achieving organizational buy-in on the idea. Now, we’ll discuss how to create and set up your VDP, including defining your program policy, and ensuring you have the resources and processes necessary to launch and run your program.</p> </div> <div class="devsite-landing-row-item-buttons"> <a href="https://developers.google.com/android/play-protect/starting-a-vdp/docs/creating-your-vdp" class="button " >Creating Your VDP</a> </div> </div> </div> </div> <div class="devsite-landing-row-item vuln-grey" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <a href="https://developers.google.com/android/play-protect/starting-a-vdp/docs/launching-your-vdp"> <picture> <img alt="" src="https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpLaunchingVdp.png" srcset="https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpLaunchingVdp_36.png 36w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpLaunchingVdp_48.png 48w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpLaunchingVdp_72.png 72w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpLaunchingVdp_96.png 96w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpLaunchingVdp_480.png 480w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpLaunchingVdp_720.png 720w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpLaunchingVdp_856.png 856w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpLaunchingVdp_960.png 960w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpLaunchingVdp_1440.png 1440w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpLaunchingVdp_1920.png 1920w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpLaunchingVdp_2880.png 2880w" sizes="(max-width: 840px) 50vw, 464px" loading="lazy" > </picture> </a> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="launching-your-vdp" data-text="Launching Your VDP" class="hide-from-toc no-link" tabindex="0"> <a href="https://developers.google.com/android/play-protect/starting-a-vdp/docs/launching-your-vdp"> Launching Your VDP </a> </h3> <div class="devsite-landing-row-item-description-content"> <p style="color: #fff">You’ve done a lot of work up to this point to identify and address gaps in your security program, get buy-in from your organization, allocate resources to help you run your program, and built a program policy and defined means of receiving vulnerability reports. It’s time to launch your VDP.</p> </div> <div class="devsite-landing-row-item-buttons"> <a href="https://developers.google.com/android/play-protect/starting-a-vdp/docs/launching-your-vdp" class="button " >Launching Your VDP</a> </div> </div> </div> </div> <div class="devsite-landing-row-item vuln-grey" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <a href="https://playacademy.exceedlms.com/student/path/27914-vulnerability-disclosure-program-vdp"> <picture> <img alt="" src="https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpRewardsPrograms.png" srcset="https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpRewardsPrograms_36.png 36w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpRewardsPrograms_48.png 48w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpRewardsPrograms_72.png 72w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpRewardsPrograms_96.png 96w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpRewardsPrograms_480.png 480w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpRewardsPrograms_720.png 720w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpRewardsPrograms_856.png 856w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpRewardsPrograms_960.png 960w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpRewardsPrograms_1440.png 1440w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpRewardsPrograms_1920.png 1920w,https://developers.google.com/static/android/play-protect/starting-a-vdp/images/vdpRewardsPrograms_2880.png 2880w" sizes="(max-width: 840px) 50vw, 464px" loading="lazy" > </picture> </a> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="play-academy" data-text="Play Academy" class="hide-from-toc no-link" tabindex="0"> <a href="https://playacademy.exceedlms.com/student/path/27914-vulnerability-disclosure-program-vdp"> Play Academy </a> </h3> <div class="devsite-landing-row-item-description-content"> <p style="color: #fff">Need more help? Check out the Play Academy's interactive course. The online course supplements this content with interactive quizes, projects, and videos.</p> </div> <div class="devsite-landing-row-item-buttons"> <a href="https://playacademy.exceedlms.com/student/path/27914-vulnerability-disclosure-program-vdp" class="button " >Go to Play Academy</a> </div> </div> </div> </div> </div> </div> </section> </div> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-notification > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-content-data-template"> [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],[],[],[]] </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="//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="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="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="//twitter.com/googledevs" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > X (Twitter) </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//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="//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="/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="/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="/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="/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="//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="//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="//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="//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="//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="//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="//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> <li class="devsite-footer-linkbox-item"> <a href="//console.home.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 8)" > Google Home Developer Console </a> </li> </ul> </li> </ul> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-sites" aria-label="Other Google Developers websites"> <a href="https://developers.google.com/" class="devsite-footer-sites-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Developers Link"> <picture> <img class="devsite-footer-sites-logo" src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/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="//developer.android.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Android Link" > Android </a> </li> <li class="devsite-footer-sites-item"> <a href="//developer.chrome.com/home" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Chrome Link" > Chrome </a> </li> <li class="devsite-footer-sites-item"> <a href="//firebase.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Firebase Link" > Firebase </a> </li> <li class="devsite-footer-sites-item"> <a href="//cloud.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Cloud Platform Link" > Google Cloud Platform </a> </li> <li class="devsite-footer-sites-item"> <a href="//ai.google.dev/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google AI Link" > Google AI </a> </li> <li class="devsite-footer-sites-item"> <a href="/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="/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="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> <li class="devsite-footer-utility-item devsite-footer-utility-button"> <span class="devsite-footer-utility-description">Sign up for the Google for Developers newsletter</span> <a class="devsite-footer-utility-link gc-analytics-event" href="/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="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="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> <devsite-concierge data-info-panel data-ai-panel data-api-explorer-panel > </devsite-concierge> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip ></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[{"dimensions": {"dimension4": "VDP Guide", "dimension3": false, "dimension1": "Signed out", "dimension11": false, "dimension6": "en", "dimension5": "en"}, "gaid": "UA-24532603-1", "metrics": {"ratings_count": "metric2", "ratings_value": "metric1"}, "purpose": 1}]</script> <script type="application/json" tag-management>{"at": "True", "ga4": [{"id": "G-272J68FCRF", "purpose": 1}], "ga4p": [{"id": "G-272J68FCRF", "purpose": 1}], "gtm": [], "parameters": {"internalUser": "False", "language": {"machineTranslated": "False", "requested": "en", "served": "en"}, "pageType": "article", "projectName": "VDP Guide", "signedIn": "False", "tenant": "developers", "recommendations": {"sourcePage": "", "sourceType": 0, "sourceRank": 0, "sourceIdenticalDescriptions": 0, "sourceTitleWords": 0, "sourceDescriptionWords": 0, "experiment": ""}, "experiment": {"ids": ""}}}</script> </devsite-analytics> <devsite-badger></devsite-badger> <script nonce="pZ1mSJ+6a8laQDxyWK9PIHvwII0cYX"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/js/app_loader.js', '[1,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers","https://developers-dot-devsite-v2-prod.appspot.com",1,null,["/_pwa/developers/manifest.json","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/favicon-new.png","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,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,116,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyAP-jjEJBzmIyKR4F-3XITp8yM9T1gEEI8","AIzaSyB6xiKGDR5O3Ak2okS4rLkauxGUG7XP0hg","developers.google.com","AIzaSyAQk0fBONSGUqCNznf6Krs82Ap1-NV6J4o","AIzaSyCCxcqdrZ_7QMeLCRY20bh_SXdAYqy70KY",null,null,null,["Search__enable_ai_search_summaries_restricted","Concierge__enable_concierge","Search__enable_ai_eligibility_checks","Analytics__enable_clearcut_logging","Profiles__enable_profile_collections","Cloud__enable_cloud_shell","MiscFeatureFlags__enable_variable_operator","Cloud__enable_cloudx_experiment_ids","Profiles__enable_developer_profiles_callout","Search__enable_suggestions_from_borg","DevPro__enable_developer_subscriptions","Profiles__enable_complete_playlist_endpoint","Cloud__enable_cloud_dlp_service","Cloud__enable_free_trial_server_call","Profiles__enable_release_notes_notifications","Significatio__enable_by_tenant","DevPro__enable_cloud_innovators_plus","Cloud__enable_cloudx_ping","Cloud__enable_cloud_facet_chat","Concierge__enable_pushui","Cloud__enable_cloud_shell_fte_user_flow","MiscFeatureFlags__enable_view_transitions","TpcFeatures__enable_required_headers","Profiles__enable_awarding_url","MiscFeatureFlags__developers_footer_dark_image","MiscFeatureFlags__developers_footer_image","Experiments__reqs_query_experiments","Search__enable_dynamic_content_confidential_banner","Profiles__enable_recognition_badges","CloudShell__cloud_code_overflow_menu","Profiles__enable_dashboard_curated_recommendations","CloudShell__cloud_shell_button","MiscFeatureFlags__enable_project_variables","Cloud__enable_legacy_calculator_redirect","Cloud__enable_llm_concierge_chat","Search__enable_page_map","Profiles__enable_public_developer_profiles","MiscFeatureFlags__enable_explain_this_code","Profiles__require_profile_eligibility_for_signin","Search__enable_ai_search_summaries","MiscFeatureFlags__emergency_css","TpcFeatures__enable_mirror_tenant_redirects","Concierge__enable_concierge_restricted","EngEduTelemetry__enable_engedu_telemetry","Profiles__enable_page_saving","MiscFeatureFlags__enable_firebase_utm","Profiles__enable_completecodelab_endpoint","BookNav__enable_tenant_cache_key"],null,null,"AIzaSyBLEMok-5suZ67qRPzx0qUtbnLmyT_kCVE","https://developerscontentserving-pa.clients6.google.com","AIzaSyCM4QpTRSqP5qI4Dvjt4OAScIN8sOUlO-k","https://developerscontentsearch-pa.clients6.google.com",1,4,null,"https://developerprofiles-pa.clients6.google.com",[1,"developers","Google for Developers","developers.google.com",null,"developers-dot-devsite-v2-prod.appspot.com",null,null,[1,1,[1],null,null,null,null,null,null,null,null,[1],null,null,null,null,null,null,[1],[1,null,null,[1,20],"/recommendations/information"],null,null,null,[1,1,1],[1,1,null,1,1]],null,[null,null,null,null,null,null,"/images/lockup-new.svg","/images/touchicon-180-new.png",null,null,null,null,1,null,null,null,null,null,null,null,null,1,null,null,null,"/images/lockup-dark-theme-new.svg",[]],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[6,1,14,15,20,22,23,29,32,36],null,[[null,null,null,[3,7,10,2,39,17,4,32,24,11,12,13,34,15,25],null,null,[1,[["docType","Choose a content type",[["Tutorial",null,null,null,null,null,null,null,null,"Tutorial"],["Guide",null,null,null,null,null,null,null,null,"Guide"],["Sample",null,null,null,null,null,null,null,null,"Sample"]]],["product","Choose a product",[["Android",null,null,null,null,null,null,null,null,"Android"],["ARCore",null,null,null,null,null,null,null,null,"ARCore"],["ChromeOS",null,null,null,null,null,null,null,null,"ChromeOS"],["Firebase",null,null,null,null,null,null,null,null,"Firebase"],["Flutter",null,null,null,null,null,null,null,null,"Flutter"],["Assistant",null,null,null,null,null,null,null,null,"Google Assistant"],["GoogleCloud",null,null,null,null,null,null,null,null,"Google Cloud"],["GoogleMapsPlatform",null,null,null,null,null,null,null,null,"Google Maps Platform"],["GooglePay",null,null,null,null,null,null,null,null,"Google Pay & Google Wallet"],["GooglePlay",null,null,null,null,null,null,null,null,"Google Play"],["Tensorflow",null,null,null,null,null,null,null,null,"TensorFlow"]]],["category","Choose a topic",[["AiAndMachineLearning",null,null,null,null,null,null,null,null,"AI and Machine Learning"],["Data",null,null,null,null,null,null,null,null,"Data"],["Enterprise",null,null,null,null,null,null,null,null,"Enterprise"],["Gaming",null,null,null,null,null,null,null,null,"Gaming"],["Mobile",null,null,null,null,null,null,null,null,"Mobile"],["Web",null,null,null,null,null,null,null,null,"Web"]]]]]],[1,1],null,1],[[["UA-24532603-1"],["UA-22084204-5"],null,null,["UA-24532603-5"],null,null,[["G-272J68FCRF"],null,null,[["G-272J68FCRF",2]]],[["UA-24532603-1",2]],null,[["UA-24532603-5",2]],null,1],[[3,2],[15,12],[16,13],[5,4],[12,9],[13,10],[4,3],[1,1],[6,5],[11,8],[14,11]],[[1,1],[2,2]]],null,4,null,null,null,null,null,null,null,null,null,null,null,null,null,"developers.devsite.google"],null,"pk_live_5170syrHvgGVmSx9sBrnWtA5luvk9BwnVcvIi7HizpwauFG96WedXsuXh790rtij9AmGllqPtMLfhe2RSwD6Pn38V00uBCydV4m"]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>