CINXE.COM

<!doctype html><html lang="en"><head><title data-rh="true">Now in Android #111. Android API level and schedule updates… | by Daniel Galpin | Android Developers | Nov, 2024 | Medium</title><meta data-rh="true" charset="utf-8"/><meta data-rh="true" name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,maximum-scale=1"/><meta data-rh="true" name="theme-color" content="#000000"/><meta data-rh="true" name="twitter:app:name:iphone" content="Medium"/><meta data-rh="true" name="twitter:app:id:iphone" content="828256236"/><meta data-rh="true" property="al:ios:app_name" content="Medium"/><meta data-rh="true" property="al:ios:app_store_id" content="828256236"/><meta data-rh="true" property="al:android:package" content="com.medium.reader"/><meta data-rh="true" property="fb:app_id" content="542599432471018"/><meta data-rh="true" property="og:site_name" content="Medium"/><meta data-rh="true" property="og:type" content="article"/><meta data-rh="true" property="article:published_time" content="2024-11-19T21:51:30.545Z"/><meta data-rh="true" name="title" content="Now in Android #111. Android API level and schedule updates… | by Daniel Galpin | Android Developers | Nov, 2024 | Medium"/><meta data-rh="true" property="og:title" content="Now in Android #111"/><meta data-rh="true" property="al:android:url" content="medium://p/9c60a12a8473"/><meta data-rh="true" property="al:ios:url" content="medium://p/9c60a12a8473"/><meta data-rh="true" property="al:android:app_name" content="Medium"/><meta data-rh="true" name="description" content="Welcome to the 111th iteration of Now in Android: your ongoing guide to what’s new and notable in the world of Android development. Most of the content of this post is available in the form of a…"/><meta data-rh="true" property="og:description" content="Android API level and schedule updates, Gemini in Android Studio, Google Play, Spotlight weeks and more."/><meta data-rh="true" property="og:url" content="https://medium.com/androiddevelopers/now-in-android-111-9c60a12a8473"/><meta data-rh="true" property="al:web:url" content="https://medium.com/androiddevelopers/now-in-android-111-9c60a12a8473"/><meta data-rh="true" property="og:image" content="https://miro.medium.com/v2/resize:fit:1200/1*Sy3ea40KCd6LSmU6QFUgDA.png"/><meta data-rh="true" property="article:author" content="https://medium.com/@dagalpin"/><meta data-rh="true" name="author" content="Daniel Galpin"/><meta data-rh="true" name="robots" content="index,noarchive,follow,max-image-preview:large"/><meta data-rh="true" name="referrer" content="unsafe-url"/><meta data-rh="true" property="twitter:title" content="Now in Android #111"/><meta data-rh="true" name="twitter:site" content="@androiddev"/><meta data-rh="true" name="twitter:app:url:iphone" content="medium://p/9c60a12a8473"/><meta data-rh="true" property="twitter:description" content="Android API level and schedule updates, Gemini in Android Studio, Google Play, Spotlight weeks and more."/><meta data-rh="true" name="twitter:image:src" content="https://miro.medium.com/v2/resize:fit:1200/1*Sy3ea40KCd6LSmU6QFUgDA.png"/><meta data-rh="true" name="twitter:card" content="summary_large_image"/><meta data-rh="true" name="twitter:label1" content="Reading time"/><meta data-rh="true" name="twitter:data1" content="9 min read"/><link data-rh="true" rel="icon" href="https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19"/><link data-rh="true" rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml"/><link data-rh="true" rel="apple-touch-icon" sizes="152x152" href="https://miro.medium.com/v2/resize:fill:304:304/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="120x120" href="https://miro.medium.com/v2/resize:fill:240:240/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="76x76" href="https://miro.medium.com/v2/resize:fill:152:152/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="60x60" href="https://miro.medium.com/v2/resize:fill:120:120/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="mask-icon" href="https://miro.medium.com/v2/resize:fill:1000:1000/7*GAOKVe--MXbEJmV9230oOQ.png" color="#171717"/><link data-rh="true" rel="preconnect" href="https://glyph.medium.com" crossOrigin=""/><link data-rh="true" id="glyph_preload_link" rel="preload" as="style" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" id="glyph_link" rel="stylesheet" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" rel="author" href="https://medium.com/@dagalpin"/><link data-rh="true" rel="canonical" href="https://medium.com/androiddevelopers/now-in-android-111-9c60a12a8473"/><link data-rh="true" rel="alternate" href="android-app://com.medium.reader/https/medium.com/p/9c60a12a8473"/><script data-rh="true" type="application/ld+json">{"@context":"http:\u002F\u002Fschema.org","@type":"NewsArticle","image":["https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fresize:fit:1200\u002F1*Sy3ea40KCd6LSmU6QFUgDA.png"],"url":"https:\u002F\u002Fmedium.com\u002Fandroiddevelopers\u002Fnow-in-android-111-9c60a12a8473","dateCreated":"2024-11-07T22:31:11.662Z","datePublished":"2024-11-07T22:31:11.662Z","dateModified":"2024-11-19T21:51:30.545Z","headline":"Now in Android #111 - Android Developers - Medium","name":"Now in Android #111 - Android Developers - Medium","description":"Welcome to the 111th iteration of Now in Android: your ongoing guide to what’s new and notable in the world of Android development. Most of the content of this post is available in the form of a…","identifier":"9c60a12a8473","author":{"@type":"Person","name":"Daniel Galpin","url":"https:\u002F\u002Fmedium.com\u002F@dagalpin"},"creator":["Daniel Galpin"],"publisher":{"@type":"Organization","name":"Android Developers","url":"https:\u002F\u002Fmedium.com\u002Fandroiddevelopers","logo":{"@type":"ImageObject","width":500,"height":60,"url":"https:\u002F\u002Fmiro.medium.com\u002Fv2\u002Fresize:fit:1000\u002F1*5pMw_nx55x_66tk77kutPQ.png"}},"mainEntityOfPage":"https:\u002F\u002Fmedium.com\u002Fandroiddevelopers\u002Fnow-in-android-111-9c60a12a8473"}</script><style type="text/css" data-fela-rehydration="604" data-fela-type="STATIC">html{box-sizing:border-box;-webkit-text-size-adjust:100%}*, *:before, *:after{box-sizing:inherit}body{margin:0;padding:0;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;color:rgba(0,0,0,0.8);position:relative;min-height:100vh}h1, h2, h3, h4, h5, h6, dl, dd, ol, ul, menu, figure, blockquote, p, pre, form{margin:0}menu, ol, ul{padding:0;list-style:none;list-style-image:none}main{display:block}a{color:inherit;text-decoration:none}a, button, input{-webkit-tap-highlight-color:transparent}img, svg{vertical-align:middle}button{background:transparent;overflow:visible}button, input, optgroup, select, textarea{margin:0}:root{--reach-tabs:1;--reach-menu-button:1}#speechify-root{font-family:Sohne, sans-serif}div[data-popper-reference-hidden="true"]{visibility:hidden;pointer-events:none}.grecaptcha-badge{visibility:hidden} /*XCode style (c) Angel Garcia <angelgarcia.mail@gmail.com>*/.hljs {background: #fff;color: black; }/* Gray DOCTYPE selectors like WebKit */ .xml .hljs-meta {color: #c0c0c0; }.hljs-comment, .hljs-quote {color: #007400; }.hljs-tag, .hljs-attribute, .hljs-keyword, .hljs-selector-tag, .hljs-literal, .hljs-name {color: #aa0d91; }.hljs-variable, .hljs-template-variable {color: #3F6E74; }.hljs-code, .hljs-string, .hljs-meta .hljs-string {color: #c41a16; }.hljs-regexp, .hljs-link {color: #0E0EFF; }.hljs-title, .hljs-symbol, .hljs-bullet, .hljs-number {color: #1c00cf; }.hljs-section, .hljs-meta {color: #643820; }.hljs-title.class_, .hljs-class .hljs-title, .hljs-type, .hljs-built_in, .hljs-params {color: #5c2699; }.hljs-attr {color: #836C28; }.hljs-subst {color: #000; }.hljs-formula {background-color: #eee;font-style: italic; }.hljs-addition {background-color: #baeeba; }.hljs-deletion {background-color: #ffc8bd; }.hljs-selector-id, .hljs-selector-class {color: #9b703f; }.hljs-doctag, .hljs-strong {font-weight: bold; }.hljs-emphasis {font-style: italic; } </style><style type="text/css" data-fela-rehydration="604" data-fela-type="KEYFRAME">@-webkit-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@-moz-keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}@keyframes k1{0%{opacity:0.8}50%{opacity:0.5}100%{opacity:0.8}}</style><style type="text/css" data-fela-rehydration="604" data-fela-type="RULE">.a{font-family:medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif}.b{font-weight:400}.c{background-color:rgba(255, 255, 255, 1)}.l{display:block}.m{position:sticky}.n{top:0}.o{z-index:500}.p{padding:0 24px}.q{align-items:center}.r{border-bottom:solid 1px #F2F2F2}.y{height:41px}.z{line-height:20px}.ab{display:flex}.ac{height:57px}.ae{flex:1 0 auto}.af{color:inherit}.ag{fill:inherit}.ah{font-size:inherit}.ai{border:inherit}.aj{font-family:inherit}.ak{letter-spacing:inherit}.al{font-weight:inherit}.am{padding:0}.an{margin:0}.ao{cursor:pointer}.ap:disabled{cursor:not-allowed}.aq:disabled{color:#6B6B6B}.ar:disabled{fill:#6B6B6B}.au{width:auto}.av path{fill:#242424}.aw{height:25px}.ax{margin-left:16px}.ay{border:none}.az{border-radius:20px}.ba{width:240px}.bb{background:#F9F9F9}.bc path{fill:#6B6B6B}.be{outline:none}.bf{font-family:sohne, "Helvetica Neue", Helvetica, Arial, sans-serif}.bg{font-size:14px}.bh{width:100%}.bi{padding:10px 20px 10px 0}.bj{background-color:transparent}.bk{color:#242424}.bl::placeholder{color:#6B6B6B}.bm{display:inline-block}.bn{margin-left:12px}.bo{margin-right:12px}.bp{border-radius:4px}.bq{margin-left:24px}.br{height:24px}.bx{background-color:#F9F9F9}.by{border-radius:50%}.bz{height:32px}.ca{width:32px}.cb{justify-content:center}.ch{max-width:680px}.ci{min-width:0}.cj{animation:k1 1.2s ease-in-out infinite}.ck{height:100vh}.cl{margin-bottom:16px}.cm{margin-top:48px}.cn{align-items:flex-start}.co{flex-direction:column}.cp{justify-content:space-between}.cq{margin-bottom:24px}.cw{width:80%}.cx{background-color:#F2F2F2}.dd{height:44px}.de{width:44px}.df{margin:auto 0}.dg{margin-bottom:4px}.dh{height:16px}.di{width:120px}.dj{width:80px}.dp{margin-bottom:8px}.dq{width:96%}.dr{width:98%}.ds{width:81%}.dt{margin-left:8px}.du{color:#6B6B6B}.dv{font-size:13px}.dw{height:100%}.ep{color:#FFFFFF}.eq{fill:#FFFFFF}.er{background:rgba(132, 132, 136, 1)}.es{border-color:rgba(132, 132, 136, 1)}.ew:disabled{cursor:inherit !important}.ex:disabled{opacity:0.3}.ey:disabled:hover{background:rgba(132, 132, 136, 1)}.ez:disabled:hover{border-color:rgba(132, 132, 136, 1)}.fa{border-radius:99em}.fb{border-width:1px}.fc{border-style:solid}.fd{box-sizing:border-box}.fe{text-decoration:none}.ff{text-align:center}.fi{margin-right:32px}.fj{position:relative}.fk{fill:#6B6B6B}.fn{background:transparent}.fo svg{margin-left:4px}.fp svg{fill:#6B6B6B}.fr{box-shadow:inset 0 0 0 1px rgba(0, 0, 0, 0.05)}.fs{position:absolute}.fz{margin:0 24px}.gd{background:rgba(255, 255, 255, 1)}.ge{border:1px solid #F2F2F2}.gf{box-shadow:0 1px 4px #F2F2F2}.gg{max-height:100vh}.gh{overflow-y:auto}.gi{left:0}.gj{top:calc(100vh + 100px)}.gk{bottom:calc(100vh + 100px)}.gl{width:10px}.gm{pointer-events:none}.gn{word-break:break-word}.go{word-wrap:break-word}.gp:after{display:block}.gq:after{content:""}.gr:after{clear:both}.gs{clear:both}.hb{margin-left:auto}.hc{margin-right:auto}.hd{max-width:4209px}.hj{padding-top:5px}.hk{padding-bottom:5px}.hm{cursor:zoom-in}.hn{z-index:auto}.hp{max-width:100%}.hq{height:auto}.hr{line-height:1.23}.hs{letter-spacing:0}.ht{font-style:normal}.hu{font-weight:700}.ip{margin-bottom:-0.27em}.iq{line-height:1.394}.jg{text-decoration:underline}.jm{align-items:baseline}.jn{width:48px}.jo{height:48px}.jp{border:2px solid rgba(255, 255, 255, 1)}.jq{z-index:0}.jr{box-shadow:none}.js{border:1px solid rgba(0, 0, 0, 0.05)}.jt{margin-left:-12px}.ju{width:28px}.jv{height:28px}.jw{z-index:1}.jx{width:24px}.jy{margin-bottom:2px}.jz{flex-wrap:nowrap}.ka{font-size:16px}.kb{line-height:24px}.kd{margin:0 8px}.ke{display:inline}.kf{color:rgba(132, 132, 136, 1)}.kg{fill:rgba(132, 132, 136, 1)}.kj{flex:0 0 auto}.km{flex-wrap:wrap}.kp{white-space:pre-wrap}.kq{margin-right:4px}.kr{overflow:hidden}.ks{max-height:20px}.kt{text-overflow:ellipsis}.ku{display:-webkit-box}.kv{-webkit-line-clamp:1}.kw{-webkit-box-orient:vertical}.kx{word-break:break-all}.kz{padding-left:8px}.la{padding-right:8px}.mb> *{flex-shrink:0}.mc{overflow-x:scroll}.md::-webkit-scrollbar{display:none}.me{scrollbar-width:none}.mf{-ms-overflow-style:none}.mg{width:74px}.mh{flex-direction:row}.mi{z-index:2}.ml{-webkit-user-select:none}.mm{border:0}.mn{fill:rgba(117, 117, 117, 1)}.mq{outline:0}.mr{user-select:none}.ms> svg{pointer-events:none}.nb{cursor:progress}.nc{opacity:1}.nd{padding:4px 0}.ng{margin-top:0px}.nh{width:16px}.nj{display:inline-flex}.nm{padding:8px 2px}.nn svg{color:#6B6B6B}.oe{line-height:1.58}.of{letter-spacing:-0.004em}.og{font-family:source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif}.oz{margin-bottom:-0.46em}.pf{margin:auto}.pg{padding-bottom:56.206088992974244%}.ph{height:0}.pi{padding-bottom:15%}.pj{margin-top:32px}.pk{margin-bottom:14px}.pl{padding-top:24px}.pm{padding-bottom:10px}.pn{background-color:#000000}.po{height:3px}.pp{width:3px}.pq{margin-right:20px}.pr{max-width:1600px}.ps{line-height:1.12}.pt{letter-spacing:-0.022em}.pu{font-weight:600}.qn{margin-bottom:-0.28em}.qy{box-shadow:inset 0 0 0 1px #F2F2F2}.qz{padding:0px}.ra{padding:16px 20px}.rb{flex:1 1 auto}.rd{max-height:40px}.re{-webkit-line-clamp:2}.rf{margin-top:8px}.rg{margin-top:12px}.rh{width:160px}.ri{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*I-JJSKHdYnTefvTk)}.rj{background-origin:border-box}.rk{background-size:cover}.rl{height:167px}.rm{background-position:50% 50%}.rn{max-width:1281px}.ro{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*L3cfgNpgyINHYUX9)}.rp{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*m3ujVsJ6cYvnBwcv)}.rq{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*T_y6Q9BvSYXEhCVh)}.rr{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*Uliv6_SUIY770DpU)}.rs{line-height:1.18}.sg{margin-bottom:-0.31em}.sh{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*sWxcmnhfPoEvdS9K)}.si{background:none}.sj{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*dlwrav05xvYyDRhu)}.sk{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*FvqyXVLwz1ER3vyj)}.sl{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*KRWxZdIB9VdTW55N)}.sm{list-style-type:disc}.sn{margin-left:30px}.so{padding-left:0px}.su{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*UgDhBCB7ay6tI6m1)}.sv{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*HFQxT-qCXBUsVovV)}.sw{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*a-Bv9K_-Xi1YIQ-m)}.sx{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*2C9fqYmrfAJLmRov)}.sy{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*uFHI-XCHd9U-BozY)}.sz{margin-bottom:26px}.ta{margin-top:6px}.tb{margin-right:8px}.tc{padding:8px 16px}.td{border-radius:100px}.te{transition:background 300ms ease}.tg{white-space:nowrap}.th{border-top:none}.ti{height:52px}.tj{max-height:52px}.tk{box-sizing:content-box}.tl{position:static}.tn{max-width:155px}.ty{height:0px}.tz{margin-bottom:40px}.ua{margin-bottom:48px}.uo{border-radius:2px}.uq{height:64px}.ur{width:64px}.us{align-self:flex-end}.uw{padding-right:4px}.ux{font-weight:500}.ve{margin-top:16px}.vf{color:rgba(255, 255, 255, 1)}.vg{fill:rgba(255, 255, 255, 1)}.vh{background:rgba(25, 25, 25, 1)}.vi{border-color:rgba(25, 25, 25, 1)}.vl:disabled{opacity:0.1}.vm:disabled:hover{background:rgba(25, 25, 25, 1)}.vn:disabled:hover{border-color:rgba(25, 25, 25, 1)}.vo{margin-bottom:54px}.vu{gap:18px}.vv{fill:rgba(61, 61, 61, 1)}.wc{border-bottom:solid 1px #E5E5E5}.wd{margin-top:72px}.we{padding:24px 0}.wf{margin-bottom:0px}.wg{margin-right:16px}.as:hover:not(:disabled){color:rgba(25, 25, 25, 1)}.at:hover:not(:disabled){fill:rgba(25, 25, 25, 1)}.et:hover{background:rgba(113, 114, 117, 1)}.eu:hover{border-color:rgba(113, 114, 117, 1)}.ev:hover{cursor:pointer}.fl:hover{color:#242424}.fm:hover{fill:#242424}.fq:hover svg{fill:#242424}.ft:hover{background-color:rgba(0, 0, 0, 0.1)}.kc:hover{text-decoration:underline}.kh:hover:not(:disabled){color:rgba(113, 114, 117, 1)}.ki:hover:not(:disabled){fill:rgba(113, 114, 117, 1)}.mp:hover{fill:rgba(8, 8, 8, 1)}.ne:hover{fill:#000000}.nf:hover p{color:#000000}.ni:hover{color:#000000}.no:hover svg{color:#000000}.tf:hover{background-color:#F2F2F2}.up:hover{background-color:none}.vj:hover{background:#000000}.vk:hover{border-color:#242424}.vw:hover{fill:rgba(25, 25, 25, 1)}.bd:focus-within path{fill:#242424}.ho:focus{transform:scale(1.01)}.mo:focus{fill:rgba(8, 8, 8, 1)}.np:focus svg{color:#000000}.mt:active{border-style:none}</style><style type="text/css" data-fela-rehydration="604" data-fela-type="RULE" media="all and (min-width: 1080px)">.d{display:none}.bw{width:64px}.cg{margin:0 64px}.cv{height:48px}.dc{margin-bottom:52px}.do{margin-bottom:48px}.ef{font-size:14px}.eg{line-height:20px}.em{font-size:13px}.eo{padding:5px 12px}.fh{display:flex}.fy{margin-bottom:68px}.gc{max-width:680px}.ha{max-width:1192px}.hi{margin-top:40px}.il{font-size:42px}.im{margin-top:1em}.in{line-height:52px}.io{letter-spacing:-0.011em}.jd{font-size:22px}.je{margin-top:0.92em}.jf{line-height:28px}.jl{align-items:center}.ln{border-top:solid 1px #F2F2F2}.lo{border-bottom:solid 1px #F2F2F2}.lp{margin:32px 0 0}.lq{padding:3px 8px}.lz> *{margin-right:24px}.ma> :last-child{margin-right:0}.na{margin-top:0px}.nl{margin:0}.ov{font-size:20px}.ow{margin-top:2.14em}.ox{line-height:32px}.oy{letter-spacing:-0.003em}.pe{margin-top:56px}.qj{font-size:24px}.qk{margin-top:1.95em}.ql{line-height:30px}.qm{letter-spacing:-0.016em}.qs{margin-top:0.94em}.qx{margin-top:32px}.sd{margin-top:1.72em}.se{line-height:24px}.sf{letter-spacing:0}.st{margin-top:1.14em}.ts{display:inline-block}.tx{margin-bottom:104px}.ub{flex-direction:row}.ue{margin-bottom:0}.uf{margin-right:20px}.ut{max-width:500px}.vt{margin-bottom:72px}.wb{padding-top:72px}</style><style type="text/css" data-fela-rehydration="604" data-fela-type="RULE" media="all and (max-width: 1079.98px)">.e{display:none}.mz{margin-top:0px}.tr{display:inline-block}</style><style type="text/css" data-fela-rehydration="604" data-fela-type="RULE" media="all and (max-width: 903.98px)">.f{display:none}.my{margin-top:0px}.tq{display:inline-block}</style><style type="text/css" data-fela-rehydration="604" data-fela-type="RULE" media="all and (max-width: 727.98px)">.g{display:none}.mw{margin-top:0px}.mx{margin-right:0px}.rc{padding:10px 12px 10px}.tp{display:inline-block}</style><style type="text/css" data-fela-rehydration="604" data-fela-type="RULE" media="all and (max-width: 551.98px)">.h{display:none}.s{display:flex}.t{justify-content:space-between}.bs{width:24px}.cc{margin:0 24px}.cr{height:40px}.cy{margin-bottom:44px}.dk{margin-bottom:32px}.dx{font-size:13px}.dy{line-height:20px}.eh{padding:0px 8px 1px}.fu{margin-bottom:4px}.gt{margin:0}.gu{max-width:100%}.he{margin-top:32px}.hv{font-size:32px}.hw{margin-top:1.01em}.hx{line-height:38px}.hy{letter-spacing:-0.014em}.ir{font-size:18px}.is{margin-top:0.79em}.it{line-height:24px}.jh{align-items:flex-start}.kk{flex-direction:column}.kn{margin-bottom:2px}.lb{margin:24px -24px 0}.lc{padding:0}.lr> *{margin-right:8px}.ls> :last-child{margin-right:24px}.mj{margin-left:0px}.mu{margin-top:0px}.mv{margin-right:0px}.nq{border:1px solid #F2F2F2}.nr{border-radius:99em}.ns{padding:0px 16px 0px 12px}.nt{height:38px}.nu{align-items:center}.nw svg{margin-right:8px}.oh{margin-top:1.56em}.oi{line-height:28px}.oj{letter-spacing:-0.003em}.pa{margin-top:40px}.pv{font-size:20px}.pw{margin-top:1.2em}.px{letter-spacing:0}.qo{margin-top:0.67em}.qt{margin-top:24px}.rt{font-size:16px}.ru{margin-top:1.23em}.sp{margin-top:1.34em}.to{display:inline-block}.tt{margin-bottom:96px}.um{margin-bottom:20px}.un{margin-right:0}.uy{font-size:24px}.uz{line-height:30px}.va{letter-spacing:-0.016em}.vp{margin-bottom:64px}.vx{padding-top:48px}.nv:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="604" data-fela-type="RULE" media="all and (min-width: 904px) and (max-width: 1079.98px)">.i{display:none}.bv{width:64px}.cf{margin:0 64px}.cu{height:48px}.db{margin-bottom:52px}.dn{margin-bottom:48px}.ed{font-size:14px}.ee{line-height:20px}.ek{font-size:13px}.el{padding:5px 12px}.fg{display:flex}.fx{margin-bottom:68px}.gb{max-width:680px}.gz{max-width:1192px}.hh{margin-top:40px}.ih{font-size:42px}.ii{margin-top:1em}.ij{line-height:52px}.ik{letter-spacing:-0.011em}.ja{font-size:22px}.jb{margin-top:0.92em}.jc{line-height:28px}.jk{align-items:center}.lj{border-top:solid 1px #F2F2F2}.lk{border-bottom:solid 1px #F2F2F2}.ll{margin:32px 0 0}.lm{padding:3px 8px}.lx> *{margin-right:24px}.ly> :last-child{margin-right:0}.nk{margin:0}.or{font-size:20px}.os{margin-top:2.14em}.ot{line-height:32px}.ou{letter-spacing:-0.003em}.pd{margin-top:56px}.qf{font-size:24px}.qg{margin-top:1.95em}.qh{line-height:30px}.qi{letter-spacing:-0.016em}.qr{margin-top:0.94em}.qw{margin-top:32px}.sa{margin-top:1.72em}.sb{line-height:24px}.sc{letter-spacing:0}.ss{margin-top:1.14em}.tw{margin-bottom:104px}.uc{flex-direction:row}.ug{margin-bottom:0}.uh{margin-right:20px}.uu{max-width:500px}.vs{margin-bottom:72px}.wa{padding-top:72px}</style><style type="text/css" data-fela-rehydration="604" data-fela-type="RULE" media="all and (min-width: 728px) and (max-width: 903.98px)">.j{display:none}.w{display:flex}.x{justify-content:space-between}.bu{width:64px}.ce{margin:0 48px}.ct{height:48px}.da{margin-bottom:52px}.dm{margin-bottom:48px}.eb{font-size:13px}.ec{line-height:20px}.ej{padding:0px 8px 1px}.fw{margin-bottom:68px}.ga{max-width:680px}.gx{margin:0}.gy{max-width:100%}.hg{margin-top:40px}.id{font-size:42px}.ie{margin-top:1em}.if{line-height:52px}.ig{letter-spacing:-0.011em}.ix{font-size:22px}.iy{margin-top:0.92em}.iz{line-height:28px}.jj{align-items:center}.lf{border-top:solid 1px #F2F2F2}.lg{border-bottom:solid 1px #F2F2F2}.lh{margin:32px 0 0}.li{padding:3px 8px}.lv> *{margin-right:24px}.lw> :last-child{margin-right:0}.on{font-size:20px}.oo{margin-top:2.14em}.op{line-height:32px}.oq{letter-spacing:-0.003em}.pc{margin-top:56px}.qb{font-size:24px}.qc{margin-top:1.95em}.qd{line-height:30px}.qe{letter-spacing:-0.016em}.qq{margin-top:0.94em}.qv{margin-top:32px}.rx{margin-top:1.72em}.ry{line-height:24px}.rz{letter-spacing:0}.sr{margin-top:1.14em}.tv{margin-bottom:104px}.ud{flex-direction:row}.ui{margin-bottom:0}.uj{margin-right:20px}.uv{max-width:500px}.vr{margin-bottom:72px}.vz{padding-top:72px}</style><style type="text/css" data-fela-rehydration="604" data-fela-type="RULE" media="all and (min-width: 552px) and (max-width: 727.98px)">.k{display:none}.u{display:flex}.v{justify-content:space-between}.bt{width:24px}.cd{margin:0 24px}.cs{height:40px}.cz{margin-bottom:44px}.dl{margin-bottom:32px}.dz{font-size:13px}.ea{line-height:20px}.ei{padding:0px 8px 1px}.fv{margin-bottom:4px}.gv{margin:0}.gw{max-width:100%}.hf{margin-top:32px}.hz{font-size:32px}.ia{margin-top:1.01em}.ib{line-height:38px}.ic{letter-spacing:-0.014em}.iu{font-size:18px}.iv{margin-top:0.79em}.iw{line-height:24px}.ji{align-items:flex-start}.kl{flex-direction:column}.ko{margin-bottom:2px}.ld{margin:24px 0 0}.le{padding:0}.lt> *{margin-right:8px}.lu> :last-child{margin-right:8px}.mk{margin-left:0px}.nx{border:1px solid #F2F2F2}.ny{border-radius:99em}.nz{padding:0px 16px 0px 12px}.oa{height:38px}.ob{align-items:center}.od svg{margin-right:8px}.ok{margin-top:1.56em}.ol{line-height:28px}.om{letter-spacing:-0.003em}.pb{margin-top:40px}.py{font-size:20px}.pz{margin-top:1.2em}.qa{letter-spacing:0}.qp{margin-top:0.67em}.qu{margin-top:24px}.rv{font-size:16px}.rw{margin-top:1.23em}.sq{margin-top:1.34em}.tu{margin-bottom:96px}.uk{margin-bottom:20px}.ul{margin-right:0}.vb{font-size:24px}.vc{line-height:30px}.vd{letter-spacing:-0.016em}.vq{margin-bottom:64px}.vy{padding-top:48px}.oc:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="604" data-fela-type="RULE" media="print">.tm{display:none}</style><style type="text/css" data-fela-rehydration="604" data-fela-type="RULE" media="(prefers-reduced-motion: no-preference)">.hl{transition:transform 300ms cubic-bezier(0.2, 0, 0.2, 1)}</style><style type="text/css" data-fela-rehydration="604" data-fela-type="RULE" media="(orientation: landscape) and (max-width: 903.98px)">.ky{max-height:none}</style></head><body><div id="root"><div class="a b c"><div class="d e f g h i j k"></div><script>document.domain = document.domain;</script><div class="l c"><div class="l m n o c"><div class="p q r s t u v w x i d y z"><a class="du ag dv bf ak b am an ao ap aq ar as at s u w i d q dw z" href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com%2Fp%2F9c60a12a8473&amp;%7Efeature=LoOpenInAppButton&amp;%7Echannel=ShowPostUnderCollection&amp;source=---top_nav_layout_nav----------------------------------" rel="noopener follow">Open in app<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="none" viewBox="0 0 10 10" class="dt"><path fill="currentColor" d="M.985 8.485a.375.375 0 1 0 .53.53zM8.75 1.25h.375A.375.375 0 0 0 8.75.875zM8.375 6.5a.375.375 0 1 0 .75 0zM3.5.875a.375.375 0 1 0 0 .75zm-1.985 8.14 7.5-7.5-.53-.53-7.5 7.5zm6.86-7.765V6.5h.75V1.25zM3.5 1.625h5.25v-.75H3.5z"></path></svg></a><div class="ab q"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><button class="bf b dx dy eh dz ea ei eb ec ej ek ee el em eg eo ep eq er es et eu ev ew ex ey ez fa fb fc fd bm fe ff" data-testid="headerSignUpButton">Sign up</button></span></p><div class="ax l"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" rel="noopener follow" href="/m/signin?operation=login&amp;redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-111-9c60a12a8473&amp;source=post_page---top_nav_layout_nav-----------------------global_nav-----------">Sign in</a></span></p></div></div></div><div class="p q r ab ac"><div class="ab q ae"><a class="af ag ah ai aj ak al am an ao ap aq ar as at ab" aria-label="Homepage" data-testid="headerMediumLogo" rel="noopener follow" href="/?source=---top_nav_layout_nav----------------------------------"><svg xmlns="http://www.w3.org/2000/svg" width="719" height="160" fill="none" viewBox="0 0 719 160" class="au av aw"><path fill="#242424" d="m174.104 9.734.215-.047V8.02H130.39L89.6 103.89 48.81 8.021H1.472v1.666l.212.047c8.018 1.81 12.09 4.509 12.09 14.242V137.93c0 9.734-4.087 12.433-12.106 14.243l-.212.047v1.671h32.118v-1.665l-.213-.048c-8.018-1.809-12.089-4.509-12.089-14.242V30.586l52.399 123.305h2.972l53.925-126.743V140.75c-.687 7.688-4.721 10.062-11.982 11.701l-.215.05v1.652h55.948v-1.652l-.215-.05c-7.269-1.639-11.4-4.013-12.087-11.701l-.037-116.774h.037c0-9.733 4.071-12.432 12.087-14.242m25.555 75.488c.915-20.474 8.268-35.252 20.606-35.507 3.806.063 6.998 1.312 9.479 3.714 5.272 5.118 7.751 15.812 7.368 31.793zm-.553 5.77h65.573v-.275c-.186-15.656-4.721-27.834-13.466-36.196-7.559-7.227-18.751-11.203-30.507-11.203h-.263c-6.101 0-13.584 1.48-18.909 4.16-6.061 2.807-11.407 7.003-15.855 12.511-7.161 8.874-11.499 20.866-12.554 34.343q-.05.606-.092 1.212a50 50 0 0 0-.065 1.151 85.807 85.807 0 0 0-.094 5.689c.71 30.524 17.198 54.917 46.483 54.917 25.705 0 40.675-18.791 44.407-44.013l-1.886-.664c-6.557 13.556-18.334 21.771-31.738 20.769-18.297-1.369-32.314-19.922-31.042-42.395m139.722 41.359c-2.151 5.101-6.639 7.908-12.653 7.908s-11.513-4.129-15.418-11.63c-4.197-8.053-6.405-19.436-6.405-32.92 0-28.067 8.729-46.22 22.24-46.22 5.657 0 10.111 2.807 12.236 7.704zm43.499 20.008c-8.019-1.897-12.089-4.722-12.089-14.951V1.309l-48.716 14.353v1.757l.299-.024c6.72-.543 11.278.386 13.925 2.83 2.072 1.915 3.082 4.853 3.082 8.987v18.66c-4.803-3.067-10.516-4.56-17.448-4.56-14.059 0-26.909 5.92-36.176 16.672-9.66 11.205-14.767 26.518-14.767 44.278-.003 31.72 15.612 53.039 38.851 53.039 13.595 0 24.533-7.449 29.54-20.013v16.865h43.711v-1.746zM424.1 19.819c0-9.904-7.468-17.374-17.375-17.374-9.859 0-17.573 7.632-17.573 17.374s7.721 17.374 17.573 17.374c9.907 0 17.375-7.47 17.375-17.374m11.499 132.546c-8.019-1.897-12.089-4.722-12.089-14.951h-.035V43.635l-43.714 12.551v1.705l.263.024c9.458.842 12.047 4.1 12.047 15.152v81.086h43.751v-1.746zm112.013 0c-8.018-1.897-12.089-4.722-12.089-14.951V43.635l-41.621 12.137v1.71l.246.026c7.733.813 9.967 4.257 9.967 15.36v59.279c-2.578 5.102-7.415 8.131-13.274 8.336-9.503 0-14.736-6.419-14.736-18.073V43.638l-43.714 12.55v1.703l.262.024c9.459.84 12.05 4.097 12.05 15.152v50.17a56.3 56.3 0 0 0 .91 10.444l.787 3.423c3.701 13.262 13.398 20.197 28.59 20.197 12.868 0 24.147-7.966 29.115-20.43v17.311h43.714v-1.747zm169.818 1.788v-1.749l-.213-.05c-8.7-2.006-12.089-5.789-12.089-13.49v-63.79c0-19.89-11.171-31.761-29.883-31.761-13.64 0-25.141 7.882-29.569 20.16-3.517-13.01-13.639-20.16-28.606-20.16-13.146 0-23.449 6.938-27.869 18.657V43.643L545.487 55.68v1.715l.263.024c9.345.829 12.047 4.181 12.047 14.95v81.784h40.787v-1.746l-.215-.053c-6.941-1.631-9.181-4.606-9.181-12.239V66.998c1.836-4.289 5.537-9.37 12.853-9.37 9.086 0 13.692 6.296 13.692 18.697v77.828h40.797v-1.746l-.215-.053c-6.94-1.631-9.18-4.606-9.18-12.239V75.066a42 42 0 0 0-.578-7.26c1.947-4.661 5.86-10.177 13.475-10.177 9.214 0 13.691 6.114 13.691 18.696v77.828z"></path></svg></a><div class="ax h"><div class="ab ay az ba bb q bc bd"><div class="bm" aria-hidden="false" aria-describedby="searchResults" aria-labelledby="searchResults"></div><div class="bn bo ab"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div><input role="combobox" aria-controls="searchResults" aria-expanded="false" aria-label="search" data-testid="headerSearchInput" tabindex="0" class="ay be bf bg z bh bi bj bk bl" placeholder="Search" value=""/></div></div></div><div class="h k w fg fh"><div class="fi ab"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerWriteButton" rel="noopener follow" href="/m/signin?operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fnew-story&amp;source=---top_nav_layout_nav-----------------------new_post_topnav-----------"><div class="bf b bg z du fj fk ab q fl fm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Write"><path fill="currentColor" d="M14 4a.5.5 0 0 0 0-1zm7 6a.5.5 0 0 0-1 0zm-7-7H4v1h10zM3 4v16h1V4zm1 17h16v-1H4zm17-1V10h-1v10zm-1 1a1 1 0 0 0 1-1h-1zM3 20a1 1 0 0 0 1 1v-1zM4 3a1 1 0 0 0-1 1h1z"></path><path stroke="currentColor" d="m17.5 4.5-8.458 8.458a.25.25 0 0 0-.06.098l-.824 2.47a.25.25 0 0 0 .316.316l2.47-.823a.25.25 0 0 0 .098-.06L19.5 6.5m-2-2 2.323-2.323a.25.25 0 0 1 .354 0l1.646 1.646a.25.25 0 0 1 0 .354L19.5 6.5m-2-2 2 2"></path></svg><div class="dt l">Write</div></div></a></span></div></div><div class="k j i d"><div class="fi ab"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSearchButton" rel="noopener follow" href="/search?source=---top_nav_layout_nav----------------------------------"><div class="bf b bg z du fj fk ab q fl fm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Search"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div></a></div></div><div class="fi h k j"><div class="ab q"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><button class="bf b dx dy eh dz ea ei eb ec ej ek ee el em eg eo ep eq er es et eu ev ew ex ey ez fa fb fc fd bm fe ff" data-testid="headerSignUpButton">Sign up</button></span></p><div class="ax l"><p class="bf b dx dy dz ea eb ec ed ee ef eg du"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" rel="noopener follow" href="/m/signin?operation=login&amp;redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-111-9c60a12a8473&amp;source=post_page---top_nav_layout_nav-----------------------global_nav-----------">Sign in</a></span></p></div></div></div><div class="l" aria-hidden="false"><button class="ay fn am ab q ao fo fp fq" aria-label="user options menu" data-testid="headerUserIcon"><div class="l fj"><img alt="" class="l fd by bz ca cx" src="https://miro.medium.com/v2/resize:fill:64:64/1*dmbNkD5D-u45r44go_cf0g.png" width="32" height="32" loading="lazy" role="presentation"/><div class="fr by l bz ca fs n ay ft"></div></div></button></div></div></div><div class="l"><div class="fu fv fw fx fy l"><div class="ab cb"><div class="ci bh fz ga gb gc"></div></div><article><div class="l"><div class="l"><span class="l"></span><section><div><div class="fs gi gj gk gl gm"></div><div class="gn go gp gq gr"><div class="gs"><div class="ab cb"><div class="gt gu gv gw gx gy cf gz cg ha ci bh"><figure class="he hf hg hh hi gs hj hk paragraph-image"><div role="button" tabindex="0" class="hl hm fj hn bh ho"><div class="hb hc hd"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*Sy3ea40KCd6LSmU6QFUgDA.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*Sy3ea40KCd6LSmU6QFUgDA.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*Sy3ea40KCd6LSmU6QFUgDA.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*Sy3ea40KCd6LSmU6QFUgDA.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*Sy3ea40KCd6LSmU6QFUgDA.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*Sy3ea40KCd6LSmU6QFUgDA.png 1100w, https://miro.medium.com/v2/resize:fit:2000/format:webp/1*Sy3ea40KCd6LSmU6QFUgDA.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/1*Sy3ea40KCd6LSmU6QFUgDA.png 640w, https://miro.medium.com/v2/resize:fit:720/1*Sy3ea40KCd6LSmU6QFUgDA.png 720w, https://miro.medium.com/v2/resize:fit:750/1*Sy3ea40KCd6LSmU6QFUgDA.png 750w, https://miro.medium.com/v2/resize:fit:786/1*Sy3ea40KCd6LSmU6QFUgDA.png 786w, https://miro.medium.com/v2/resize:fit:828/1*Sy3ea40KCd6LSmU6QFUgDA.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*Sy3ea40KCd6LSmU6QFUgDA.png 1100w, https://miro.medium.com/v2/resize:fit:2000/1*Sy3ea40KCd6LSmU6QFUgDA.png 2000w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 1000px"/><img alt="" class="bh hp hq c" width="1000" height="298" loading="eager" role="presentation"/></picture></div></div></figure></div></div></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div><h1 id="8c97" class="pw-post-title hr hs ht bf hu hv hw hx hy hz ia ib ic id ie if ig ih ii ij ik il im in io ip bk" data-testid="storyTitle">Now in Android #111</h1></div><div><h2 id="c5b8" class="pw-subtitle-paragraph iq hs ht bf b ir is it iu iv iw ix iy iz ja jb jc jd je jf cq du"><a class="af jg" href="https://android-developers.googleblog.com/2024/10/whats-new-in-google-play.html" rel="noopener ugc nofollow" target="_blank">Android API level and schedule updates</a>, <a class="af jg" href="http://android-developers.googleblog.com/2024/10/whats-new-in-gemini-in-android.html" rel="noopener ugc nofollow" target="_blank">Gemini in Android Studio</a>,<a class="af jg" href="http://android-developers.googleblog.com/2024/10/whats-new-in-google-play.html" rel="noopener ugc nofollow" target="_blank"> Google Play</a>, Spotlight weeks on <a class="af jg" href="http://android-developers.googleblog.com/2024/10/adaptive-spotlight-week.html" rel="noopener ugc nofollow" target="_blank">Adaptive Android Apps</a> and <a class="af jg" href="http://android-developers.googleblog.com/2024/09/welcome-to-ai-on-android-spotlight-week.html" rel="noopener ugc nofollow" target="_blank">Android AI</a>, <a class="af jg" href="http://android-developers.googleblog.com/2024/10/camerax-update-makes-dual-concurrent-camera-easier.html" rel="noopener ugc nofollow" target="_blank">concurrent CameraX</a>, <a class="af jg" href="http://android-developers.googleblog.com/2024/10/creating-responsive-dashboard-layout-for-jetlagged-jetpack-compose.html" rel="noopener ugc nofollow" target="_blank">responsive layout</a>, <a class="af jg" href="https://www.youtube.com/watch?v=qP-ieASbqMY" rel="noopener ugc nofollow" target="_blank">lazy grids</a>, and <a class="af jg" href="https://www.youtube.com/watch?v=JYtLy4V2x-A" rel="noopener ugc nofollow" target="_blank">AnchoredDraggable</a> in Jetpack Compose, <a class="af jg" href="https://www.youtube.com/watch?v=MwoRPPzeLtA" rel="noopener ugc nofollow" target="_blank">KMP in Room</a></h2><div><div class="speechify-ignore ab cp"><div class="speechify-ignore bh l"><div class="jh ji jj jk jl ab"><div><div class="ab jm"><div><div class="bm" aria-hidden="false"><a rel="noopener follow" href="/@dagalpin?source=post_page---byline--9c60a12a8473--------------------------------"><div class="l jn jo by jp jq"><div class="l fj"><img alt="Daniel Galpin" class="l fd by dd de cx" src="https://miro.medium.com/v2/resize:fill:88:88/1*9j85cICWzDQeY8Nb4QrL4Q.jpeg" width="44" height="44" loading="lazy" data-testid="authorPhoto"/><div class="jr by l dd de fs n js ft"></div></div></div></a></div></div><div class="jt ab fj"><div><div class="bm" aria-hidden="false"><a href="https://medium.com/androiddevelopers?source=post_page---byline--9c60a12a8473--------------------------------" rel="noopener follow"><div class="l ju jv by jp jw"><div class="l fj"><img alt="Android Developers" class="l fd by br jx cx" src="https://miro.medium.com/v2/resize:fill:48:48/1*4Tg6pPzer7cIarYaszIKaQ.png" width="24" height="24" loading="lazy" data-testid="publicationPhoto"/><div class="jr by l br jx fs n js ft"></div></div></div></a></div></div></div></div></div><div class="bn bh l"><div class="ab"><div style="flex:1"><span class="bf b bg z bk"><div class="jy ab q"><div class="ab q jz"><div class="ab q"><div><div class="bm" aria-hidden="false"><p class="bf b ka kb bk"><a class="af ag ah ai aj ak al am an ao ap aq ar kc" data-testid="authorName" rel="noopener follow" href="/@dagalpin?source=post_page---byline--9c60a12a8473--------------------------------">Daniel Galpin</a></p></div></div></div><span class="kd ke" aria-hidden="true"><span class="bf b bg z du">·</span></span><p class="bf b ka kb du"><span><a class="kf kg ah ai aj ak al am an ao ap aq ar ex kh ki" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2F2e0fc9a4a8c2&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-111-9c60a12a8473&amp;user=Daniel+Galpin&amp;userId=2e0fc9a4a8c2&amp;source=post_page-2e0fc9a4a8c2--byline--9c60a12a8473---------------------post_header-----------">Follow</a></span></p></div></div></span></div></div><div class="l kj"><span class="bf b bg z du"><div class="ab cn kk kl km"><div class="kn ko ab"><div class="bf b bg z du ab kp"><span class="kq l kj">Published in</span><div><div class="l" aria-hidden="false"><a class="af ag ah ai aj ak al am an ao ap aq ar kc ab q" data-testid="publicationName" href="https://medium.com/androiddevelopers?source=post_page---byline--9c60a12a8473--------------------------------" rel="noopener follow"><p class="bf b bg z kr ks kt ku kv kw kx ky bk">Android Developers</p></a></div></div></div><div class="h k"><span class="kd ke" aria-hidden="true"><span class="bf b bg z du">·</span></span></div></div><span class="bf b bg z du"><div class="ab ae"><span data-testid="storyReadTime">9 min read</span><div class="kz la l" aria-hidden="true"><span class="l" aria-hidden="true"><span class="bf b bg z du">·</span></span></div><span data-testid="storyPublishDate">Nov 7, 2024</span></div></span></div></span></div></div></div><div class="ab cp lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq"><div class="h k w fg fh q"><div class="mg l"><div class="ab q mh mi"><div class="pw-multi-vote-icon fj kq mj mk ml"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerClapButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fandroiddevelopers%2F9c60a12a8473&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-111-9c60a12a8473&amp;user=Daniel+Galpin&amp;userId=2e0fc9a4a8c2&amp;source=---header_actions--9c60a12a8473---------------------clap_footer-----------"><div><div class="bm" aria-hidden="false"><div class="mm ao mn mo mp mq am mr ms mt ml"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l mu mv mw mx my mz na"><p class="bf b dv z du"><span class="nb">--</span></p></div></div></div><div><div class="bm" aria-hidden="false"><button class="ao mm nc nd ab q fk ne nf" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="ng"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg></button></div></div></div><div class="ab q lr ls lt lu lv lw lx ly lz ma mb mc md me mf"><div class="nh k j i d"></div><div class="h k"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerBookmarkButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F9c60a12a8473&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-111-9c60a12a8473&amp;source=---header_actions--9c60a12a8473---------------------bookmark_footer-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du ni" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="fd nj cn"><div class="l ae"><div class="ab cb"><div class="gt gv gx nk nl hp ci bh"><div class="ab"><div class="bm bh" aria-hidden="false"><div><div class="bm" aria-hidden="false"><button aria-label="Listen" data-testid="audioPlayButton" class="af fk ah ai aj ak al nm an ao ap ex nn no nf np nq nr ns nt s nu nv nw nx ny nz oa u ob oc od"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M3 12a9 9 0 1 1 18 0 9 9 0 0 1-18 0m9-10C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m3.376 10.416-4.599 3.066a.5.5 0 0 1-.777-.416V8.934a.5.5 0 0 1 .777-.416l4.599 3.066a.5.5 0 0 1 0 .832" clip-rule="evenodd"></path></svg><div class="j i d"><p class="bf b bg z du">Listen</p></div></button></div></div></div></div></div></div></div></div><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="headerSocialShareButton" class="af fk ah ai aj ak al nm an ao ap ex nn no nf np nq nr ns nt s nu nv nw nx ny nz oa u ob oc od"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg><div class="j i d"><p class="bf b bg z du">Share</p></div></button></div></div></div></div></div></div></div></div></div><p id="5a1f" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">Welcome to the 111th iteration of Now in Android: your ongoing guide to what’s new and notable in the world of Android development.</p><figure class="pa pb pc pd pe gs"><div class="pf kr l fj"><div class="pg ph l"></div></div></figure><figure class="pa pb pc pd pe gs"><div class="pf kr l fj"><div class="pi ph l"></div></div></figure><p id="a52b" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">Most of the content of this post is available in the form of a <a class="af jg" href="https://youtu.be/WRzkRWxBAZU" rel="noopener ugc nofollow" target="_blank">video</a> or <a class="af jg" href="https://nowinandroid.libsyn.com/111-android-api-level-and-schedule-updates-gemini-in-android-studio-google-play" rel="noopener ugc nofollow" target="_blank">podcast</a>, so feel free to <a class="af jg" href="https://youtu.be/WRzkRWxBAZU" rel="noopener ugc nofollow" target="_blank">watch</a> or <a class="af jg" href="https://nowinandroid.libsyn.com/111-android-api-level-and-schedule-updates-gemini-in-android-studio-google-play" rel="noopener ugc nofollow" target="_blank">listen</a> rather than read on. (Or do all three to help you remember! There won’t be a quiz.)</p></div></div></div><div class="ab cb pj pk pl pm" role="separator"><span class="pn by bm po pp pq"></span><span class="pn by bm po pp pq"></span><span class="pn by bm po pp"></span></div><div class="gn go gp gq gr"><div class="ab cb"><div class="ci bh fz ga gb gc"><figure class="pa pb pc pd pe gs hb hc paragraph-image"><div role="button" tabindex="0" class="hl hm fj hn bh ho"><div class="hb hc pr"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*cmP29BzXGIzpYriB 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*cmP29BzXGIzpYriB 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*cmP29BzXGIzpYriB 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*cmP29BzXGIzpYriB 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*cmP29BzXGIzpYriB 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*cmP29BzXGIzpYriB 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/0*cmP29BzXGIzpYriB 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*cmP29BzXGIzpYriB 640w, https://miro.medium.com/v2/resize:fit:720/0*cmP29BzXGIzpYriB 720w, https://miro.medium.com/v2/resize:fit:750/0*cmP29BzXGIzpYriB 750w, https://miro.medium.com/v2/resize:fit:786/0*cmP29BzXGIzpYriB 786w, https://miro.medium.com/v2/resize:fit:828/0*cmP29BzXGIzpYriB 828w, https://miro.medium.com/v2/resize:fit:1100/0*cmP29BzXGIzpYriB 1100w, https://miro.medium.com/v2/resize:fit:1400/0*cmP29BzXGIzpYriB 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh hp hq c" width="700" height="209" loading="eager" role="presentation"/></picture></div></div></figure><h1 id="b2f1" class="ps pt ht bf pu pv pw it px py pz iw qa qb qc qd qe qf qg qh qi qj qk ql qm qn bk"><a class="af jg" href="http://android-developers.googleblog.com/2024/10/android-sdk-release-update.html" rel="noopener ugc nofollow" target="_blank">More frequent Android API releases and schedule updates</a> 🤖🤖</h1><p id="54ba" class="pw-post-body-paragraph oe of ht og b ir qo oi oj iu qp ol om on qq op oq or qr ot ou ov qs ox oy oz gn bk">Android API level updates are becoming more frequent and streamlined. In 2025, there will be a major API release in Q2 and a minor API release in Q4, with the goal of delivering you more polished and innovative APIs faster. The minor release in Q4 will include new APIs, but, like the incremental quarterly releases we have today, will have no planned behavior changes, minimizing the need for compatibility testing against that version.</p><p id="c9de" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">We’ve also moved the major release forward one quarter to Q2 of 2025 to better align with the schedules of major Android OEMs, ensuring that more devices receive the latest updates sooner than before. You should adjust annual compatibility testing schedules accordingly to prepare for this change. We’ll soon begin the developer preview and beta program for the Q2 2025 major release so you can begin testing, including changes we’ve made to the SDK to support minor API levels.</p><div class="qt qu qv qw qx qy"><a href="http://android-developers.googleblog.com/2024/10/android-sdk-release-update.html?source=post_page-----9c60a12a8473--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qz ab kj"><div class="ra ab co cb rb rc"><h2 class="bf hu ka z kr rd kt ku re kw ky hs bk">More frequent Android SDK releases: faster innovation, higher quality and more polish</h2><div class="rf l"><h3 class="bf b ka z kr rd kt ku re kw ky du">To drive faster innovation in apps and devices, Android will have a major release in Q2 to include behavior changes…</h3></div><div class="rg l"><p class="bf b dv z kr rd kt ku re kw ky du">android-developers.googleblog.com</p></div></div><div class="rh l"><div class="ri l rj rk rl rh rm hp qy"></div></div></div></a></div><figure class="pa pb pc pd pe gs hb hc paragraph-image"><div role="button" tabindex="0" class="hl hm fj hn bh ho"><div class="hb hc rn"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*yjcvbZMUwWBMyBCj 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*yjcvbZMUwWBMyBCj 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*yjcvbZMUwWBMyBCj 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*yjcvbZMUwWBMyBCj 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*yjcvbZMUwWBMyBCj 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*yjcvbZMUwWBMyBCj 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/0*yjcvbZMUwWBMyBCj 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*yjcvbZMUwWBMyBCj 640w, https://miro.medium.com/v2/resize:fit:720/0*yjcvbZMUwWBMyBCj 720w, https://miro.medium.com/v2/resize:fit:750/0*yjcvbZMUwWBMyBCj 750w, https://miro.medium.com/v2/resize:fit:786/0*yjcvbZMUwWBMyBCj 786w, https://miro.medium.com/v2/resize:fit:828/0*yjcvbZMUwWBMyBCj 828w, https://miro.medium.com/v2/resize:fit:1100/0*yjcvbZMUwWBMyBCj 1100w, https://miro.medium.com/v2/resize:fit:1400/0*yjcvbZMUwWBMyBCj 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh hp hq c" width="700" height="394" loading="lazy" role="presentation"/></picture></div></div></figure><h1 id="4a2d" class="ps pt ht bf pu pv pw it px py pz iw qa qb qc qd qe qf qg qh qi qj qk ql qm qn bk"><a class="af jg" href="http://android-developers.googleblog.com/2024/10/whats-new-in-gemini-in-android.html" rel="noopener ugc nofollow" target="_blank">Gemini in Android Studio, now helping you across the development lifecycle</a> ♊</h1><p id="a8c8" class="pw-post-body-paragraph oe of ht og b ir qo oi oj iu qp ol om on qq op oq or qr ot ou ov qs ox oy oz gn bk">Android Studio’s Gemini AI assistant can now write, refactor, and document code, as well as generate unit test scenarios, analyze build errors, and provide insights for crash reports. It has been integrated into Compose workflows, simplifying the visualization of composables during design time.</p><p id="7bda" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">These features are available in the Android Studio canary channel and will be released in the upcoming Ladybug Feature Drop, along with other enhancements.</p><div class="qt qu qv qw qx qy"><a href="http://android-developers.googleblog.com/2024/10/whats-new-in-gemini-in-android.html?source=post_page-----9c60a12a8473--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qz ab kj"><div class="ra ab co cb rb rc"><h2 class="bf hu ka z kr rd kt ku re kw ky hs bk">Gemini in Android Studio, now helping you across the development lifecycle</h2><div class="rf l"><h3 class="bf b ka z kr rd kt ku re kw ky du">New Android Studio features empower devs with AI assistance across the development lifecycle, from coding and UI design…</h3></div><div class="rg l"><p class="bf b dv z kr rd kt ku re kw ky du">android-developers.googleblog.com</p></div></div><div class="rh l"><div class="ro l rj rk rl rh rm hp qy"></div></div></div></a></div><figure class="pa pb pc pd pe gs hb hc paragraph-image"><div role="button" tabindex="0" class="hl hm fj hn bh ho"><div class="hb hc pr"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*K2We86SDh3Yk8kGD 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*K2We86SDh3Yk8kGD 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*K2We86SDh3Yk8kGD 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*K2We86SDh3Yk8kGD 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*K2We86SDh3Yk8kGD 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*K2We86SDh3Yk8kGD 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/0*K2We86SDh3Yk8kGD 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*K2We86SDh3Yk8kGD 640w, https://miro.medium.com/v2/resize:fit:720/0*K2We86SDh3Yk8kGD 720w, https://miro.medium.com/v2/resize:fit:750/0*K2We86SDh3Yk8kGD 750w, https://miro.medium.com/v2/resize:fit:786/0*K2We86SDh3Yk8kGD 786w, https://miro.medium.com/v2/resize:fit:828/0*K2We86SDh3Yk8kGD 828w, https://miro.medium.com/v2/resize:fit:1100/0*K2We86SDh3Yk8kGD 1100w, https://miro.medium.com/v2/resize:fit:1400/0*K2We86SDh3Yk8kGD 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh hp hq c" width="700" height="209" loading="lazy" role="presentation"/></picture></div></div></figure><h1 id="1f03" class="ps pt ht bf pu pv pw it px py pz iw qa qb qc qd qe qf qg qh qi qj qk ql qm qn bk"><a class="af jg" href="http://android-developers.googleblog.com/2024/10/whats-new-in-google-play.html" rel="noopener ugc nofollow" target="_blank">Updates to power your growth on Google Play</a> ▶️</h1><p id="8d4c" class="pw-post-body-paragraph oe of ht og b ir qo oi oj iu qp ol om on qq op oq or qr ot ou ov qs ox oy oz gn bk">Google Play shared new ways to grow your audience, optimize revenue, and protect your business.</p><p id="e33b" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">To help with <strong class="og hu">discovery</strong>, Google Play added full-screen portrait videos on Play Store listings, personalized query recommendations, and a user selection around interests for app and game recommendations.</p><p id="4dc8" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">To help with <strong class="og hu">commerce</strong>, Google Play is proactively encouraging payment setup, expanding payment options, providing algorithmic recommendations for in-app purchases, sending cart abandonment reminders, and increasing the adoption of biometric verification for faster and more secure checkouts.</p><p id="69bf" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">To help with <strong class="og hu">security</strong>, the <strong class="og hu">Play Integrity API</strong> will soon support hardware-backed security signals for improved API verdicts on supported Android 13+ devices, along with a New app access risk feature that detects and responds to apps that can capture the screen or control the device.</p><div class="qt qu qv qw qx qy"><a href="http://android-developers.googleblog.com/2024/10/whats-new-in-google-play.html?source=post_page-----9c60a12a8473--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qz ab kj"><div class="ra ab co cb rb rc"><h2 class="bf hu ka z kr rd kt ku re kw ky hs bk">Updates to power your growth on Google Play</h2><div class="rf l"><h3 class="bf b ka z kr rd kt ku re kw ky du">Google Play is releasing new features to help developers reach a wider audience, optimize revenue, and reinforce trust…</h3></div><div class="rg l"><p class="bf b dv z kr rd kt ku re kw ky du">android-developers.googleblog.com</p></div></div><div class="rh l"><div class="rp l rj rk rl rh rm hp qy"></div></div></div></a></div><h1 id="0958" class="ps pt ht bf pu pv pw it px py pz iw qa qb qc qd qe qf qg qh qi qj qk ql qm qn bk"><a class="af jg" href="http://android-developers.googleblog.com/2024/10/adaptive-spotlight-week.html" rel="noopener ugc nofollow" target="_blank">Spotlight Week: Adaptive Android Apps</a> 🔦💻</h1><figure class="pa pb pc pd pe gs hb hc paragraph-image"><div role="button" tabindex="0" class="hl hm fj hn bh ho"><div class="hb hc pr"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*AeJkhuHWi4cwcLav 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*AeJkhuHWi4cwcLav 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*AeJkhuHWi4cwcLav 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*AeJkhuHWi4cwcLav 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*AeJkhuHWi4cwcLav 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*AeJkhuHWi4cwcLav 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/0*AeJkhuHWi4cwcLav 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*AeJkhuHWi4cwcLav 640w, https://miro.medium.com/v2/resize:fit:720/0*AeJkhuHWi4cwcLav 720w, https://miro.medium.com/v2/resize:fit:750/0*AeJkhuHWi4cwcLav 750w, https://miro.medium.com/v2/resize:fit:786/0*AeJkhuHWi4cwcLav 786w, https://miro.medium.com/v2/resize:fit:828/0*AeJkhuHWi4cwcLav 828w, https://miro.medium.com/v2/resize:fit:1100/0*AeJkhuHWi4cwcLav 1100w, https://miro.medium.com/v2/resize:fit:1400/0*AeJkhuHWi4cwcLav 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh hp hq c" width="700" height="210" loading="lazy" role="presentation"/></picture></div></div></figure><p id="c1c7" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">The Adaptive spotlight week covered <a class="af jg" href="https://developer.android.com/adaptive-apps" rel="noopener ugc nofollow" target="_blank">new documentation</a> for building adaptive apps, the <a class="af jg" href="https://io.google/2024/explore/2dff9b4c-4069-4bde-ab9a-c5f53dc0fdb8/" rel="noopener ugc nofollow" target="_blank">Material 3 adaptive library</a>, the <a class="af jg" href="https://android-developers.googleblog.com/2024/09/developer-preview-desktop-windowing-on-android-tablets.html" rel="noopener ugc nofollow" target="_blank">Developer Preview of Desktop windowing on Android Tablets</a>, <a class="af jg" href="https://www.youtube.com/watch?v=PUxtjQWJj6A" rel="noopener ugc nofollow" target="_blank">Custom Adaptive layouts in Compose</a>, the new <a class="af jg" href="https://developer.android.com/productivity" rel="noopener ugc nofollow" target="_blank">productivity app developer center</a>, <a class="af jg" href="http://android-developers.googleblog.com/2024/10/creating-responsive-dashboard-layout-for-jetlagged-jetpack-compose.html" rel="noopener ugc nofollow" target="_blank">responsive layouts in the JetLagged sample</a>, <a class="af jg" href="https://android-developers.googleblog.com/2024/10/introducing-ink-api-jetpack-library.html" rel="noopener ugc nofollow" target="_blank">the new Ink API</a>, and finished with an <a class="af jg" href="https://www.youtube.com/live/rFmyljhUxEY?si=ysRQp3_rBHEvvi0x" rel="noopener ugc nofollow" target="_blank">Adaptive #AskAndroid</a> segment. With Android powering foldables, tablets, ChromeOS, and <a class="af jg" href="https://android-developers.googleblog.com/2024/05/android-for-cars-bringing-more-apps-to-cars.html" rel="noopener ugc nofollow" target="_blank">cars</a>, it’s time to consider building adaptive.</p><div class="qt qu qv qw qx qy"><a href="http://android-developers.googleblog.com/2024/10/adaptive-spotlight-week.html?source=post_page-----9c60a12a8473--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qz ab kj"><div class="ra ab co cb rb rc"><h2 class="bf hu ka z kr rd kt ku re kw ky hs bk">Here&#x27;s what happening in our latest Spotlight Week: Adaptive Android Apps</h2><div class="rf l"><h3 class="bf b ka z kr rd kt ku re kw ky du">Best practices for building Android apps across devices - adaptive layouts, Compose, desktop windowing, stylus input …</h3></div><div class="rg l"><p class="bf b dv z kr rd kt ku re kw ky du">android-developers.googleblog.com</p></div></div><div class="rh l"><div class="rq l rj rk rl rh rm hp qy"></div></div></div></a></div><h1 id="0fd3" class="ps pt ht bf pu pv pw it px py pz iw qa qb qc qd qe qf qg qh qi qj qk ql qm qn bk"><a class="af jg" href="http://android-developers.googleblog.com/2024/09/welcome-to-ai-on-android-spotlight-week.html" rel="noopener ugc nofollow" target="_blank">Spotlight week: AI on Android</a> 🔦🤖🧠</h1><figure class="pa pb pc pd pe gs hb hc paragraph-image"><div role="button" tabindex="0" class="hl hm fj hn bh ho"><div class="hb hc pr"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/0*Ba2zUDET_AvRTTe3 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/0*Ba2zUDET_AvRTTe3 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/0*Ba2zUDET_AvRTTe3 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/0*Ba2zUDET_AvRTTe3 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/0*Ba2zUDET_AvRTTe3 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/0*Ba2zUDET_AvRTTe3 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/0*Ba2zUDET_AvRTTe3 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" type="image/webp"/><source data-testid="og" srcSet="https://miro.medium.com/v2/resize:fit:640/0*Ba2zUDET_AvRTTe3 640w, https://miro.medium.com/v2/resize:fit:720/0*Ba2zUDET_AvRTTe3 720w, https://miro.medium.com/v2/resize:fit:750/0*Ba2zUDET_AvRTTe3 750w, https://miro.medium.com/v2/resize:fit:786/0*Ba2zUDET_AvRTTe3 786w, https://miro.medium.com/v2/resize:fit:828/0*Ba2zUDET_AvRTTe3 828w, https://miro.medium.com/v2/resize:fit:1100/0*Ba2zUDET_AvRTTe3 1100w, https://miro.medium.com/v2/resize:fit:1400/0*Ba2zUDET_AvRTTe3 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/><img alt="" class="bh hp hq c" width="700" height="209" loading="lazy" role="presentation"/></picture></div></div></figure><p id="0dea" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">The future of Android is rooted in AI and machine learning, and the Android AI Spotlight Week shared a wealth of resources around the latest in AI and its potential for Android app development.</p><p id="6105" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">The week began with <a class="af jg" href="https://android-developers.googleblog.com/2024/09/introduction-to-large-language-models-for-android-developers.html" rel="noopener ugc nofollow" target="_blank">A quick introduction to large language models for Android Developers</a>, discussed Studio’s new <a class="af jg" href="https://android-developers.googleblog.com/2024/09/gemini-android-studio-code-completion-model-improvements.html" rel="noopener ugc nofollow" target="_blank">Gemini-powered code completion</a>, announced <a class="af jg" href="https://android-developers.googleblog.com/2024/10/gemini-nano-experimental-access-available-on-android.html" rel="noopener ugc nofollow" target="_blank">experimental developer access to the latest version of Gemini Nano</a>, gave <a class="af jg" href="https://android-developers.googleblog.com/2024/10/introduction-to-privacy-and-safety-gemini-nano.html" rel="noopener ugc nofollow" target="_blank">an Introduction to Privacy and Safety for Gemini Nano</a>, and walked through <a class="af jg" href="https://youtu.be/EpKghZYqVW4" rel="noopener ugc nofollow" target="_blank">Android’s on-device GenAI solutions</a>.</p><p id="fa61" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">The week continued with <a class="af jg" href="https://android-developers.googleblog.com/2024/10/bring-your-ai-model-to-android-devices.html" rel="noopener ugc nofollow" target="_blank">bringing your own AI model to Android devices</a>, and <a class="af jg" href="https://android-developers.googleblog.com/2024/10/pytorch-machine-learning-models-on-android.html" rel="noopener ugc nofollow" target="_blank">PyTorch Machine Learning Models on Android</a>. It went into utilizing cloud models to <a class="af jg" href="https://developer.android.com/codelabs/gemini-summarize#0" rel="noopener ugc nofollow" target="_blank">add Gemini capabilities to your Android app</a>, including a showcase of the <a class="af jg" href="https://android-developers.googleblog.com/2024/10/gemini-api-showcase-of-innovative-android-apps.html" rel="noopener ugc nofollow" target="_blank">Gemini API in Action</a>, and an <a class="af jg" href="https://www.youtube.com/watch?v=DDN2pJ0SzNw" rel="noopener ugc nofollow" target="_blank">interview with a developer of the Life journaling app</a> that utilized Gemini through Vertex AI in Firebase to help users log entries.</p><p id="139b" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">The week finished with a discussion about <a class="af jg" href="https://youtu.be/o1wY5vnNVCc?si=FQbKfGdJdbTwnjJP" rel="noopener ugc nofollow" target="_blank">Building with AI on Android and beyond</a>.</p><div class="qt qu qv qw qx qy"><a href="http://android-developers.googleblog.com/2024/09/welcome-to-ai-on-android-spotlight-week.html?source=post_page-----9c60a12a8473--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qz ab kj"><div class="ra ab co cb rb rc"><h2 class="bf hu ka z kr rd kt ku re kw ky hs bk">Welcome to AI on Android Spotlight Week</h2><div class="rf l"><h3 class="bf b ka z kr rd kt ku re kw ky du">We&#x27;re highlighting the core technologies driving AI experiences on Android, including on-device generative AI…</h3></div><div class="rg l"><p class="bf b dv z kr rd kt ku re kw ky du">android-developers.googleblog.com</p></div></div><div class="rh l"><div class="rr l rj rk rl rh rm hp qy"></div></div></div></a></div><h1 id="a3bb" class="ps pt ht bf pu pv pw it px py pz iw qa qb qc qd qe qf qg qh qi qj qk ql qm qn bk"><a class="af jg" href="https://android-developers.googleblog.com/" rel="noopener ugc nofollow" target="_blank">Android Developers blog</a> 📝</h1><h2 id="9f1c" class="rs pt ht bf pu rt ru dy px rv rw ea qa on rx ry rz or sa sb sc ov sd se sf sg bk"><a class="af jg" href="http://android-developers.googleblog.com/2024/10/camerax-update-makes-dual-concurrent-camera-easier.html" rel="noopener ugc nofollow" target="_blank">CameraX update makes dual concurrent camera even easier</a> 📷</h2><p id="cfd3" class="pw-post-body-paragraph oe of ht og b ir qo oi oj iu qp ol om on qq op oq or qr ot ou ov qs ox oy oz gn bk">Donovan covers how <a class="af jg" href="https://developer.android.com/media/camera/camerax" rel="noopener ugc nofollow" target="_blank">CameraX</a>, Android’s Jetpack camera library will now handle the composition of dual concurrent camera streams starting with version <a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/camera#1.5.0-alpha01" rel="noopener ugc nofollow" target="_blank">1.5.0-alpha01</a>, making the feature easier to support. To tell CameraX to handle the composition, you use the <a class="af jg" href="https://developer.android.com/reference/androidx/camera/core/ConcurrentCamera.SingleCameraConfig#SingleCameraConfig%28androidx.camera.core.CameraSelector,androidx.camera.core.UseCaseGroup,androidx.camera.core.CompositionSettings,androidx.lifecycle.LifecycleOwner%29" rel="noopener ugc nofollow" target="_blank">new SingleCameraConfig constructor</a> which has a new parameter for a <a class="af jg" href="https://developer.android.com/reference/androidx/camera/core/CompositionSettings" rel="noopener ugc nofollow" target="_blank">CompositionSettings</a> object.</p><div class="qt qu qv qw qx qy"><a href="http://android-developers.googleblog.com/2024/10/camerax-update-makes-dual-concurrent-camera-easier.html?source=post_page-----9c60a12a8473--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qz ab kj"><div class="ra ab co cb rb rc"><h2 class="bf hu ka z kr rd kt ku re kw ky hs bk">CameraX update makes dual concurrent camera even easier</h2><div class="rf l"><h3 class="bf b ka z kr rd kt ku re kw ky du">CameraX&#x27;s Dual Concurrent Camera feature is now updated, making it easier to integrate into apps, offering developers…</h3></div><div class="rg l"><p class="bf b dv z kr rd kt ku re kw ky du">android-developers.googleblog.com</p></div></div><div class="rh l"><div class="sh l rj rk rl rh rm hp qy"></div></div></div></a></div><h2 id="3c24" class="rs pt ht bf pu rt ru dy px rv rw ea qa on rx ry rz or sa sb sc ov sd se sf sg bk"><a class="af jg" href="http://android-developers.googleblog.com/2024/10/chrome-3p-autofill-services.html" rel="noopener ugc nofollow" target="_blank">Chrome on Android to support third-party autofill services natively</a> ✏️</h2><p id="0843" class="pw-post-body-paragraph oe of ht og b ir qo oi oj iu qp ol om on qq op oq or qr ot ou ov qs ox oy oz gn bk"><span class="ke"><span class="ke" aria-hidden="false"><a class="si kf fe" href="https://medium.com/u/ced0efd956da?source=post_page---user_mention--9c60a12a8473--------------------------------" rel="noopener" target="_blank">Eiji</a></span></span> wrote about how Chrome 131 and later support third-party autofill services (like password managers) without the existing compatibility mode to autofill forms on websites. Developers of these services need to tell their users to toggle a setting in Chrome to continue using their service with Chrome.</p><div class="qt qu qv qw qx qy"><a href="http://android-developers.googleblog.com/2024/10/chrome-3p-autofill-services.html?source=post_page-----9c60a12a8473--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qz ab kj"><div class="ra ab co cb rb rc"><h2 class="bf hu ka z kr rd kt ku re kw ky hs bk">Chrome on Android to support third-party autofill services natively</h2><div class="rf l"><h3 class="bf b ka z kr rd kt ku re kw ky du">Chrome on Android will soon natively support third-party autofill services, providing a smoother user experience.</h3></div><div class="rg l"><p class="bf b dv z kr rd kt ku re kw ky du">android-developers.googleblog.com</p></div></div><div class="rh l"><div class="sj l rj rk rl rh rm hp qy"></div></div></div></a></div><h2 id="8829" class="rs pt ht bf pu rt ru dy px rv rw ea qa on rx ry rz or sa sb sc ov sd se sf sg bk"><a class="af jg" href="http://android-developers.googleblog.com/2024/09/attestation-format-change-for-android-fido2-api.html" rel="noopener ugc nofollow" target="_blank">Attestation format change for the Android FIDO2 API</a> 🔑</h2><p id="c0c9" class="pw-post-body-paragraph oe of ht og b ir qo oi oj iu qp ol om on qq op oq or qr ot ou ov qs ox oy oz gn bk">Christiaan announced an upcoming change to the attestation format for the Android FIDO2 API, effective as of November 2024, with a mandatory switch to the new hardware-backed format in early April 2025 due to the deprecation of the SafetyNet API upon which the current attestation is based.</p><div class="qt qu qv qw qx qy"><a href="http://android-developers.googleblog.com/2024/09/attestation-format-change-for-android-fido2-api.html?source=post_page-----9c60a12a8473--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qz ab kj"><div class="ra ab co cb rb rc"><h2 class="bf hu ka z kr rd kt ku re kw ky hs bk">Attestation format change for the Android FIDO2 API</h2><div class="rf l"><h3 class="bf b ka z kr rd kt ku re kw ky du">Developers must update their apps to support the new attestation statement or migrate to the passkey API to ensure…</h3></div><div class="rg l"><p class="bf b dv z kr rd kt ku re kw ky du">android-developers.googleblog.com</p></div></div><div class="rh l"><div class="sk l rj rk rl rh rm hp qy"></div></div></div></a></div><h2 id="c49b" class="rs pt ht bf pu rt ru dy px rv rw ea qa on rx ry rz or sa sb sc ov sd se sf sg bk"><a class="af jg" href="http://android-developers.googleblog.com/2024/10/creating-responsive-dashboard-layout-for-jetlagged-jetpack-compose.html" rel="noopener ugc nofollow" target="_blank">Creating a responsive dashboard layout for JetLagged with Jetpack Compose</a> ✈️</h2><p id="1bb9" class="pw-post-body-paragraph oe of ht og b ir qo oi oj iu qp ol om on qq op oq or qr ot ou ov qs ox oy oz gn bk">Part of the Adaptive Spotlight week, <span class="ke"><span class="ke" aria-hidden="false"><a class="si kf fe" href="https://medium.com/u/3f9b9c30bec7?source=post_page---user_mention--9c60a12a8473--------------------------------" rel="noopener" target="_blank">Rebecca</a></span></span> wrote about how we used logic coupled with <a class="af jg" href="https://developer.android.com/guide/topics/large-screens/support-different-screen-sizes#window_size_classes" rel="noopener ugc nofollow" target="_blank">Window Size Classes</a>, <a class="af jg" href="https://developer.android.com/jetpack/compose/layouts/flow" rel="noopener ugc nofollow" target="_blank">Flow layouts</a>, <a class="af jg" href="https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary#movableContentOf%28kotlin.Function4%29" rel="noopener ugc nofollow" target="_blank">movableContentOf</a> and <a class="af jg" href="https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LookaheadScope" rel="noopener ugc nofollow" target="_blank">LookaheadScope</a>,to create a responsive dashboard-like layout in Jetpack Compose in the <a class="af jg" href="https://github.com/android/compose-samples/tree/main/JetLagged" rel="noopener ugc nofollow" target="_blank">JetLagged</a> sample with <a class="af jg" href="https://github.com/android/compose-samples/pull/1473" rel="noopener ugc nofollow" target="_blank">this pull request</a>.</p><div class="qt qu qv qw qx qy"><a href="http://android-developers.googleblog.com/2024/10/creating-responsive-dashboard-layout-for-jetlagged-jetpack-compose.html?source=post_page-----9c60a12a8473--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qz ab kj"><div class="ra ab co cb rb rc"><h2 class="bf hu ka z kr rd kt ku re kw ky hs bk">Creating a responsive dashboard layout for JetLagged with Jetpack Compose</h2><div class="rf l"><h3 class="bf b ka z kr rd kt ku re kw ky du">Use Flow layouts, WindowSizeClasses, movableContentOf, and LookaheadScope to achieve a fluid and adaptable UI that…</h3></div><div class="rg l"><p class="bf b dv z kr rd kt ku re kw ky du">android-developers.googleblog.com</p></div></div><div class="rh l"><div class="sl l rj rk rl rh rm hp qy"></div></div></div></a></div><h2 id="1297" class="rs pt ht bf pu rt ru dy px rv rw ea qa on rx ry rz or sa sb sc ov sd se sf sg bk">Inspiring developer stories 📰</h2><ul class=""><li id="ad85" class="oe of ht og b ir qo oi oj iu qp ol om on qq op oq or qr ot ou ov qs ox oy oz sm sn so bk"><span class="ke"><span class="ke" aria-hidden="false"><a class="si kf fe" href="https://medium.com/u/dc51d5f76a8d?source=post_page---user_mention--9c60a12a8473--------------------------------" rel="noopener" target="_blank">Miguel</a></span></span> covered how FlipaClip optimizing for large screens including stylus support and redesigning the large screen drawing area <a class="af jg" href="http://android-developers.googleblog.com/2024/10/flipaclip-optimizes-for-tablets-and-stylus.html" rel="noopener ugc nofollow" target="_blank">gave them a 54% increase in tablet users</a> over just four months.</li><li id="b43c" class="oe of ht og b ir sp oi oj iu sq ol om on sr op oq or ss ot ou ov st ox oy oz sm sn so bk">In the latest <a class="af jg" href="http://android-developers.googleblog.com/2024/10/weareplay-nomadher-helps-women-travel-the-world.html" rel="noopener ugc nofollow" target="_blank">#WeArePlay</a>, Robbie covers the developer behind NomadHer and the way she’s aiming to reshape how women explore the world by building a global community: sharing travel tips, prioritizing safety, and connecting with one another to explore new destinations.</li><li id="4d61" class="oe of ht og b ir sp oi oj iu sq ol om on sr op oq or ss ot ou ov st ox oy oz sm sn so bk"><span class="ke"><span class="ke" aria-hidden="false"><a class="si kf fe" href="https://medium.com/u/86643abac3e4?source=post_page---user_mention--9c60a12a8473--------------------------------" rel="noopener" target="_blank">Kseniia</a></span></span> <a class="af jg" href="https://android-developers.googleblog.com/2024/09/alltrails-gains-over-1-million-downloads-wear-os-app.html" rel="noopener ugc nofollow" target="_blank">covered</a> how <a class="af jg" href="https://play.google.com/store/apps/details?id=com.alltrails.alltrails&amp;hl=en_US" rel="noopener ugc nofollow" target="_blank">AllTrails</a> created a new <a class="af jg" href="http://d.android.com/wear" rel="noopener ugc nofollow" target="_blank">Wear OS</a> application that led to over 1 million downloads, including their use of Compose for WearOS and Health Connect.</li></ul><div class="qt qu qv qw qx qy"><a href="http://android-developers.googleblog.com/2024/10/flipaclip-optimizes-for-tablets-and-stylus.html?source=post_page-----9c60a12a8473--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qz ab kj"><div class="ra ab co cb rb rc"><h2 class="bf hu ka z kr rd kt ku re kw ky hs bk">FlipaClip optimizes for large screens and sees a 54% increase in tablet users</h2><div class="rf l"><h3 class="bf b ka z kr rd kt ku re kw ky du">FlipaClip, a 2D animation app, optimized its UX for large screens, focusing on stylus compatibility, customizable…</h3></div><div class="rg l"><p class="bf b dv z kr rd kt ku re kw ky du">android-developers.googleblog.com</p></div></div><div class="rh l"><div class="su l rj rk rl rh rm hp qy"></div></div></div></a></div><div class="qt qu qv qw qx qy"><a href="http://android-developers.googleblog.com/2024/10/weareplay-nomadher-helps-women-travel-the-world.html?source=post_page-----9c60a12a8473--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qz ab kj"><div class="ra ab co cb rb rc"><h2 class="bf hu ka z kr rd kt ku re kw ky hs bk">#WeArePlay | NomadHer helps women travel the world</h2><div class="rf l"><h3 class="bf b ka z kr rd kt ku re kw ky du">Meet Hyojeong from Busan, South Korea. NomadHer brings together a global community of women solo travelers, for safe…</h3></div><div class="rg l"><p class="bf b dv z kr rd kt ku re kw ky du">android-developers.googleblog.com</p></div></div><div class="rh l"><div class="sv l rj rk rl rh rm hp qy"></div></div></div></a></div><div class="qt qu qv qw qx qy"><a href="https://android-developers.googleblog.com/2024/09/alltrails-gains-over-1-million-downloads-wear-os-app.html?source=post_page-----9c60a12a8473--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qz ab kj"><div class="ra ab co cb rb rc"><h2 class="bf hu ka z kr rd kt ku re kw ky hs bk">AllTrails gains over 1 million downloads after implementing its Wear OS app</h2><div class="rf l"><h3 class="bf b ka z kr rd kt ku re kw ky du">AllTrails developers used Jetpack Compose for Wear OS to build the new wearable experience and integrated Health…</h3></div><div class="rg l"><p class="bf b dv z kr rd kt ku re kw ky du">android-developers.googleblog.com</p></div></div><div class="rh l"><div class="sw l rj rk rl rh rm hp qy"></div></div></div></a></div><h1 id="09c7" class="ps pt ht bf pu pv pw it px py pz iw qa qb qc qd qe qf qg qh qi qj qk ql qm qn bk"><a class="af jg" href="https://adbackstage.libsyn.com/episode-208-micro-optimizations" rel="noopener ugc nofollow" target="_blank">Android Developers Backstage</a>🎙️</h1><p id="e173" class="pw-post-body-paragraph oe of ht og b ir qo oi oj iu qp ol om on qq op oq or qr ot ou ov qs ox oy oz gn bk">In <a class="af jg" href="http://adbackstage.libsyn.com/episode-210-studio-jewelry" rel="noopener ugc nofollow" target="_blank">episode 210 of Android Developers Backstage</a> Chet, Romain and Tor chat with Sebastiano about how the Android Studio team builds UIs, covering how Compose for Desktop is used in parts of Android Studio and how the Compose Markdown renderer available in the Jewel library makes Studio Bot tick.</p><p id="50e2" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">Listen to it in <a class="af jg" href="http://adbackstage.libsyn.com/episode-210-studio-jewelry" rel="noopener ugc nofollow" target="_blank">podcast</a> or <a class="af jg" href="https://www.youtube.com/watch?v=HmjKmoct3Ws" rel="noopener ugc nofollow" target="_blank">youtube</a> format.</p><figure class="pa pb pc pd pe gs"><div class="pf kr l fj"><div class="pi ph l"></div></div></figure><figure class="pa pb pc pd pe gs"><div class="pf kr l fj"><div class="pg ph l"></div></div></figure><h1 id="9db8" class="ps pt ht bf pu pv pw it px py pz iw qa qb qc qd qe qf qg qh qi qj qk ql qm qn bk"><a class="af jg" href="https://www.youtube.com/user/androiddevelopers" rel="noopener ugc nofollow" target="_blank">Videos</a> 📹</h1><p id="8ff6" class="pw-post-body-paragraph oe of ht og b ir qo oi oj iu qp ol om on qq op oq or qr ot ou ov qs ox oy oz gn bk"><a class="af jg" href="https://www.youtube.com/watch?v=iKTgKGeTRzg" rel="noopener ugc nofollow" target="_blank"><strong class="og hu">#TheAndroidShow</strong></a><strong class="og hu"> included a </strong>live Q&amp;A from Droidcon London, a <a class="af jg" href="https://www.youtube.com/watch?v=ZfIE-LATgH4" rel="noopener ugc nofollow" target="_blank">big update to Gemini in Android Studio</a>, <a class="af jg" href="https://www.youtube.com/watch?v=tU9-p4jME_w" rel="noopener ugc nofollow" target="_blank">coverage of the updated 2025 Android release schedule</a> including some of the internal tech that makes it possible, and more!</p><figure class="pa pb pc pd pe gs"><div class="pf kr l fj"><div class="pg ph l"></div></div></figure><p id="d00a" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">Google Play released the <a class="af jg" href="https://www.youtube.com/watch?v=EhSIqbR2K-c" rel="noopener ugc nofollow" target="_blank">October PolicyBytes</a>, where Paul covered policy updates around health and medical apps, health misinformation, medical device access, Health Connect by Android permissions, the enforcement process, user data protection, and other key updates.</p><figure class="pa pb pc pd pe gs"><div class="pf kr l fj"><div class="pg ph l"></div></div></figure><p id="e1db" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">Elif covered recent <a class="af jg" href="https://www.youtube.com/watch?v=MwoRPPzeLtA" rel="noopener ugc nofollow" target="_blank">Room renovations</a>, including Room’s support for Kotlin Multiplatform (KMP), allowing you to share database code across Android, iOS, macOS, and Linux. The talk covers getting started with Room KMP, and the basics of defining entities and queries.</p><figure class="pa pb pc pd pe gs"><div class="pf kr l fj"><div class="pg ph l"></div></div></figure><p id="2169" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">Simona explores <a class="af jg" href="https://www.youtube.com/watch?v=qP-ieASbqMY" rel="noopener ugc nofollow" target="_blank">lazy grids</a>, which provide a flexible alternative to using columns, especially for grids with multiple columns on larger screens.</p><figure class="pa pb pc pd pe gs"><div class="pf kr l fj"><div class="pg ph l"></div></div></figure><p id="f32d" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">Jossi dives into <a class="af jg" href="https://www.youtube.com/watch?v=JYtLy4V2x-A" rel="noopener ugc nofollow" target="_blank">AnchoredDraggable</a> and how it enables swiping or dragging a component between anchor points.</p><figure class="pa pb pc pd pe gs"><div class="pf kr l fj"><div class="pg ph l"></div></div></figure><p id="de51" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">We also covered how <a class="af jg" href="https://www.youtube.com/watch?v=peEbiF8PsT4" rel="noopener ugc nofollow" target="_blank">Spotify drives discovery &amp; engagement on and beyond the Play Store</a>.</p><figure class="pa pb pc pd pe gs"><div class="pf kr l fj"><div class="pg ph l"></div></div></figure><h1 id="7285" class="ps pt ht bf pu pv pw it px py pz iw qa qb qc qd qe qf qg qh qi qj qk ql qm qn bk"><a class="af jg" href="https://www.youtube.com/@AndroidDevelopers/shorts" rel="noopener ugc nofollow" target="_blank">Shorts ⏲️</a>📹</h1><p id="3cf5" class="pw-post-body-paragraph oe of ht og b ir qo oi oj iu qp ol om on qq op oq or qr ot ou ov qs ox oy oz gn bk">Elif covered setting up your environment for Room and KMP in the <a class="af jg" href="https://www.youtube.com/watch?v=ukqFbqL2uuM" rel="noopener ugc nofollow" target="_blank">Room renovations #short</a>.</p><figure class="pa pb pc pd pe gs"><div class="pf kr l fj"><div class="pg ph l"></div></div></figure><p id="7f79" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">Simona’s <a class="af jg" href="https://www.youtube.com/watch?v=uBmwECZdbpw" rel="noopener ugc nofollow" target="_blank">lazy grids #short</a> creates a landscape layout for portrait content by using lazy grids to expand the UI to multiple columns.</p><figure class="pa pb pc pd pe gs"><div class="pf kr l fj"><div class="pg ph l"></div></div></figure><p id="b5d7" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">Our <a class="af jg" href="https://www.youtube.com/watch?v=QyoL7QC5LHU" rel="noopener ugc nofollow" target="_blank">enable edge to edge short</a> is a very quick reminder to call <a class="af jg" href="https://developer.android.com/reference/kotlin/androidx/activity/ComponentActivity#(androidx.activity.ComponentActivity).enableEdgeToEdge(androidx.activity.SystemBarStyle,androidx.activity.SystemBarStyle)" rel="noopener ugc nofollow" target="_blank">enableEdgeToEdge</a> to get ready to target Android 15.</p><figure class="pa pb pc pd pe gs"><div class="pf kr l fj"><div class="pg ph l"></div></div></figure><h1 id="31a4" class="ps pt ht bf pu pv pw it px py pz iw qa qb qc qd qe qf qg qh qi qj qk ql qm qn bk"><a class="af jg" href="https://developer.android.com/get-started/codelabs" rel="noopener ugc nofollow" target="_blank">Codelabs 🥼🧪</a></h1><p id="83f1" class="pw-post-body-paragraph oe of ht og b ir qo oi oj iu qp ol om on qq op oq or qr ot ou ov qs ox oy oz gn bk">The <a class="af jg" href="https://developer.android.com/codelabs/large-screens/advanced-activity-embedding" rel="noopener ugc nofollow" target="_blank">advanced activity embedding</a> codelab covers a few newly-released features for activity embedding, including pane expansion, activity pinning, and full screen dialog dimming.</p><div class="qt qu qv qw qx qy"><a href="https://developer.android.com/codelabs/large-screens/advanced-activity-embedding?source=post_page-----9c60a12a8473--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qz ab kj"><div class="ra ab co cb rb rc"><h2 class="bf hu ka z kr rd kt ku re kw ky hs bk">Advanced activity embedding | Android Developers</h2><div class="rf l"><h3 class="bf b ka z kr rd kt ku re kw ky du">In this codelab you will learn how to use activity embedding&#x27;s newly added feature to improve app large screen…</h3></div><div class="rg l"><p class="bf b dv z kr rd kt ku re kw ky du">developer.android.com</p></div></div><div class="rh l"><div class="sx l rj rk rl rh rm hp qy"></div></div></div></a></div><p id="7313" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">The <a class="af jg" href="https://developer.android.com/codelabs/gemini-summarize" rel="noopener ugc nofollow" target="_blank">add Gemini capabilities to your Android app</a> codelab guides you through the process of adding summarization capabilities to the JetNews sample application using Vertex AI in Firebase and the Gemini API.</p><div class="qt qu qv qw qx qy"><a href="https://developer.android.com/codelabs/gemini-summarize?source=post_page-----9c60a12a8473--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qz ab kj"><div class="ra ab co cb rb rc"><h2 class="bf hu ka z kr rd kt ku re kw ky hs bk">Add Gemini capabilities to your Android app | Android Developers</h2><div class="rf l"><h3 class="bf b ka z kr rd kt ku re kw ky du">Learn how to add a simple Gemini API feature to an Android app with Vertex AI for Firebase.</h3></div><div class="rg l"><p class="bf b dv z kr rd kt ku re kw ky du">developer.android.com</p></div></div><div class="rh l"><div class="sy l rj rk rl rh rm hp qy"></div></div></div></a></div><h1 id="c8b2" class="ps pt ht bf pu pv pw it px py pz iw qa qb qc qd qe qf qg qh qi qj qk ql qm qn bk"><a class="af jg" href="https://developer.android.com/jetpack/androidx/versions/all-channel" rel="noopener ugc nofollow" target="_blank">AndroidX Releases</a> 🚀</h1><p id="96f5" class="pw-post-body-paragraph oe of ht og b ir qo oi oj iu qp ol om on qq op oq or qr ot ou ov qs ox oy oz gn bk">The <a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/compose-material3#1.4.0-alpha01" rel="noopener ugc nofollow" target="_blank">first alpha of material 3 1.4</a> includes behavior changes, including Material 3 components using the new MotionScheme to define their motion, updated colors, and more. New features include wavy progress indicators, support for emphasized type scales, SplitButton shape morphs, and lots, lots, more.</p><p id="f9a5" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">The <a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/navigation#2.9.0-alpha01" rel="noopener ugc nofollow" target="_blank">first alpha of navigation 2.9</a> supports custom navigators marking their destinations as implementing the SupportingPane interface, indicating to the NavController that these destinations will be shown alongside other destinations.</p><p id="eeec" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">We released <a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/ink#1.0.0-alpha01" rel="noopener ugc nofollow" target="_blank">the first alpha of Ink</a>, a modular and configurable library to make it easy to create, render, and manipulate beautiful ink strokes authored in your application.</p><p id="ac1c" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">ConstraintLayout <a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/constraintlayout#constraintlayout-2.2.0" rel="noopener ugc nofollow" target="_blank">moved to 2.2</a> and <a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/constraintlayout#1.1.0" rel="noopener ugc nofollow" target="_blank">core moved to 1.1</a>, fixing some interactions with SharedTransitionLayout and layout issues due to recomposition.</p><p id="ed69" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">We released the first alpha of <a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/credentials-registry#1.0.0-alpha01" rel="noopener ugc nofollow" target="_blank">credentials-registry</a>, allowing providers to pre-register credential metadata with Credential Manager which can be later surfaced to the user by the Credential Manager upon an incoming app request.</p><p id="a010" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">The<a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/games#4.0.0-alpha01" rel="noopener ugc nofollow" target="_blank"> first alpha of games 4.0 was released</a>, with many fixes and support for left-right keys in GameTextInput.</p><p id="2fb1" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">The first alpha of <a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.3.0-alpha01" rel="noopener ugc nofollow" target="_blank">wear-protolayout</a> and <a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/wear-tiles#1.5.0-alpha01" rel="noopener ugc nofollow" target="_blank">wear-tiles</a> were also released, with support for Roboto Flex, DynamicFormatter, and more.</p><h1 id="9da2" class="ps pt ht bf pu pv pw it px py pz iw qa qb qc qd qe qf qg qh qi qj qk ql qm qn bk">Now then… 👋</h1><p id="0b5b" class="pw-post-body-paragraph oe of ht og b ir qo oi oj iu qp ol om on qq op oq or qr ot ou ov qs ox oy oz gn bk">That’s it for this week, with <a class="af jg" href="http://android-developers.googleblog.com/2024/10/android-sdk-release-update.html" rel="noopener ugc nofollow" target="_blank">Android API level and schedule updates</a>, more AI assistance from <a class="af jg" href="http://android-developers.googleblog.com/2024/10/whats-new-in-gemini-in-android.html" rel="noopener ugc nofollow" target="_blank">Gemini in Android Studio</a>,<a class="af jg" href="http://android-developers.googleblog.com/2024/10/whats-new-in-google-play.html" rel="noopener ugc nofollow" target="_blank"> Google Play</a> updates to help with discovery, commerce, and security, spotlight weeks on <a class="af jg" href="http://android-developers.googleblog.com/2024/10/adaptive-spotlight-week.html" rel="noopener ugc nofollow" target="_blank">Adaptive Android Apps</a> and <a class="af jg" href="http://android-developers.googleblog.com/2024/09/welcome-to-ai-on-android-spotlight-week.html" rel="noopener ugc nofollow" target="_blank">Android AI</a>, simplified support for dual <a class="af jg" href="http://android-developers.googleblog.com/2024/10/camerax-update-makes-dual-concurrent-camera-easier.html" rel="noopener ugc nofollow" target="_blank">concurrent cameras in CameraX</a>, <a class="af jg" href="http://android-developers.googleblog.com/2024/10/creating-responsive-dashboard-layout-for-jetlagged-jetpack-compose.html" rel="noopener ugc nofollow" target="_blank">responsive layout</a>, <a class="af jg" href="https://www.youtube.com/watch?v=qP-ieASbqMY" rel="noopener ugc nofollow" target="_blank">lazy grids</a>, and <a class="af jg" href="https://www.youtube.com/watch?v=JYtLy4V2x-A" rel="noopener ugc nofollow" target="_blank">AnchoredDraggable</a> in Jetpack Compose, <a class="af jg" href="https://www.youtube.com/watch?v=MwoRPPzeLtA" rel="noopener ugc nofollow" target="_blank">KMP in Room</a>, <a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/compose-material3#1.4.0-alpha01" rel="noopener ugc nofollow" target="_blank">Material 3 1.4</a>, <a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/navigation#2.9.0-alpha01" rel="noopener ugc nofollow" target="_blank">Navigation 2.9</a>, and <a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/ink#1.0.0-alpha01" rel="noopener ugc nofollow" target="_blank">Ink 1.0</a> in Android Jetpack,and more.</p><p id="1876" class="pw-post-body-paragraph oe of ht og b ir oh oi oj iu ok ol om on oo op oq or os ot ou ov ow ox oy oz gn bk">Check back soon for your next update from the Android developer universe! 💫</p></div></div></div></div></section></div></div></article></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="sz ta ab km"><div class="rf ab"><a class="tb ay am ao" rel="noopener follow" href="/tag/featured?source=post_page-----9c60a12a8473--------------------------------"><div class="tc fj cx td ge te tf bf b bg z bk tg">Featured</div></a></div><div class="rf ab"><a class="tb ay am ao" rel="noopener follow" href="/tag/jetpack-compose?source=post_page-----9c60a12a8473--------------------------------"><div class="tc fj cx td ge te tf bf b bg z bk tg">Jetpack Compose</div></a></div><div class="rf ab"><a class="tb ay am ao" rel="noopener follow" href="/tag/google-play?source=post_page-----9c60a12a8473--------------------------------"><div class="tc fj cx td ge te tf bf b bg z bk tg">Google Play</div></a></div><div class="rf ab"><a class="tb ay am ao" rel="noopener follow" href="/tag/android-studio?source=post_page-----9c60a12a8473--------------------------------"><div class="tc fj cx td ge te tf bf b bg z bk tg">Android Studio</div></a></div><div class="rf ab"><a class="tb ay am ao" rel="noopener follow" href="/tag/now-in-android?source=post_page-----9c60a12a8473--------------------------------"><div class="tc fj cx td ge te tf bf b bg z bk tg">Now In Android</div></a></div></div></div></div><div class="l"></div><footer class="th pk ti tj tk ab q tl jw c"><div class="l ae"><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="ab cp tm"><div class="ab q mh"><div class="tn l"><span class="l to tp tq e d"><div class="ab q mh mi"><div class="pw-multi-vote-icon fj kq mj mk ml"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerClapButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fandroiddevelopers%2F9c60a12a8473&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-111-9c60a12a8473&amp;user=Daniel+Galpin&amp;userId=2e0fc9a4a8c2&amp;source=---footer_actions--9c60a12a8473---------------------clap_footer-----------"><div><div class="bm" aria-hidden="false"><div class="mm ao mn mo mp mq am mr ms mt ml"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l mu mv mw mx my mz na"><p class="bf b dv z du"><span class="nb">--</span></p></div></div></span><span class="l h g f tr ts"><div class="ab q mh mi"><div class="pw-multi-vote-icon fj kq mj mk ml"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerClapButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fvote%2Fandroiddevelopers%2F9c60a12a8473&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-111-9c60a12a8473&amp;user=Daniel+Galpin&amp;userId=2e0fc9a4a8c2&amp;source=---footer_actions--9c60a12a8473---------------------clap_footer-----------"><div><div class="bm" aria-hidden="false"><div class="mm ao mn mo mp mq am mr ms mt ml"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-label="clap"><path fill-rule="evenodd" d="M11.37.828 12 3.282l.63-2.454zM13.916 3.953l1.523-2.112-1.184-.39zM8.589 1.84l1.522 2.112-.337-2.501zM18.523 18.92c-.86.86-1.75 1.246-2.62 1.33a6 6 0 0 0 .407-.372c2.388-2.389 2.86-4.951 1.399-7.623l-.912-1.603-.79-1.672c-.26-.56-.194-.98.203-1.288a.7.7 0 0 1 .546-.132c.283.046.546.231.728.5l2.363 4.157c.976 1.624 1.141 4.237-1.324 6.702m-10.999-.438L3.37 14.328a.828.828 0 0 1 .585-1.408.83.83 0 0 1 .585.242l2.158 2.157a.365.365 0 0 0 .516-.516l-2.157-2.158-1.449-1.449a.826.826 0 0 1 1.167-1.17l3.438 3.44a.363.363 0 0 0 .516 0 .364.364 0 0 0 0-.516L5.293 9.513l-.97-.97a.826.826 0 0 1 0-1.166.84.84 0 0 1 1.167 0l.97.968 3.437 3.436a.36.36 0 0 0 .517 0 .366.366 0 0 0 0-.516L6.977 7.83a.82.82 0 0 1-.241-.584.82.82 0 0 1 .824-.826c.219 0 .43.087.584.242l5.787 5.787a.366.366 0 0 0 .587-.415l-1.117-2.363c-.26-.56-.194-.98.204-1.289a.7.7 0 0 1 .546-.132c.283.046.545.232.727.501l2.193 3.86c1.302 2.38.883 4.59-1.277 6.75-1.156 1.156-2.602 1.627-4.19 1.367-1.418-.236-2.866-1.033-4.079-2.246M10.75 5.971l2.12 2.12c-.41.502-.465 1.17-.128 1.89l.22.465-3.523-3.523a.8.8 0 0 1-.097-.368c0-.22.086-.428.241-.584a.847.847 0 0 1 1.167 0m7.355 1.705c-.31-.461-.746-.758-1.23-.837a1.44 1.44 0 0 0-1.11.275c-.312.24-.505.543-.59.881a1.74 1.74 0 0 0-.906-.465 1.47 1.47 0 0 0-.82.106l-2.182-2.182a1.56 1.56 0 0 0-2.2 0 1.54 1.54 0 0 0-.396.701 1.56 1.56 0 0 0-2.21-.01 1.55 1.55 0 0 0-.416.753c-.624-.624-1.649-.624-2.237-.037a1.557 1.557 0 0 0 0 2.2c-.239.1-.501.238-.715.453a1.56 1.56 0 0 0 0 2.2l.516.515a1.556 1.556 0 0 0-.753 2.615L7.01 19c1.32 1.319 2.909 2.189 4.475 2.449q.482.08.971.08c.85 0 1.653-.198 2.393-.579.231.033.46.054.686.054 1.266 0 2.457-.52 3.505-1.567 2.763-2.763 2.552-5.734 1.439-7.586z" clip-rule="evenodd"></path></svg></div></div></div></a></span></div><div class="pw-multi-vote-count l mu mv mw mx my mz na"><p class="bf b dv z du"><span class="nb">--</span></p></div></div></span></div><div class="bq ab"><div><div class="bm" aria-hidden="false"><button class="ao mm nc nd ab q fk ne nf" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="ng"><path d="M18.006 16.803c1.533-1.456 2.234-3.325 2.234-5.321C20.24 7.357 16.709 4 12.191 4S4 7.357 4 11.482c0 4.126 3.674 7.482 8.191 7.482.817 0 1.622-.111 2.393-.327.231.2.48.391.744.559 1.06.693 2.203 1.044 3.399 1.044.224-.008.4-.112.486-.287a.49.49 0 0 0-.042-.518c-.495-.67-.845-1.364-1.04-2.057a4 4 0 0 1-.125-.598zm-3.122 1.055-.067-.223-.315.096a8 8 0 0 1-2.311.338c-4.023 0-7.292-2.955-7.292-6.587 0-3.633 3.269-6.588 7.292-6.588 4.014 0 7.112 2.958 7.112 6.593 0 1.794-.608 3.469-2.027 4.72l-.195.168v.255c0 .056 0 .151.016.295.025.231.081.478.154.733.154.558.398 1.117.722 1.659a5.3 5.3 0 0 1-2.165-.845c-.276-.176-.714-.383-.941-.59z"></path></svg></button></div></div></div></div><div class="ab q"><div class="pq l kj"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="footerBookmarkButton" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F9c60a12a8473&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-111-9c60a12a8473&amp;source=---footer_actions--9c60a12a8473---------------------bookmark_footer-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du ni" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div><div class="pq l kj"><div class="bm" aria-hidden="false" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu"><div><div class="bm" aria-hidden="false"><button aria-controls="postFooterSocialMenu" aria-expanded="false" aria-label="Share Post" data-testid="footerSocialShareButton" class="af fk ah ai aj ak al nm an ao ap ex nn no nf np"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M15.218 4.931a.4.4 0 0 1-.118.132l.012.006a.45.45 0 0 1-.292.074.5.5 0 0 1-.3-.13l-2.02-2.02v7.07c0 .28-.23.5-.5.5s-.5-.22-.5-.5v-7.04l-2 2a.45.45 0 0 1-.57.04h-.02a.4.4 0 0 1-.16-.3.4.4 0 0 1 .1-.32l2.8-2.8a.5.5 0 0 1 .7 0l2.8 2.79a.42.42 0 0 1 .068.498m-.106.138.008.004v-.01zM16 7.063h1.5a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-11c-1.1 0-2-.9-2-2v-10a2 2 0 0 1 2-2H8a.5.5 0 0 1 .35.15.5.5 0 0 1 .15.35.5.5 0 0 1-.15.35.5.5 0 0 1-.35.15H6.4c-.5 0-.9.4-.9.9v10.2a.9.9 0 0 0 .9.9h11.2c.5 0 .9-.4.9-.9v-10.2c0-.5-.4-.9-.9-.9H16a.5.5 0 0 1 0-1" clip-rule="evenodd"></path></svg></button></div></div></div></div></div></div></div></div></div></footer><div class="tt tu tv tw tx l"><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="ty bh r tz"></div><div class="ua l"><div class="ab ub uc ud kl kk"><div class="ue uf ug uh ui uj uk ul um un ab cp"><div class="h k"><a href="https://medium.com/androiddevelopers?source=post_page---post_publication_info--9c60a12a8473--------------------------------" rel="noopener follow"><div class="fj ab"><img alt="Android Developers" class="uo jn jo cx" src="https://miro.medium.com/v2/resize:fill:96:96/1*4Tg6pPzer7cIarYaszIKaQ.png" width="48" height="48" loading="lazy"/><div class="uo l jo jn fs n fr up"></div></div></a></div><div class="j i d"><a href="https://medium.com/androiddevelopers?source=post_page---post_publication_info--9c60a12a8473--------------------------------" rel="noopener follow"><div class="fj ab"><img alt="Android Developers" class="uo ur uq cx" src="https://miro.medium.com/v2/resize:fill:128:128/1*4Tg6pPzer7cIarYaszIKaQ.png" width="64" height="64" loading="lazy"/><div class="uo l uq ur fs n fr up"></div></div></a></div><div class="j i d us kj"><div class="ab"></div></div></div><div class="ab co rb"><div class="ut uu uv gw gu l"><a class="af ag ah aj ak al am an ao ap aq ar as at ab q" href="https://medium.com/androiddevelopers?source=post_page---post_publication_info--9c60a12a8473--------------------------------" rel="noopener follow"><h2 class="pw-author-name bf ux uy uz va vb vc vd on ry rz or sb sc ov se sf bk"><span class="gn uw">Published in <!-- -->Android Developers</span></h2></a><div class="rf ab jm"><div class="l kj"><span class="pw-follower-count bf b bg z du"><a class="af ag ah ai aj ak al am an ao ap aq ar kc" rel="noopener follow" href="/androiddevelopers/followers?source=post_page---post_publication_info--9c60a12a8473--------------------------------">51K Followers</a></span></div><div class="bf b bg z du ab kp"><span class="kd l" aria-hidden="true"><span class="bf b bg z du">·</span></span><a class="af ag ah ai aj ak al am an ao ap aq ar kc" rel="noopener follow" href="/androiddevelopers/test-smarter-not-harder-new-testing-strategies-documentation-255973814ae3?source=post_page---post_publication_info--9c60a12a8473--------------------------------">Last published <!-- -->1 day ago</a></div></div><div class="ve l"><p class="bf b bg z bk"><span class="gn">Articles on modern tools and resources to help you build experiences that people love, faster and easier, across every Android device.</span></p></div></div></div><div class="h k"><div class="ab"></div></div></div></div><div class="ab ub uc ud kl kk"><div class="ue uf ug uh ui uj uk ul um un ab cp"><div class="h k"><a tabindex="0" rel="noopener follow" href="/@dagalpin?source=post_page---post_author_info--9c60a12a8473--------------------------------"><div class="l fj"><img alt="Daniel Galpin" class="l fd by jo jn cx" src="https://miro.medium.com/v2/resize:fill:96:96/1*9j85cICWzDQeY8Nb4QrL4Q.jpeg" width="48" height="48" loading="lazy"/><div class="fr by l jo jn fs n ay up"></div></div></a></div><div class="j i d"><a tabindex="0" rel="noopener follow" href="/@dagalpin?source=post_page---post_author_info--9c60a12a8473--------------------------------"><div class="l fj"><img alt="Daniel Galpin" class="l fd by uq ur cx" src="https://miro.medium.com/v2/resize:fill:128:128/1*9j85cICWzDQeY8Nb4QrL4Q.jpeg" width="64" height="64" loading="lazy"/><div class="fr by l uq ur fs n ay up"></div></div></a></div><div class="j i d us kj"><div class="ab"><span><button class="bf b bg z vf tc vg vh vi vj vk ev ew vl vm vn fa fb fc fd bm fe ff">Follow</button></span></div></div></div><div class="ab co rb"><div class="ut uu uv gw gu l"><a class="af ag ah aj ak al am an ao ap aq ar as at ab q" rel="noopener follow" href="/@dagalpin?source=post_page---post_author_info--9c60a12a8473--------------------------------"><h2 class="pw-author-name bf ux uy uz va vb vc vd on ry rz or sb sc ov se sf bk"><span class="gn uw">Written by <!-- -->Daniel Galpin</span></h2></a><div class="rf ab jm"><div class="l kj"><span class="pw-follower-count bf b bg z du"><a class="af ag ah ai aj ak al am an ao ap aq ar kc" rel="noopener follow" href="/@dagalpin/followers?source=post_page---post_author_info--9c60a12a8473--------------------------------">1.6K Followers</a></span></div><div class="bf b bg z du ab kp"><span class="kd l" aria-hidden="true"><span class="bf b bg z du">·</span></span><a class="af ag ah ai aj ak al am an ao ap aq ar kc" rel="noopener follow" href="/@dagalpin/following?source=post_page---post_author_info--9c60a12a8473--------------------------------">8 Following</a></div></div><div class="ve l"><p class="bf b bg z bk"><span class="gn">Developer Advocate at Google, writer, editor, theatrical performer, and social dancer.</span></p></div></div></div><div class="h k"><div class="ab"><span><button class="bf b bg z vf tc vg vh vi vj vk ev ew vl vm vn fa fb fc fd bm fe ff">Follow</button></span></div></div></div></div></div></div><div class="vo l"><div class="ty bh r vp vq vr vs vt"></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="ab q cp"><h2 class="bf ux pv it px py iw qa qb qd qe qf qh qi qj ql qm bk">No responses yet</h2><div class="ab vu"><div><div class="bm" aria-hidden="false"><a class="vv vw" href="https://policy.medium.com/medium-rules-30e5502c4eb4?source=post_page---post_responses--9c60a12a8473--------------------------------" rel="noopener follow" target="_blank"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 25 25"><path fill-rule="evenodd" d="M11.987 5.036a.754.754 0 0 1 .914-.01c.972.721 1.767 1.218 2.6 1.543.828.322 1.719.485 2.887.505a.755.755 0 0 1 .741.757c-.018 3.623-.43 6.256-1.449 8.21-1.034 1.984-2.662 3.209-4.966 4.083a.75.75 0 0 1-.537-.003c-2.243-.874-3.858-2.095-4.897-4.074-1.024-1.951-1.457-4.583-1.476-8.216a.755.755 0 0 1 .741-.757c1.195-.02 2.1-.182 2.923-.503.827-.322 1.6-.815 2.519-1.535m.468.903c-.897.69-1.717 1.21-2.623 1.564-.898.35-1.856.527-3.026.565.037 3.45.469 5.817 1.36 7.515.884 1.684 2.25 2.762 4.284 3.571 2.092-.81 3.465-1.89 4.344-3.575.886-1.698 1.299-4.065 1.334-7.512-1.149-.039-2.091-.217-2.99-.567-.906-.353-1.745-.873-2.683-1.561m-.009 9.155a2.672 2.672 0 1 0 0-5.344 2.672 2.672 0 0 0 0 5.344m0 1a3.672 3.672 0 1 0 0-7.344 3.672 3.672 0 0 0 0 7.344m-1.813-3.777.525-.526.916.917 1.623-1.625.526.526-2.149 2.152z" clip-rule="evenodd"></path></svg></a></div></div></div></div></div></div></div><div class="vx vy vz wa wb l bx"><div class="h k j"><div class="ty bh wc wd"></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="we ab mh km"><div class="wf wg l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://help.medium.com/hc/en-us?source=post_page-----9c60a12a8473--------------------------------" rel="noopener follow"><p class="bf b dv z du">Help</p></a></div><div class="wf wg l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.statuspage.io/?source=post_page-----9c60a12a8473--------------------------------" rel="noopener follow"><p class="bf b dv z du">Status</p></a></div><div class="wf wg l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/about?autoplay=1&amp;source=post_page-----9c60a12a8473--------------------------------"><p class="bf b dv z du">About</p></a></div><div class="wf wg l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/jobs-at-medium/work-at-medium-959d1a85284e?source=post_page-----9c60a12a8473--------------------------------"><p class="bf b dv z du">Careers</p></a></div><div class="wf wg l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="pressinquiries@medium.com?source=post_page-----9c60a12a8473--------------------------------" rel="noopener follow"><p class="bf b dv z du">Press</p></a></div><div class="wf wg l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://blog.medium.com/?source=post_page-----9c60a12a8473--------------------------------" rel="noopener follow"><p class="bf b dv z du">Blog</p></a></div><div class="wf wg l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-privacy-policy-f03bf92035c9?source=post_page-----9c60a12a8473--------------------------------" rel="noopener follow"><p class="bf b dv z du">Privacy</p></a></div><div class="wf wg l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-terms-of-service-9db0094a1e0f?source=post_page-----9c60a12a8473--------------------------------" rel="noopener follow"><p class="bf b dv z du">Terms</p></a></div><div class="wf wg l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://speechify.com/medium?source=post_page-----9c60a12a8473--------------------------------" rel="noopener follow"><p class="bf b dv z du">Text to speech</p></a></div><div class="wf l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/business?source=post_page-----9c60a12a8473--------------------------------"><p class="bf b dv z du">Teams</p></a></div></div></div></div></div></div></div></div></div></div><script>window.__BUILD_ID__="main-20241122-185319-7bcdc08639"</script><script>window.__GRAPHQL_URI__ = "https://medium.com/_/graphql"</script><script>window.__PRELOADED_STATE__ = {"algolia":{"queries":{}},"cache":{"experimentGroupSet":true,"reason":"","group":"enabled","tags":["group-edgeCachePosts","post-9c60a12a8473","user-2e0fc9a4a8c2","collection-95b274b437c2"],"serverVariantState":"44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a","middlewareEnabled":true,"cacheStatus":"DYNAMIC","shouldUseCache":true,"vary":[],"lohpSummerUpsellEnabled":false,"publicationHierarchyEnabledWeb":false,"postBottomResponsesEnabled":false},"client":{"hydrated":false,"isUs":false,"isNativeMedium":false,"isSafariMobile":false,"isSafari":false,"isFirefox":true,"routingEntity":{"type":"DEFAULT","explicit":false},"viewerIsBot":false},"debug":{"requestId":"da1a46cb-fa5c-41a6-b358-d82ed43b8154","hybridDevServices":[],"originalSpanCarrier":{"traceparent":"00-d938fe6254c083fede97bdc7378b6187-36a69d61fc5cd04f-01"}},"multiVote":{"clapsPerPost":{}},"navigation":{"branch":{"show":null,"hasRendered":null,"blockedByCTA":false},"hideGoogleOneTap":false,"hasRenderedAlternateUserBanner":null,"currentLocation":"https:\u002F\u002Fmedium.com\u002Fandroiddevelopers\u002Fnow-in-android-111-9c60a12a8473","host":"medium.com","hostname":"medium.com","referrer":"","hasSetReferrer":false,"susiModal":{"step":null,"operation":"register"},"postRead":false,"partnerProgram":{"selectedCountryCode":null},"queryString":"","currentHash":""},"config":{"nodeEnv":"production","version":"main-20241122-185319-7bcdc08639","target":"production","productName":"Medium","publicUrl":"https:\u002F\u002Fcdn-client.medium.com\u002Flite","authDomain":"medium.com","authGoogleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","favicon":"production","glyphUrl":"https:\u002F\u002Fglyph.medium.com","branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","algolia":{"appId":"MQ57UUUQZ2","apiKeySearch":"394474ced050e3911ae2249ecc774921","indexPrefix":"medium_","host":"-dsn.algolia.net"},"recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","recaptchaEnterpriseKeyId":"6Le-uGgpAAAAAPprRaokM8AKthQ9KNGdoxaGUvVp","datadog":{"applicationId":"6702d87d-a7e0-42fe-bbcb-95b469547ea0","clientToken":"pub853ea8d17ad6821d9f8f11861d23dfed","rumToken":"pubf9cc52896502b9413b68ba36fc0c7162","context":{"deployment":{"target":"production","tag":"main-20241122-185319-7bcdc08639","commit":"7bcdc08639c179dc5172558201a3fd3abc1b5db6"}},"datacenter":"us"},"googleAnalyticsCode":"G-7JY7T788PK","googlePay":{"apiVersion":"2","apiVersionMinor":"0","merchantId":"BCR2DN6TV7EMTGBM","merchantName":"Medium","instanceMerchantId":"13685562959212738550"},"applePay":{"version":3},"signInWallCustomDomainCollectionIds":["3a8144eabfe3","336d898217ee","61061eb0c96b","138adf9c44c","819cc2aaeee0"],"mediumMastodonDomainName":"me.dm","mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"],"tierOneDomains":["medium.com","thebolditalic.com","arcdigital.media","towardsdatascience.com","uxdesign.cc","codeburst.io","psiloveyou.xyz","writingcooperative.com","entrepreneurshandbook.co","prototypr.io","betterhumans.coach.me","theascent.pub"],"topicsToFollow":["d61cf867d93f","8a146bc21b28","1eca0103fff3","4d562ee63426","aef1078a3ef5","e15e46793f8d","6158eb913466","55f1c20aba7a","3d18b94f6858","4861fee224fd","63c6f1f93ee","1d98b3a9a871","decb52b64abf","ae5d4995e225","830cded25262"],"topicToTagMappings":{"accessibility":"accessibility","addiction":"addiction","android-development":"android-development","art":"art","artificial-intelligence":"artificial-intelligence","astrology":"astrology","basic-income":"basic-income","beauty":"beauty","biotech":"biotech","blockchain":"blockchain","books":"books","business":"business","cannabis":"cannabis","cities":"cities","climate-change":"climate-change","comics":"comics","coronavirus":"coronavirus","creativity":"creativity","cryptocurrency":"cryptocurrency","culture":"culture","cybersecurity":"cybersecurity","data-science":"data-science","design":"design","digital-life":"digital-life","disability":"disability","economy":"economy","education":"education","equality":"equality","family":"family","feminism":"feminism","fiction":"fiction","film":"film","fitness":"fitness","food":"food","freelancing":"freelancing","future":"future","gadgets":"gadgets","gaming":"gaming","gun-control":"gun-control","health":"health","history":"history","humor":"humor","immigration":"immigration","ios-development":"ios-development","javascript":"javascript","justice":"justice","language":"language","leadership":"leadership","lgbtqia":"lgbtqia","lifestyle":"lifestyle","machine-learning":"machine-learning","makers":"makers","marketing":"marketing","math":"math","media":"media","mental-health":"mental-health","mindfulness":"mindfulness","money":"money","music":"music","neuroscience":"neuroscience","nonfiction":"nonfiction","outdoors":"outdoors","parenting":"parenting","pets":"pets","philosophy":"philosophy","photography":"photography","podcasts":"podcast","poetry":"poetry","politics":"politics","privacy":"privacy","product-management":"product-management","productivity":"productivity","programming":"programming","psychedelics":"psychedelics","psychology":"psychology","race":"race","relationships":"relationships","religion":"religion","remote-work":"remote-work","san-francisco":"san-francisco","science":"science","self":"self","self-driving-cars":"self-driving-cars","sexuality":"sexuality","social-media":"social-media","society":"society","software-engineering":"software-engineering","space":"space","spirituality":"spirituality","sports":"sports","startups":"startup","style":"style","technology":"technology","transportation":"transportation","travel":"travel","true-crime":"true-crime","tv":"tv","ux":"ux","venture-capital":"venture-capital","visual-design":"visual-design","work":"work","world":"world","writing":"writing"},"defaultImages":{"avatar":{"imageId":"1*dmbNkD5D-u45r44go_cf0g.png","height":150,"width":150},"orgLogo":{"imageId":"7*V1_7XP4snlmqrc_0Njontw.png","height":110,"width":500},"postLogo":{"imageId":"bd978bb536350a710e8efb012513429cabdc4c28700604261aeda246d0f980b7","height":810,"width":1440},"postPreviewImage":{"imageId":"1*hn4v1tCaJy7cWMyb0bpNpQ.png","height":386,"width":579}},"collectionStructuredData":{"8d6b8a439e32":{"name":"Elemental","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F980\u002F1*9ygdqoKprhwuTVKUM0DLPA@2x.png","width":980,"height":159}}},"3f6ecf56618":{"name":"Forge","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F596\u002F1*uULpIlImcO5TDuBZ6lm7Lg@2x.png","width":596,"height":183}}},"ae2a65f35510":{"name":"GEN","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F264\u002F1*RdVZMdvfV3YiZTw6mX7yWA.png","width":264,"height":140}}},"88d9857e584e":{"name":"LEVEL","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*JqYMhNX6KNNb2UlqGqO2WQ.png","width":540,"height":108}}},"7b6769f2748b":{"name":"Marker","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F383\u002F1*haCUs0wF6TgOOvfoY-jEoQ@2x.png","width":383,"height":92}}},"444d13b52878":{"name":"OneZero","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*cw32fIqCbRWzwJaoQw6BUg.png","width":540,"height":123}}},"8ccfed20cbb2":{"name":"Zora","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*tZUQqRcCCZDXjjiZ4bDvgQ.png","width":540,"height":106}}}},"embeddedPostIds":{"coronavirus":"cd3010f9d81f"},"sharedCdcMessaging":{"COVID_APPLICABLE_TAG_SLUGS":[],"COVID_APPLICABLE_TOPIC_NAMES":[],"COVID_APPLICABLE_TOPIC_NAMES_FOR_TOPIC_PAGE":[],"COVID_MESSAGES":{"tierA":{"text":"For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":66,"end":73,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"tierB":{"text":"Anyone can publish on Medium per our Policies, but we don’t fact-check every story. For more info about the coronavirus, see cdc.gov.","markups":[{"start":37,"end":45,"href":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Fcategories\u002F201931128-Policies-Safety"},{"start":125,"end":132,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"paywall":{"text":"This article has been made free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":56,"end":70,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":138,"end":145,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"unbound":{"text":"This article is free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":45,"end":59,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":127,"end":134,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]}},"COVID_BANNER_POST_ID_OVERRIDE_WHITELIST":["3b31a67bff4a"]},"sharedVoteMessaging":{"TAGS":["politics","election-2020","government","us-politics","election","2020-presidential-race","trump","donald-trump","democrats","republicans","congress","republican-party","democratic-party","biden","joe-biden","maga"],"TOPICS":["politics","election"],"MESSAGE":{"text":"Find out more about the U.S. election results here.","markups":[{"start":46,"end":50,"href":"https:\u002F\u002Fcookpolitical.com\u002F2020-national-popular-vote-tracker"}]},"EXCLUDE_POSTS":["397ef29e3ca5"]},"embedPostRules":[],"recircOptions":{"v1":{"limit":3},"v2":{"limit":8}},"braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","braintree":{"enabled":true,"merchantId":"m56f8fqpf7ngnrd4","merchantAccountId":{"usd":"AMediumCorporation_instant","eur":"amediumcorporation_EUR","cad":"amediumcorporation_CAD"},"publicKey":"ds2nn34bg2z7j5gd","braintreeEnvironment":"production","dashboardUrl":"https:\u002F\u002Fwww.braintreegateway.com\u002Fmerchants","gracePeriodDurationInDays":14,"mediumMembershipPlanId":{"monthly":"ce105f8c57a3","monthlyV2":"e8a5e126-792b-4ee6-8fba-d574c1b02fc5","monthlyWithTrial":"d5ee3dbe3db8","monthlyPremium":"fa741a9b47a2","yearly":"a40ad4a43185","yearlyV2":"3815d7d6-b8ca-4224-9b8c-182f9047866e","yearlyStaff":"d74fb811198a","yearlyWithTrial":"b3bc7350e5c7","yearlyPremium":"e21bd2c12166","monthlyOneYearFree":"e6c0637a-2bad-4171-ab4f-3c268633d83c","monthly25PercentOffFirstYear":"235ecc62-0cdb-49ae-9378-726cd21c504b","monthly20PercentOffFirstYear":"ba518864-9c13-4a99-91ca-411bf0cac756","monthly15PercentOffFirstYear":"594c029b-9f89-43d5-88f8-8173af4e070e","monthly10PercentOffFirstYear":"c6c7bc9a-40f2-4b51-8126-e28511d5bdb0","monthlyForStudents":"629ebe51-da7d-41fd-8293-34cd2f2030a8","yearlyOneYearFree":"78ba7be9-0d9f-4ece-aa3e-b54b826f2bf1","yearly25PercentOffFirstYear":"2dbb010d-bb8f-4eeb-ad5c-a08509f42d34","yearly20PercentOffFirstYear":"47565488-435b-47f8-bf93-40d5fbe0ebc8","yearly15PercentOffFirstYear":"8259809b-0881-47d9-acf7-6c001c7f720f","yearly10PercentOffFirstYear":"9dd694fb-96e1-472c-8d9e-3c868d5c1506","yearlyForStudents":"e29345ef-ab1c-4234-95c5-70e50fe6bc23","monthlyCad":"p52orjkaceei","yearlyCad":"h4q9g2up9ktt"},"braintreeDiscountId":{"oneMonthFree":"MONTHS_FREE_01","threeMonthsFree":"MONTHS_FREE_03","sixMonthsFree":"MONTHS_FREE_06","fiftyPercentOffOneYear":"FIFTY_PERCENT_OFF_ONE_YEAR"},"3DSecureVersion":"2","defaultCurrency":"usd","providerPlanIdCurrency":{"4ycw":"usd","rz3b":"usd","3kqm":"usd","jzw6":"usd","c2q2":"usd","nnsw":"usd","q8qw":"usd","d9y6":"usd","fx7w":"cad","nwf2":"cad"}},"paypalClientId":"AXj1G4fotC2GE8KzWX9mSxCH1wmPE3nJglf4Z2ig_amnhvlMVX87otaq58niAg9iuLktVNF_1WCMnN7v","paypal":{"host":"https:\u002F\u002Fapi.paypal.com:443","clientMode":"production","serverMode":"live","webhookId":"4G466076A0294510S","monthlyPlan":{"planId":"P-9WR0658853113943TMU5FDQA","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlan":{"planId":"P-7N8963881P8875835MU5JOPQ","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com\u002Fredeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"},"oldMonthlyPlan":{"planId":"P-96U02458LM656772MJZUVH2Y","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlan":{"planId":"P-59P80963JF186412JJZU3SMI","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"monthlyPlanWithTrial":{"planId":"P-66C21969LR178604GJPVKUKY","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlanWithTrial":{"planId":"P-6XW32684EX226940VKCT2MFA","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oldMonthlyPlanNoSetupFee":{"planId":"P-4N046520HR188054PCJC7LJI","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlanNoSetupFee":{"planId":"P-7A4913502Y5181304CJEJMXQ","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"sdkUrl":"https:\u002F\u002Fwww.paypal.com\u002Fsdk\u002Fjs"},"stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","log":{"json":true,"level":"info"},"imageUploadMaxSizeMb":25,"staffPicks":{"title":"Staff Picks","catalogId":"c7bc6e1ee00f"}},"session":{"xsrf":""}}</script><script>window.__APOLLO_STATE__ = {"ROOT_QUERY":{"__typename":"Query","viewer":null,"collectionByDomainOrSlug({\"domainOrSlug\":\"androiddevelopers\"})":{"__ref":"Collection:95b274b437c2"},"postResult({\"id\":\"9c60a12a8473\"})":{"__ref":"Post:9c60a12a8473"}},"ImageMetadata:":{"__typename":"ImageMetadata","id":""},"Collection:95b274b437c2":{"__typename":"Collection","id":"95b274b437c2","favicon":{"__ref":"ImageMetadata:"},"customStyleSheet":null,"colorPalette":{"__typename":"ColorPalette","highlightSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FFFFFFFF","colorPoints":[{"__typename":"ColorPoint","color":"#FFF4F2F3","point":0},{"__typename":"ColorPoint","color":"#FFF2F0F1","point":0.1},{"__typename":"ColorPoint","color":"#FFF0EEEF","point":0.2},{"__typename":"ColorPoint","color":"#FFEEECEE","point":0.3},{"__typename":"ColorPoint","color":"#FFECEAEC","point":0.4},{"__typename":"ColorPoint","color":"#FFEAE8EA","point":0.5},{"__typename":"ColorPoint","color":"#FFE8E7E9","point":0.6},{"__typename":"ColorPoint","color":"#FFE6E5E7","point":0.7},{"__typename":"ColorPoint","color":"#FFE4E3E5","point":0.8},{"__typename":"ColorPoint","color":"#FFE2E1E4","point":0.9},{"__typename":"ColorPoint","color":"#FFE0DFE2","point":1}]},"defaultBackgroundSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FFFFFFFF","colorPoints":[{"__typename":"ColorPoint","color":"#FF848488","point":0},{"__typename":"ColorPoint","color":"#FF7B7B7E","point":0.1},{"__typename":"ColorPoint","color":"#FF717275","point":0.2},{"__typename":"ColorPoint","color":"#FF68686B","point":0.3},{"__typename":"ColorPoint","color":"#FF5E5E60","point":0.4},{"__typename":"ColorPoint","color":"#FF545456","point":0.5},{"__typename":"ColorPoint","color":"#FF4A494B","point":0.6},{"__typename":"ColorPoint","color":"#FF3F3E40","point":0.7},{"__typename":"ColorPoint","color":"#FF333334","point":0.8},{"__typename":"ColorPoint","color":"#FF272728","point":0.9},{"__typename":"ColorPoint","color":"#FF1A1A1A","point":1}]},"tintBackgroundSpectrum":{"__typename":"ColorSpectrum","backgroundColor":"#FF202124","colorPoints":[{"__typename":"ColorPoint","color":"#FF202124","point":0},{"__typename":"ColorPoint","color":"#FF3D3E41","point":0.1},{"__typename":"ColorPoint","color":"#FF58585B","point":0.2},{"__typename":"ColorPoint","color":"#FF707073","point":0.3},{"__typename":"ColorPoint","color":"#FF878689","point":0.4},{"__typename":"ColorPoint","color":"#FF9D9C9E","point":0.5},{"__typename":"ColorPoint","color":"#FFB2B1B2","point":0.6},{"__typename":"ColorPoint","color":"#FFC6C5C6","point":0.7},{"__typename":"ColorPoint","color":"#FFDAD8DA","point":0.8},{"__typename":"ColorPoint","color":"#FFEEEBEC","point":0.9},{"__typename":"ColorPoint","color":"#FFFFFEFF","point":1}]}},"domain":null,"slug":"androiddevelopers","googleAnalyticsId":null,"editors":[{"__typename":"CollectionMastheadUserItem","user":{"__ref":"User:e1f26db83092"}},{"__typename":"CollectionMastheadUserItem","user":{"__ref":"User:2e0fc9a4a8c2"}},{"__typename":"CollectionMastheadUserItem","user":{"__ref":"User:d5885adb1ddf"}}],"name":"Android Developers","avatar":{"__ref":"ImageMetadata:1*4Tg6pPzer7cIarYaszIKaQ.png"},"description":"Articles on modern tools and resources to help you build experiences that people love, faster and easier, across every Android device.","subscriberCount":51924,"latestPostsConnection({\"paging\":{\"limit\":1}})":{"__typename":"PostConnection","posts":[{"__ref":"Post:255973814ae3"}]},"viewerEdge":{"__ref":"CollectionViewerEdge:collectionId:95b274b437c2-viewerId:lo_0bf4f5e80a48"},"twitterUsername":"androiddev","facebookPageId":null,"logo":{"__ref":"ImageMetadata:1*5pMw_nx55x_66tk77kutPQ.png"}},"User:e1f26db83092":{"__typename":"User","id":"e1f26db83092"},"User:2e0fc9a4a8c2":{"__typename":"User","id":"2e0fc9a4a8c2","name":"Daniel Galpin","username":"dagalpin","newsletterV3":{"__ref":"NewsletterV3:9d24e47e7508"},"linkedAccounts":{"__ref":"LinkedAccounts:2e0fc9a4a8c2"},"isSuspended":false,"imageId":"1*9j85cICWzDQeY8Nb4QrL4Q.jpeg","mediumMemberAt":0,"verifications":{"__typename":"VerifiedInfo","isBookAuthor":false},"socialStats":{"__typename":"SocialStats","followerCount":1640,"followingCount":5,"collectionFollowingCount":3},"customDomainState":null,"hasSubdomain":false,"bio":"Developer Advocate at Google, writer, editor, theatrical performer, and social dancer.","isPartnerProgramEnrolled":false,"viewerEdge":{"__ref":"UserViewerEdge:userId:2e0fc9a4a8c2-viewerId:lo_0bf4f5e80a48"},"viewerIsUser":false,"postSubscribeMembershipUpsellShownAt":0,"membership":null,"allowNotes":true,"twitterScreenName":""},"User:d5885adb1ddf":{"__typename":"User","id":"d5885adb1ddf"},"ImageMetadata:1*4Tg6pPzer7cIarYaszIKaQ.png":{"__typename":"ImageMetadata","id":"1*4Tg6pPzer7cIarYaszIKaQ.png"},"User:e0a4c9469bb5":{"__typename":"User","id":"e0a4c9469bb5","customDomainState":null,"hasSubdomain":false,"username":"JoseAlcerreca"},"Post:255973814ae3":{"__typename":"Post","id":"255973814ae3","firstPublishedAt":1732208584164,"creator":{"__ref":"User:e0a4c9469bb5"},"collection":{"__ref":"Collection:95b274b437c2"},"isSeries":false,"mediumUrl":"https:\u002F\u002Fmedium.com\u002Fandroiddevelopers\u002Ftest-smarter-not-harder-new-testing-strategies-documentation-255973814ae3","sequence":null,"uniqueSlug":"test-smarter-not-harder-new-testing-strategies-documentation-255973814ae3"},"LinkedAccounts:2e0fc9a4a8c2":{"__typename":"LinkedAccounts","mastodon":null,"id":"2e0fc9a4a8c2"},"UserViewerEdge:userId:2e0fc9a4a8c2-viewerId:lo_0bf4f5e80a48":{"__typename":"UserViewerEdge","id":"userId:2e0fc9a4a8c2-viewerId:lo_0bf4f5e80a48","isFollowing":false,"isUser":false,"isMuting":false},"NewsletterV3:9d24e47e7508":{"__typename":"NewsletterV3","id":"9d24e47e7508","type":"NEWSLETTER_TYPE_AUTHOR","slug":"2e0fc9a4a8c2","name":"2e0fc9a4a8c2","collection":null,"user":{"__ref":"User:2e0fc9a4a8c2"}},"ImageMetadata:1*Sy3ea40KCd6LSmU6QFUgDA.png":{"__typename":"ImageMetadata","id":"1*Sy3ea40KCd6LSmU6QFUgDA.png","originalHeight":1253,"originalWidth":4209,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:6048d46eb879_0":{"__typename":"Paragraph","id":"6048d46eb879_0","name":"43bd","type":"IMG","href":null,"layout":"OUTSET_CENTER","metadata":{"__ref":"ImageMetadata:1*Sy3ea40KCd6LSmU6QFUgDA.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_1":{"__typename":"Paragraph","id":"6048d46eb879_1","name":"8c97","type":"H3","href":null,"layout":null,"metadata":null,"text":"Now in Android #111","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_2":{"__typename":"Paragraph","id":"6048d46eb879_2","name":"c5b8","type":"H4","href":null,"layout":null,"metadata":null,"text":"Android API level and schedule updates, Gemini in Android Studio, Google Play, Spotlight weeks on Adaptive Android Apps and Android AI, concurrent CameraX, responsive layout, lazy grids, and AnchoredDraggable in Jetpack Compose, KMP in Room","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":38,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fwhats-new-in-google-play.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":40,"end":64,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fwhats-new-in-gemini-in-android.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":65,"end":77,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fwhats-new-in-google-play.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":98,"end":119,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fadaptive-spotlight-week.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":124,"end":134,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F09\u002Fwelcome-to-ai-on-android-spotlight-week.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":136,"end":154,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fcamerax-update-makes-dual-concurrent-camera-easier.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":156,"end":173,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fcreating-responsive-dashboard-layout-for-jetlagged-jetpack-compose.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":175,"end":185,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=qP-ieASbqMY","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":191,"end":208,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=JYtLy4V2x-A","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":229,"end":240,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=MwoRPPzeLtA","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_3":{"__typename":"Paragraph","id":"6048d46eb879_3","name":"5a1f","type":"P","href":null,"layout":null,"metadata":null,"text":"Welcome to the 111th iteration of Now in Android: your ongoing guide to what’s new and notable in the world of Android development.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:d37825d067fffbbe39ee8c01759384db":{"__typename":"MediaResource","id":"d37825d067fffbbe39ee8c01759384db","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FWRzkRWxBAZU%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DWRzkRWxBAZU&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FWRzkRWxBAZU%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":"NIA111 v02"},"Paragraph:6048d46eb879_4":{"__typename":"Paragraph","id":"6048d46eb879_4","name":"6e7a","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:d37825d067fffbbe39ee8c01759384db"}},"mixtapeMetadata":null},"MediaResource:a093a491fbba1c8c9be96c43ae91a258":{"__typename":"MediaResource","id":"a093a491fbba1c8c9be96c43ae91a258","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=%2F%2Fhtml5-player.libsyn.com%2Fembed%2Fepisode%2Fid%2F33837087%2Fheight%2F90%2Ftheme%2Fcustom%2Fthumbnail%2Fyes%2Fdirection%2Fforward%2Frender-playlist%2Fno%2Fcustom-color%2F88AA3C%2F&display_name=Libsyn&url=https%3A%2F%2Fnowinandroid.libsyn.com%2F111-android-api-level-and-schedule-updates-gemini-in-android-studio-google-play&image=https%3A%2F%2Fassets.libsyn.com%2Fsecure%2Fitem%2F33837087&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=libsyn","iframeHeight":90,"iframeWidth":600,"title":"111 - Android API level and schedule updates, Gemini in Android Studio, Google Play"},"Paragraph:6048d46eb879_5":{"__typename":"Paragraph","id":"6048d46eb879_5","name":"4781","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:a093a491fbba1c8c9be96c43ae91a258"}},"mixtapeMetadata":null},"Paragraph:6048d46eb879_6":{"__typename":"Paragraph","id":"6048d46eb879_6","name":"a52b","type":"P","href":null,"layout":null,"metadata":null,"text":"Most of the content of this post is available in the form of a video or podcast, so feel free to watch or listen rather than read on. (Or do all three to help you remember! There won’t be a quiz.)","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":63,"end":68,"href":"https:\u002F\u002Fyoutu.be\u002FWRzkRWxBAZU","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":72,"end":79,"href":"https:\u002F\u002Fnowinandroid.libsyn.com\u002F111-android-api-level-and-schedule-updates-gemini-in-android-studio-google-play","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":97,"end":102,"href":"https:\u002F\u002Fyoutu.be\u002FWRzkRWxBAZU","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":106,"end":112,"href":"https:\u002F\u002Fnowinandroid.libsyn.com\u002F111-android-api-level-and-schedule-updates-gemini-in-android-studio-google-play","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*cmP29BzXGIzpYriB":{"__typename":"ImageMetadata","id":"0*cmP29BzXGIzpYriB","originalHeight":476,"originalWidth":1600,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:6048d46eb879_7":{"__typename":"Paragraph","id":"6048d46eb879_7","name":"48d7","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*cmP29BzXGIzpYriB"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_8":{"__typename":"Paragraph","id":"6048d46eb879_8","name":"b2f1","type":"H3","href":null,"layout":null,"metadata":null,"text":"More frequent Android API releases and schedule updates 🤖🤖","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":55,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fandroid-sdk-release-update.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_9":{"__typename":"Paragraph","id":"6048d46eb879_9","name":"54ba","type":"P","href":null,"layout":null,"metadata":null,"text":"Android API level updates are becoming more frequent and streamlined. In 2025, there will be a major API release in Q2 and a minor API release in Q4, with the goal of delivering you more polished and innovative APIs faster. The minor release in Q4 will include new APIs, but, like the incremental quarterly releases we have today, will have no planned behavior changes, minimizing the need for compatibility testing against that version.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_10":{"__typename":"Paragraph","id":"6048d46eb879_10","name":"c9de","type":"P","href":null,"layout":null,"metadata":null,"text":"We’ve also moved the major release forward one quarter to Q2 of 2025 to better align with the schedules of major Android OEMs, ensuring that more devices receive the latest updates sooner than before. You should adjust annual compatibility testing schedules accordingly to prepare for this change. We’ll soon begin the developer preview and beta program for the Q2 2025 major release so you can begin testing, including changes we’ve made to the SDK to support minor API levels.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_11":{"__typename":"Paragraph","id":"6048d46eb879_11","name":"cb6e","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"More frequent Android SDK releases: faster innovation, higher quality and more polish\nTo drive faster innovation in apps and devices, Android will have a major release in Q2 to include behavior changes…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":235,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fandroid-sdk-release-update.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":85,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":86,"end":202,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fandroid-sdk-release-update.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*I-JJSKHdYnTefvTk"}},"ImageMetadata:0*yjcvbZMUwWBMyBCj":{"__typename":"ImageMetadata","id":"0*yjcvbZMUwWBMyBCj","originalHeight":721,"originalWidth":1281,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:6048d46eb879_12":{"__typename":"Paragraph","id":"6048d46eb879_12","name":"ebe5","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*yjcvbZMUwWBMyBCj"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_13":{"__typename":"Paragraph","id":"6048d46eb879_13","name":"4a2d","type":"H3","href":null,"layout":null,"metadata":null,"text":"Gemini in Android Studio, now helping you across the development lifecycle ♊","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":74,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fwhats-new-in-gemini-in-android.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_14":{"__typename":"Paragraph","id":"6048d46eb879_14","name":"a8c8","type":"P","href":null,"layout":null,"metadata":null,"text":"Android Studio’s Gemini AI assistant can now write, refactor, and document code, as well as generate unit test scenarios, analyze build errors, and provide insights for crash reports. It has been integrated into Compose workflows, simplifying the visualization of composables during design time.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_15":{"__typename":"Paragraph","id":"6048d46eb879_15","name":"7bda","type":"P","href":null,"layout":null,"metadata":null,"text":"These features are available in the Android Studio canary channel and will be released in the upcoming Ladybug Feature Drop, along with other enhancements.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_16":{"__typename":"Paragraph","id":"6048d46eb879_16","name":"2087","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Gemini in Android Studio, now helping you across the development lifecycle\nNew Android Studio features empower devs with AI assistance across the development lifecycle, from coding and UI design…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":228,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fwhats-new-in-gemini-in-android.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":74,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":75,"end":195,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fwhats-new-in-gemini-in-android.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*L3cfgNpgyINHYUX9"}},"ImageMetadata:0*K2We86SDh3Yk8kGD":{"__typename":"ImageMetadata","id":"0*K2We86SDh3Yk8kGD","originalHeight":477,"originalWidth":1600,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:6048d46eb879_17":{"__typename":"Paragraph","id":"6048d46eb879_17","name":"0d27","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*K2We86SDh3Yk8kGD"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_18":{"__typename":"Paragraph","id":"6048d46eb879_18","name":"1f03","type":"H3","href":null,"layout":null,"metadata":null,"text":"Updates to power your growth on Google Play ▶️","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":43,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fwhats-new-in-google-play.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_19":{"__typename":"Paragraph","id":"6048d46eb879_19","name":"8d4c","type":"P","href":null,"layout":null,"metadata":null,"text":"Google Play shared new ways to grow your audience, optimize revenue, and protect your business.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_20":{"__typename":"Paragraph","id":"6048d46eb879_20","name":"e33b","type":"P","href":null,"layout":null,"metadata":null,"text":"To help with discovery, Google Play added full-screen portrait videos on Play Store listings, personalized query recommendations, and a user selection around interests for app and game recommendations.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":13,"end":22,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_21":{"__typename":"Paragraph","id":"6048d46eb879_21","name":"4dc8","type":"P","href":null,"layout":null,"metadata":null,"text":"To help with commerce, Google Play is proactively encouraging payment setup, expanding payment options, providing algorithmic recommendations for in-app purchases, sending cart abandonment reminders, and increasing the adoption of biometric verification for faster and more secure checkouts.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":13,"end":21,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_22":{"__typename":"Paragraph","id":"6048d46eb879_22","name":"69bf","type":"P","href":null,"layout":null,"metadata":null,"text":"To help with security, the Play Integrity API will soon support hardware-backed security signals for improved API verdicts on supported Android 13+ devices, along with a New app access risk feature that detects and responds to apps that can capture the screen or control the device.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":13,"end":21,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":27,"end":45,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_23":{"__typename":"Paragraph","id":"6048d46eb879_23","name":"e9e0","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Updates to power your growth on Google Play\nGoogle Play is releasing new features to help developers reach a wider audience, optimize revenue, and reinforce trust…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":196,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fwhats-new-in-google-play.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":43,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":44,"end":163,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fwhats-new-in-google-play.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*m3ujVsJ6cYvnBwcv"}},"Paragraph:6048d46eb879_24":{"__typename":"Paragraph","id":"6048d46eb879_24","name":"0958","type":"H3","href":null,"layout":null,"metadata":null,"text":"Spotlight Week: Adaptive Android Apps 🔦💻","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":37,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fadaptive-spotlight-week.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*AeJkhuHWi4cwcLav":{"__typename":"ImageMetadata","id":"0*AeJkhuHWi4cwcLav","originalHeight":479,"originalWidth":1600,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:6048d46eb879_25":{"__typename":"Paragraph","id":"6048d46eb879_25","name":"0f7b","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*AeJkhuHWi4cwcLav"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_26":{"__typename":"Paragraph","id":"6048d46eb879_26","name":"c1c7","type":"P","href":null,"layout":null,"metadata":null,"text":"The Adaptive spotlight week covered new documentation for building adaptive apps, the Material 3 adaptive library, the Developer Preview of Desktop windowing on Android Tablets, Custom Adaptive layouts in Compose, the new productivity app developer center, responsive layouts in the JetLagged sample, the new Ink API, and finished with an Adaptive #AskAndroid segment. With Android powering foldables, tablets, ChromeOS, and cars, it’s time to consider building adaptive.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":36,"end":53,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fadaptive-apps","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":86,"end":113,"href":"https:\u002F\u002Fio.google\u002F2024\u002Fexplore\u002F2dff9b4c-4069-4bde-ab9a-c5f53dc0fdb8\u002F","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":119,"end":176,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F09\u002Fdeveloper-preview-desktop-windowing-on-android-tablets.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":178,"end":212,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=PUxtjQWJj6A","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":222,"end":255,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fproductivity","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":257,"end":299,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fcreating-responsive-dashboard-layout-for-jetlagged-jetpack-compose.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":301,"end":316,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fintroducing-ink-api-jetpack-library.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":339,"end":359,"href":"https:\u002F\u002Fwww.youtube.com\u002Flive\u002FrFmyljhUxEY?si=ysRQp3_rBHEvvi0x","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":425,"end":429,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fandroid-for-cars-bringing-more-apps-to-cars.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_27":{"__typename":"Paragraph","id":"6048d46eb879_27","name":"7e29","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Here's what happening in our latest Spotlight Week: Adaptive Android Apps\nBest practices for building Android apps across devices - adaptive layouts, Compose, desktop windowing, stylus input …android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":225,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fadaptive-spotlight-week.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":73,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":74,"end":192,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fadaptive-spotlight-week.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*T_y6Q9BvSYXEhCVh"}},"Paragraph:6048d46eb879_28":{"__typename":"Paragraph","id":"6048d46eb879_28","name":"0fd3","type":"H3","href":null,"layout":null,"metadata":null,"text":"Spotlight week: AI on Android 🔦🤖🧠","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":29,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F09\u002Fwelcome-to-ai-on-android-spotlight-week.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:0*Ba2zUDET_AvRTTe3":{"__typename":"ImageMetadata","id":"0*Ba2zUDET_AvRTTe3","originalHeight":476,"originalWidth":1600,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:6048d46eb879_29":{"__typename":"Paragraph","id":"6048d46eb879_29","name":"53e7","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:0*Ba2zUDET_AvRTTe3"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_30":{"__typename":"Paragraph","id":"6048d46eb879_30","name":"0dea","type":"P","href":null,"layout":null,"metadata":null,"text":"The future of Android is rooted in AI and machine learning, and the Android AI Spotlight Week shared a wealth of resources around the latest in AI and its potential for Android app development.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_31":{"__typename":"Paragraph","id":"6048d46eb879_31","name":"6105","type":"P","href":null,"layout":null,"metadata":null,"text":"The week began with A quick introduction to large language models for Android Developers, discussed Studio’s new Gemini-powered code completion, announced experimental developer access to the latest version of Gemini Nano, gave an Introduction to Privacy and Safety for Gemini Nano, and walked through Android’s on-device GenAI solutions.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":20,"end":88,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F09\u002Fintroduction-to-large-language-models-for-android-developers.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":113,"end":143,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F09\u002Fgemini-android-studio-code-completion-model-improvements.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":155,"end":221,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fgemini-nano-experimental-access-available-on-android.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":228,"end":281,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fintroduction-to-privacy-and-safety-gemini-nano.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":302,"end":337,"href":"https:\u002F\u002Fyoutu.be\u002FEpKghZYqVW4","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_32":{"__typename":"Paragraph","id":"6048d46eb879_32","name":"fa61","type":"P","href":null,"layout":null,"metadata":null,"text":"The week continued with bringing your own AI model to Android devices, and PyTorch Machine Learning Models on Android. It went into utilizing cloud models to add Gemini capabilities to your Android app, including a showcase of the Gemini API in Action, and an interview with a developer of the Life journaling app that utilized Gemini through Vertex AI in Firebase to help users log entries.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":24,"end":69,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fbring-your-ai-model-to-android-devices.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":75,"end":117,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fpytorch-machine-learning-models-on-android.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":158,"end":201,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fcodelabs\u002Fgemini-summarize#0","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":231,"end":251,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fgemini-api-showcase-of-innovative-android-apps.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":260,"end":313,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=DDN2pJ0SzNw","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_33":{"__typename":"Paragraph","id":"6048d46eb879_33","name":"139b","type":"P","href":null,"layout":null,"metadata":null,"text":"The week finished with a discussion about Building with AI on Android and beyond.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":42,"end":80,"href":"https:\u002F\u002Fyoutu.be\u002Fo1wY5vnNVCc?si=FQbKfGdJdbTwnjJP","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_34":{"__typename":"Paragraph","id":"6048d46eb879_34","name":"d825","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Welcome to AI on Android Spotlight Week\nWe're highlighting the core technologies driving AI experiences on Android, including on-device generative AI…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":183,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F09\u002Fwelcome-to-ai-on-android-spotlight-week.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":39,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":40,"end":150,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F09\u002Fwelcome-to-ai-on-android-spotlight-week.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*Uliv6_SUIY770DpU"}},"Paragraph:6048d46eb879_35":{"__typename":"Paragraph","id":"6048d46eb879_35","name":"a3bb","type":"H3","href":null,"layout":null,"metadata":null,"text":"Android Developers blog 📝","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":23,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_36":{"__typename":"Paragraph","id":"6048d46eb879_36","name":"9f1c","type":"H4","href":null,"layout":null,"metadata":null,"text":"CameraX update makes dual concurrent camera even easier 📷","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":55,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fcamerax-update-makes-dual-concurrent-camera-easier.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_37":{"__typename":"Paragraph","id":"6048d46eb879_37","name":"cfd3","type":"P","href":null,"layout":null,"metadata":null,"text":"Donovan covers how CameraX, Android’s Jetpack camera library will now handle the composition of dual concurrent camera streams starting with version 1.5.0-alpha01, making the feature easier to support. To tell CameraX to handle the composition, you use the new SingleCameraConfig constructor which has a new parameter for a CompositionSettings object.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":19,"end":26,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fmedia\u002Fcamera\u002Fcamerax","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":149,"end":162,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fcamera#1.5.0-alpha01","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":257,"end":291,"href":"https:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fandroidx\u002Fcamera\u002Fcore\u002FConcurrentCamera.SingleCameraConfig#SingleCameraConfig%28androidx.camera.core.CameraSelector,androidx.camera.core.UseCaseGroup,androidx.camera.core.CompositionSettings,androidx.lifecycle.LifecycleOwner%29","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":324,"end":343,"href":"https:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fandroidx\u002Fcamera\u002Fcore\u002FCompositionSettings","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_38":{"__typename":"Paragraph","id":"6048d46eb879_38","name":"0e47","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"CameraX update makes dual concurrent camera even easier\nCameraX's Dual Concurrent Camera feature is now updated, making it easier to integrate into apps, offering developers…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":207,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fcamerax-update-makes-dual-concurrent-camera-easier.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":55,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":56,"end":174,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fcamerax-update-makes-dual-concurrent-camera-easier.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*sWxcmnhfPoEvdS9K"}},"Paragraph:6048d46eb879_39":{"__typename":"Paragraph","id":"6048d46eb879_39","name":"3c24","type":"H4","href":null,"layout":null,"metadata":null,"text":"Chrome on Android to support third-party autofill services natively ✏️","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":67,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fchrome-3p-autofill-services.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_40":{"__typename":"Paragraph","id":"6048d46eb879_40","name":"0843","type":"P","href":null,"layout":null,"metadata":null,"text":"Eiji wrote about how Chrome 131 and later support third-party autofill services (like password managers) without the existing compatibility mode to autofill forms on websites. Developers of these services need to tell their users to toggle a setting in Chrome to continue using their service with Chrome.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":4,"href":null,"anchorType":"USER","userId":"ced0efd956da","linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_41":{"__typename":"Paragraph","id":"6048d46eb879_41","name":"ad24","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Chrome on Android to support third-party autofill services natively\nChrome on Android will soon natively support third-party autofill services, providing a smoother user experience.android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":214,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fchrome-3p-autofill-services.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":67,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":68,"end":181,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fchrome-3p-autofill-services.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*dlwrav05xvYyDRhu"}},"Paragraph:6048d46eb879_42":{"__typename":"Paragraph","id":"6048d46eb879_42","name":"8829","type":"H4","href":null,"layout":null,"metadata":null,"text":"Attestation format change for the Android FIDO2 API 🔑","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":51,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F09\u002Fattestation-format-change-for-android-fido2-api.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_43":{"__typename":"Paragraph","id":"6048d46eb879_43","name":"c0c9","type":"P","href":null,"layout":null,"metadata":null,"text":"Christiaan announced an upcoming change to the attestation format for the Android FIDO2 API, effective as of November 2024, with a mandatory switch to the new hardware-backed format in early April 2025 due to the deprecation of the SafetyNet API upon which the current attestation is based.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_44":{"__typename":"Paragraph","id":"6048d46eb879_44","name":"33f7","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Attestation format change for the Android FIDO2 API\nDevelopers must update their apps to support the new attestation statement or migrate to the passkey API to ensure…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":200,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F09\u002Fattestation-format-change-for-android-fido2-api.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":51,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":52,"end":167,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F09\u002Fattestation-format-change-for-android-fido2-api.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*FvqyXVLwz1ER3vyj"}},"Paragraph:6048d46eb879_45":{"__typename":"Paragraph","id":"6048d46eb879_45","name":"c49b","type":"H4","href":null,"layout":null,"metadata":null,"text":"Creating a responsive dashboard layout for JetLagged with Jetpack Compose ✈️","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":73,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fcreating-responsive-dashboard-layout-for-jetlagged-jetpack-compose.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_46":{"__typename":"Paragraph","id":"6048d46eb879_46","name":"1bb9","type":"P","href":null,"layout":null,"metadata":null,"text":"Part of the Adaptive Spotlight week, Rebecca wrote about how we used logic coupled with Window Size Classes, Flow layouts, movableContentOf and LookaheadScope,to create a responsive dashboard-like layout in Jetpack Compose in the JetLagged sample with this pull request.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":37,"end":44,"href":null,"anchorType":"USER","userId":"3f9b9c30bec7","linkMetadata":null},{"__typename":"Markup","type":"A","start":88,"end":107,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fguide\u002Ftopics\u002Flarge-screens\u002Fsupport-different-screen-sizes#window_size_classes","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":109,"end":121,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fcompose\u002Flayouts\u002Fflow","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":123,"end":139,"href":"https:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fkotlin\u002Fandroidx\u002Fcompose\u002Fruntime\u002Fpackage-summary#movableContentOf%28kotlin.Function4%29","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":144,"end":158,"href":"https:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fkotlin\u002Fandroidx\u002Fcompose\u002Fui\u002Flayout\u002FLookaheadScope","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":230,"end":239,"href":"https:\u002F\u002Fgithub.com\u002Fandroid\u002Fcompose-samples\u002Ftree\u002Fmain\u002FJetLagged","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":252,"end":269,"href":"https:\u002F\u002Fgithub.com\u002Fandroid\u002Fcompose-samples\u002Fpull\u002F1473","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_47":{"__typename":"Paragraph","id":"6048d46eb879_47","name":"1959","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Creating a responsive dashboard layout for JetLagged with Jetpack Compose\nUse Flow layouts, WindowSizeClasses, movableContentOf, and LookaheadScope to achieve a fluid and adaptable UI that…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":222,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fcreating-responsive-dashboard-layout-for-jetlagged-jetpack-compose.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":73,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":74,"end":189,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fcreating-responsive-dashboard-layout-for-jetlagged-jetpack-compose.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*KRWxZdIB9VdTW55N"}},"Paragraph:6048d46eb879_48":{"__typename":"Paragraph","id":"6048d46eb879_48","name":"1297","type":"H4","href":null,"layout":null,"metadata":null,"text":"Inspiring developer stories 📰","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_49":{"__typename":"Paragraph","id":"6048d46eb879_49","name":"ad85","type":"ULI","href":null,"layout":null,"metadata":null,"text":"Miguel covered how FlipaClip optimizing for large screens including stylus support and redesigning the large screen drawing area gave them a 54% increase in tablet users over just four months.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":6,"href":null,"anchorType":"USER","userId":"dc51d5f76a8d","linkMetadata":null},{"__typename":"Markup","type":"A","start":129,"end":169,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fflipaclip-optimizes-for-tablets-and-stylus.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_50":{"__typename":"Paragraph","id":"6048d46eb879_50","name":"b43c","type":"ULI","href":null,"layout":null,"metadata":null,"text":"In the latest #WeArePlay, Robbie covers the developer behind NomadHer and the way she’s aiming to reshape how women explore the world by building a global community: sharing travel tips, prioritizing safety, and connecting with one another to explore new destinations.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":14,"end":24,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fweareplay-nomadher-helps-women-travel-the-world.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_51":{"__typename":"Paragraph","id":"6048d46eb879_51","name":"4d61","type":"ULI","href":null,"layout":null,"metadata":null,"text":"Kseniia covered how AllTrails created a new Wear OS application that led to over 1 million downloads, including their use of Compose for WearOS and Health Connect.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":7,"href":null,"anchorType":"USER","userId":"86643abac3e4","linkMetadata":null},{"__typename":"Markup","type":"A","start":8,"end":15,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F09\u002Falltrails-gains-over-1-million-downloads-wear-os-app.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":20,"end":29,"href":"https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.alltrails.alltrails&hl=en_US","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":44,"end":51,"href":"http:\u002F\u002Fd.android.com\u002Fwear","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_52":{"__typename":"Paragraph","id":"6048d46eb879_52","name":"c73c","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"FlipaClip optimizes for large screens and sees a 54% increase in tablet users\nFlipaClip, a 2D animation app, optimized its UX for large screens, focusing on stylus compatibility, customizable…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":225,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fflipaclip-optimizes-for-tablets-and-stylus.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":77,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":78,"end":192,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fflipaclip-optimizes-for-tablets-and-stylus.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*UgDhBCB7ay6tI6m1"}},"Paragraph:6048d46eb879_53":{"__typename":"Paragraph","id":"6048d46eb879_53","name":"c2f3","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"#WeArePlay | NomadHer helps women travel the world\nMeet Hyojeong from Busan, South Korea. NomadHer brings together a global community of women solo travelers, for safe…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":201,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fweareplay-nomadher-helps-women-travel-the-world.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":50,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":51,"end":168,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fweareplay-nomadher-helps-women-travel-the-world.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*HFQxT-qCXBUsVovV"}},"Paragraph:6048d46eb879_54":{"__typename":"Paragraph","id":"6048d46eb879_54","name":"b0c3","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"AllTrails gains over 1 million downloads after implementing its Wear OS app\nAllTrails developers used Jetpack Compose for Wear OS to build the new wearable experience and integrated Health…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":222,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F09\u002Falltrails-gains-over-1-million-downloads-wear-os-app.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":75,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":76,"end":189,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F09\u002Falltrails-gains-over-1-million-downloads-wear-os-app.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*a-Bv9K_-Xi1YIQ-m"}},"Paragraph:6048d46eb879_55":{"__typename":"Paragraph","id":"6048d46eb879_55","name":"09c7","type":"H3","href":null,"layout":null,"metadata":null,"text":"Android Developers Backstage🎙️","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":28,"href":"https:\u002F\u002Fadbackstage.libsyn.com\u002Fepisode-208-micro-optimizations","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_56":{"__typename":"Paragraph","id":"6048d46eb879_56","name":"e173","type":"P","href":null,"layout":null,"metadata":null,"text":"In episode 210 of Android Developers Backstage Chet, Romain and Tor chat with Sebastiano about how the Android Studio team builds UIs, covering how Compose for Desktop is used in parts of Android Studio and how the Compose Markdown renderer available in the Jewel library makes Studio Bot tick.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":3,"end":46,"href":"http:\u002F\u002Fadbackstage.libsyn.com\u002Fepisode-210-studio-jewelry","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_57":{"__typename":"Paragraph","id":"6048d46eb879_57","name":"50e2","type":"P","href":null,"layout":null,"metadata":null,"text":"Listen to it in podcast or youtube format.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":16,"end":23,"href":"http:\u002F\u002Fadbackstage.libsyn.com\u002Fepisode-210-studio-jewelry","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":27,"end":34,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=HmjKmoct3Ws","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:3c063f9ab0330345870a94623ca27a9c":{"__typename":"MediaResource","id":"3c063f9ab0330345870a94623ca27a9c","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=%2F%2Fhtml5-player.libsyn.com%2Fembed%2Fepisode%2Fid%2F33601522%2Fheight%2F90%2Ftheme%2Fcustom%2Fthumbnail%2Fyes%2Fdirection%2Fforward%2Frender-playlist%2Fno%2Fcustom-color%2F88AA3C%2F&display_name=Libsyn&url=https%3A%2F%2Fadbackstage.libsyn.com%2Fepisode-210-studio-jewelry&image=https%3A%2F%2Fassets.libsyn.com%2Fsecure%2Fitem%2F33601522&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=libsyn","iframeHeight":90,"iframeWidth":600,"title":"Episode 210: Studio Jewelry"},"Paragraph:6048d46eb879_58":{"__typename":"Paragraph","id":"6048d46eb879_58","name":"ec32","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:3c063f9ab0330345870a94623ca27a9c"}},"mixtapeMetadata":null},"MediaResource:b4a33a37a1b029a149cf199cc40236dc":{"__typename":"MediaResource","id":"b4a33a37a1b029a149cf199cc40236dc","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FHmjKmoct3Ws%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DHmjKmoct3Ws&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FHmjKmoct3Ws%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":"Studio Jewelry - Android Developers Backstage"},"Paragraph:6048d46eb879_59":{"__typename":"Paragraph","id":"6048d46eb879_59","name":"2149","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:b4a33a37a1b029a149cf199cc40236dc"}},"mixtapeMetadata":null},"Paragraph:6048d46eb879_60":{"__typename":"Paragraph","id":"6048d46eb879_60","name":"9db8","type":"H3","href":null,"layout":null,"metadata":null,"text":"Videos 📹","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":6,"href":"https:\u002F\u002Fwww.youtube.com\u002Fuser\u002Fandroiddevelopers","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_61":{"__typename":"Paragraph","id":"6048d46eb879_61","name":"8ff6","type":"P","href":null,"layout":null,"metadata":null,"text":"#TheAndroidShow included a live Q&A from Droidcon London, a big update to Gemini in Android Studio, coverage of the updated 2025 Android release schedule including some of the internal tech that makes it possible, and more!","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":15,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=iKTgKGeTRzg","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":60,"end":98,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ZfIE-LATgH4","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":100,"end":153,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=tU9-p4jME_w","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":27,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:6a413ee9c616ae6b0b1ac466d1da55f1":{"__typename":"MediaResource","id":"6a413ee9c616ae6b0b1ac466d1da55f1","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FiKTgKGeTRzg&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DiKTgKGeTRzg&image=http%3A%2F%2Fi.ytimg.com%2Fvi%2FiKTgKGeTRzg%2Fhqdefault.jpg&key=d04bfffea46d4aeda930ec88cc64b87c&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":""},"Paragraph:6048d46eb879_62":{"__typename":"Paragraph","id":"6048d46eb879_62","name":"85e2","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:6a413ee9c616ae6b0b1ac466d1da55f1"}},"mixtapeMetadata":null},"Paragraph:6048d46eb879_63":{"__typename":"Paragraph","id":"6048d46eb879_63","name":"d00a","type":"P","href":null,"layout":null,"metadata":null,"text":"Google Play released the October PolicyBytes, where Paul covered policy updates around health and medical apps, health misinformation, medical device access, Health Connect by Android permissions, the enforcement process, user data protection, and other key updates.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":25,"end":44,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=EhSIqbR2K-c","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:6c2fa72fdd5564f90ac02b8b65e3adc8":{"__typename":"MediaResource","id":"6c2fa72fdd5564f90ac02b8b65e3adc8","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FEhSIqbR2K-c&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DEhSIqbR2K-c&image=http%3A%2F%2Fi.ytimg.com%2Fvi%2FEhSIqbR2K-c%2Fhqdefault.jpg&key=d04bfffea46d4aeda930ec88cc64b87c&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":""},"Paragraph:6048d46eb879_64":{"__typename":"Paragraph","id":"6048d46eb879_64","name":"ca4a","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:6c2fa72fdd5564f90ac02b8b65e3adc8"}},"mixtapeMetadata":null},"Paragraph:6048d46eb879_65":{"__typename":"Paragraph","id":"6048d46eb879_65","name":"e1db","type":"P","href":null,"layout":null,"metadata":null,"text":"Elif covered recent Room renovations, including Room’s support for Kotlin Multiplatform (KMP), allowing you to share database code across Android, iOS, macOS, and Linux. The talk covers getting started with Room KMP, and the basics of defining entities and queries.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":20,"end":36,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=MwoRPPzeLtA","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:cd4c76620e7e0f8962313261146f7089":{"__typename":"MediaResource","id":"cd4c76620e7e0f8962313261146f7089","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FMwoRPPzeLtA%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DMwoRPPzeLtA&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FMwoRPPzeLtA%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":"Room renovations | Android Conference Talks"},"Paragraph:6048d46eb879_66":{"__typename":"Paragraph","id":"6048d46eb879_66","name":"8c18","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:cd4c76620e7e0f8962313261146f7089"}},"mixtapeMetadata":null},"Paragraph:6048d46eb879_67":{"__typename":"Paragraph","id":"6048d46eb879_67","name":"2169","type":"P","href":null,"layout":null,"metadata":null,"text":"Simona explores lazy grids, which provide a flexible alternative to using columns, especially for grids with multiple columns on larger screens.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":16,"end":26,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=qP-ieASbqMY","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:299152440ba6a3a386872c784462fadf":{"__typename":"MediaResource","id":"299152440ba6a3a386872c784462fadf","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FqP-ieASbqMY%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DqP-ieASbqMY&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FqP-ieASbqMY%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":"Lazy grids | Compose Tips"},"Paragraph:6048d46eb879_68":{"__typename":"Paragraph","id":"6048d46eb879_68","name":"a56a","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:299152440ba6a3a386872c784462fadf"}},"mixtapeMetadata":null},"Paragraph:6048d46eb879_69":{"__typename":"Paragraph","id":"6048d46eb879_69","name":"f32d","type":"P","href":null,"layout":null,"metadata":null,"text":"Jossi dives into AnchoredDraggable and how it enables swiping or dragging a component between anchor points.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":17,"end":34,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=JYtLy4V2x-A","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:e400addf24e16cb83428f0edfff60590":{"__typename":"MediaResource","id":"e400addf24e16cb83428f0edfff60590","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FJYtLy4V2x-A%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DJYtLy4V2x-A&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FJYtLy4V2x-A%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":"AnchoredDraggable | Compose Tips"},"Paragraph:6048d46eb879_70":{"__typename":"Paragraph","id":"6048d46eb879_70","name":"5c3d","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:e400addf24e16cb83428f0edfff60590"}},"mixtapeMetadata":null},"Paragraph:6048d46eb879_71":{"__typename":"Paragraph","id":"6048d46eb879_71","name":"de51","type":"P","href":null,"layout":null,"metadata":null,"text":"We also covered how Spotify drives discovery & engagement on and beyond the Play Store.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":20,"end":86,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=peEbiF8PsT4","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:ce8465ce275c7c86dfcd61910acf054c":{"__typename":"MediaResource","id":"ce8465ce275c7c86dfcd61910acf054c","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FpeEbiF8PsT4%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DpeEbiF8PsT4&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FpeEbiF8PsT4%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":"Android Developer Story: Spotify drives discovery & engagement on and beyond the Play Store"},"Paragraph:6048d46eb879_72":{"__typename":"Paragraph","id":"6048d46eb879_72","name":"c410","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:ce8465ce275c7c86dfcd61910acf054c"}},"mixtapeMetadata":null},"Paragraph:6048d46eb879_73":{"__typename":"Paragraph","id":"6048d46eb879_73","name":"7285","type":"H3","href":null,"layout":null,"metadata":null,"text":"Shorts ⏲️📹","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":9,"href":"https:\u002F\u002Fwww.youtube.com\u002F@AndroidDevelopers\u002Fshorts","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_74":{"__typename":"Paragraph","id":"6048d46eb879_74","name":"3cf5","type":"P","href":null,"layout":null,"metadata":null,"text":"Elif covered setting up your environment for Room and KMP in the Room renovations #short.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":65,"end":88,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ukqFbqL2uuM","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:c751b1e43874227bdd860889319c940b":{"__typename":"MediaResource","id":"c751b1e43874227bdd860889319c940b","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FukqFbqL2uuM%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DukqFbqL2uuM&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FukqFbqL2uuM%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":"Room renovations #shorts"},"Paragraph:6048d46eb879_75":{"__typename":"Paragraph","id":"6048d46eb879_75","name":"c135","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:c751b1e43874227bdd860889319c940b"}},"mixtapeMetadata":null},"Paragraph:6048d46eb879_76":{"__typename":"Paragraph","id":"6048d46eb879_76","name":"7f79","type":"P","href":null,"layout":null,"metadata":null,"text":"Simona’s lazy grids #short creates a landscape layout for portrait content by using lazy grids to expand the UI to multiple columns.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":9,"end":26,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=uBmwECZdbpw","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:dc9c7589e1fba05a7ed7e0daf541f555":{"__typename":"MediaResource","id":"dc9c7589e1fba05a7ed7e0daf541f555","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FuBmwECZdbpw%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DuBmwECZdbpw&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FuBmwECZdbpw%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":"Lazy grids #shorts"},"Paragraph:6048d46eb879_77":{"__typename":"Paragraph","id":"6048d46eb879_77","name":"0bb5","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:dc9c7589e1fba05a7ed7e0daf541f555"}},"mixtapeMetadata":null},"Paragraph:6048d46eb879_78":{"__typename":"Paragraph","id":"6048d46eb879_78","name":"b5d7","type":"P","href":null,"layout":null,"metadata":null,"text":"Our enable edge to edge short is a very quick reminder to call enableEdgeToEdge to get ready to target Android 15.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":4,"end":29,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=QyoL7QC5LHU","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":63,"end":79,"href":"https:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fkotlin\u002Fandroidx\u002Factivity\u002FComponentActivity#(androidx.activity.ComponentActivity).enableEdgeToEdge(androidx.activity.SystemBarStyle,androidx.activity.SystemBarStyle)","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:245740d2bdde6328e98dab293585ca9a":{"__typename":"MediaResource","id":"245740d2bdde6328e98dab293585ca9a","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FQyoL7QC5LHU%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DQyoL7QC5LHU&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FQyoL7QC5LHU%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":"Edge-to-edge display for #Android15"},"Paragraph:6048d46eb879_79":{"__typename":"Paragraph","id":"6048d46eb879_79","name":"dd86","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:245740d2bdde6328e98dab293585ca9a"}},"mixtapeMetadata":null},"Paragraph:6048d46eb879_80":{"__typename":"Paragraph","id":"6048d46eb879_80","name":"31a4","type":"H3","href":null,"layout":null,"metadata":null,"text":"Codelabs 🥼🧪","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":13,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fget-started\u002Fcodelabs","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_81":{"__typename":"Paragraph","id":"6048d46eb879_81","name":"83f1","type":"P","href":null,"layout":null,"metadata":null,"text":"The advanced activity embedding codelab covers a few newly-released features for activity embedding, including pane expansion, activity pinning, and full screen dialog dimming.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":4,"end":31,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fcodelabs\u002Flarge-screens\u002Fadvanced-activity-embedding","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_82":{"__typename":"Paragraph","id":"6048d46eb879_82","name":"85d1","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Advanced activity embedding | Android Developers\nIn this codelab you will learn how to use activity embedding's newly added feature to improve app large screen…developer.android.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":181,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fcodelabs\u002Flarge-screens\u002Fadvanced-activity-embedding","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":48,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":49,"end":160,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"https:\u002F\u002Fdeveloper.android.com\u002Fcodelabs\u002Flarge-screens\u002Fadvanced-activity-embedding","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*2C9fqYmrfAJLmRov"}},"Paragraph:6048d46eb879_83":{"__typename":"Paragraph","id":"6048d46eb879_83","name":"7313","type":"P","href":null,"layout":null,"metadata":null,"text":"The add Gemini capabilities to your Android app codelab guides you through the process of adding summarization capabilities to the JetNews sample application using Vertex AI in Firebase and the Gemini API.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":4,"end":47,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fcodelabs\u002Fgemini-summarize","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_84":{"__typename":"Paragraph","id":"6048d46eb879_84","name":"6e54","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Add Gemini capabilities to your Android app | Android Developers\nLearn how to add a simple Gemini API feature to an Android app with Vertex AI for Firebase.developer.android.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":177,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fcodelabs\u002Fgemini-summarize","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":64,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":65,"end":156,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"https:\u002F\u002Fdeveloper.android.com\u002Fcodelabs\u002Fgemini-summarize","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*uFHI-XCHd9U-BozY"}},"Paragraph:6048d46eb879_85":{"__typename":"Paragraph","id":"6048d46eb879_85","name":"c8b2","type":"H3","href":null,"layout":null,"metadata":null,"text":"AndroidX Releases 🚀","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":17,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Fversions\u002Fall-channel","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_86":{"__typename":"Paragraph","id":"6048d46eb879_86","name":"96f5","type":"P","href":null,"layout":null,"metadata":null,"text":"The first alpha of material 3 1.4 includes behavior changes, including Material 3 components using the new MotionScheme to define their motion, updated colors, and more. New features include wavy progress indicators, support for emphasized type scales, SplitButton shape morphs, and lots, lots, more.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":4,"end":33,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fcompose-material3#1.4.0-alpha01","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_87":{"__typename":"Paragraph","id":"6048d46eb879_87","name":"f9a5","type":"P","href":null,"layout":null,"metadata":null,"text":"The first alpha of navigation 2.9 supports custom navigators marking their destinations as implementing the SupportingPane interface, indicating to the NavController that these destinations will be shown alongside other destinations.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":4,"end":33,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fnavigation#2.9.0-alpha01","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_88":{"__typename":"Paragraph","id":"6048d46eb879_88","name":"eeec","type":"P","href":null,"layout":null,"metadata":null,"text":"We released the first alpha of Ink, a modular and configurable library to make it easy to create, render, and manipulate beautiful ink strokes authored in your application.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":12,"end":34,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fink#1.0.0-alpha01","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_89":{"__typename":"Paragraph","id":"6048d46eb879_89","name":"ac1c","type":"P","href":null,"layout":null,"metadata":null,"text":"ConstraintLayout moved to 2.2 and core moved to 1.1, fixing some interactions with SharedTransitionLayout and layout issues due to recomposition.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":17,"end":29,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fconstraintlayout#constraintlayout-2.2.0","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":34,"end":51,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fconstraintlayout#1.1.0","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_90":{"__typename":"Paragraph","id":"6048d46eb879_90","name":"ed69","type":"P","href":null,"layout":null,"metadata":null,"text":"We released the first alpha of credentials-registry, allowing providers to pre-register credential metadata with Credential Manager which can be later surfaced to the user by the Credential Manager upon an incoming app request.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":31,"end":51,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fcredentials-registry#1.0.0-alpha01","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_91":{"__typename":"Paragraph","id":"6048d46eb879_91","name":"a010","type":"P","href":null,"layout":null,"metadata":null,"text":"The first alpha of games 4.0 was released, with many fixes and support for left-right keys in GameTextInput.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":3,"end":41,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fgames#4.0.0-alpha01","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_92":{"__typename":"Paragraph","id":"6048d46eb879_92","name":"2fb1","type":"P","href":null,"layout":null,"metadata":null,"text":"The first alpha of wear-protolayout and wear-tiles were also released, with support for Roboto Flex, DynamicFormatter, and more.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":19,"end":35,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fwear-protolayout#1.3.0-alpha01","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":40,"end":50,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fwear-tiles#1.5.0-alpha01","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_93":{"__typename":"Paragraph","id":"6048d46eb879_93","name":"9da2","type":"H3","href":null,"layout":null,"metadata":null,"text":"Now then… 👋","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_94":{"__typename":"Paragraph","id":"6048d46eb879_94","name":"0b5b","type":"P","href":null,"layout":null,"metadata":null,"text":"That’s it for this week, with Android API level and schedule updates, more AI assistance from Gemini in Android Studio, Google Play updates to help with discovery, commerce, and security, spotlight weeks on Adaptive Android Apps and Android AI, simplified support for dual concurrent cameras in CameraX, responsive layout, lazy grids, and AnchoredDraggable in Jetpack Compose, KMP in Room, Material 3 1.4, Navigation 2.9, and Ink 1.0 in Android Jetpack,and more.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":30,"end":68,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fandroid-sdk-release-update.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":94,"end":118,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fwhats-new-in-gemini-in-android.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":119,"end":131,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fwhats-new-in-google-play.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":207,"end":228,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fadaptive-spotlight-week.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":233,"end":243,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F09\u002Fwelcome-to-ai-on-android-spotlight-week.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":273,"end":302,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fcamerax-update-makes-dual-concurrent-camera-easier.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":304,"end":321,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F10\u002Fcreating-responsive-dashboard-layout-for-jetlagged-jetpack-compose.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":323,"end":333,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=qP-ieASbqMY","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":339,"end":356,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=JYtLy4V2x-A","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":377,"end":388,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=MwoRPPzeLtA","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":390,"end":404,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fcompose-material3#1.4.0-alpha01","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":406,"end":420,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fnavigation#2.9.0-alpha01","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":426,"end":433,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fink#1.0.0-alpha01","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:6048d46eb879_95":{"__typename":"Paragraph","id":"6048d46eb879_95","name":"1876","type":"P","href":null,"layout":null,"metadata":null,"text":"Check back soon for your next update from the Android developer universe! 💫","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"CollectionViewerEdge:collectionId:95b274b437c2-viewerId:lo_0bf4f5e80a48":{"__typename":"CollectionViewerEdge","id":"collectionId:95b274b437c2-viewerId:lo_0bf4f5e80a48","isEditor":false,"isMuting":false},"ImageMetadata:1*5pMw_nx55x_66tk77kutPQ.png":{"__typename":"ImageMetadata","id":"1*5pMw_nx55x_66tk77kutPQ.png","originalWidth":600,"originalHeight":72},"PostViewerEdge:postId:9c60a12a8473-viewerId:lo_0bf4f5e80a48":{"__typename":"PostViewerEdge","shouldIndexPostForExternalSearch":true,"id":"postId:9c60a12a8473-viewerId:lo_0bf4f5e80a48"},"Tag:featured":{"__typename":"Tag","id":"featured","displayTitle":"Featured","normalizedTagSlug":"featured"},"Tag:jetpack-compose":{"__typename":"Tag","id":"jetpack-compose","displayTitle":"Jetpack Compose","normalizedTagSlug":"jetpack-compose"},"Tag:google-play":{"__typename":"Tag","id":"google-play","displayTitle":"Google Play","normalizedTagSlug":"google-play"},"Tag:android-studio":{"__typename":"Tag","id":"android-studio","displayTitle":"Android Studio","normalizedTagSlug":"android-studio"},"Tag:now-in-android":{"__typename":"Tag","id":"now-in-android","displayTitle":"Now In Android","normalizedTagSlug":"now-in-android"},"Post:9c60a12a8473":{"__typename":"Post","id":"9c60a12a8473","collection":{"__ref":"Collection:95b274b437c2"},"content({\"postMeteringOptions\":{}})":{"__typename":"PostContent","isLockedPreviewOnly":false,"bodyModel":{"__typename":"RichText","sections":[{"__typename":"Section","name":"bec8","startIndex":0,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null},{"__typename":"Section","name":"eb64","startIndex":7,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null}],"paragraphs":[{"__ref":"Paragraph:6048d46eb879_0"},{"__ref":"Paragraph:6048d46eb879_1"},{"__ref":"Paragraph:6048d46eb879_2"},{"__ref":"Paragraph:6048d46eb879_3"},{"__ref":"Paragraph:6048d46eb879_4"},{"__ref":"Paragraph:6048d46eb879_5"},{"__ref":"Paragraph:6048d46eb879_6"},{"__ref":"Paragraph:6048d46eb879_7"},{"__ref":"Paragraph:6048d46eb879_8"},{"__ref":"Paragraph:6048d46eb879_9"},{"__ref":"Paragraph:6048d46eb879_10"},{"__ref":"Paragraph:6048d46eb879_11"},{"__ref":"Paragraph:6048d46eb879_12"},{"__ref":"Paragraph:6048d46eb879_13"},{"__ref":"Paragraph:6048d46eb879_14"},{"__ref":"Paragraph:6048d46eb879_15"},{"__ref":"Paragraph:6048d46eb879_16"},{"__ref":"Paragraph:6048d46eb879_17"},{"__ref":"Paragraph:6048d46eb879_18"},{"__ref":"Paragraph:6048d46eb879_19"},{"__ref":"Paragraph:6048d46eb879_20"},{"__ref":"Paragraph:6048d46eb879_21"},{"__ref":"Paragraph:6048d46eb879_22"},{"__ref":"Paragraph:6048d46eb879_23"},{"__ref":"Paragraph:6048d46eb879_24"},{"__ref":"Paragraph:6048d46eb879_25"},{"__ref":"Paragraph:6048d46eb879_26"},{"__ref":"Paragraph:6048d46eb879_27"},{"__ref":"Paragraph:6048d46eb879_28"},{"__ref":"Paragraph:6048d46eb879_29"},{"__ref":"Paragraph:6048d46eb879_30"},{"__ref":"Paragraph:6048d46eb879_31"},{"__ref":"Paragraph:6048d46eb879_32"},{"__ref":"Paragraph:6048d46eb879_33"},{"__ref":"Paragraph:6048d46eb879_34"},{"__ref":"Paragraph:6048d46eb879_35"},{"__ref":"Paragraph:6048d46eb879_36"},{"__ref":"Paragraph:6048d46eb879_37"},{"__ref":"Paragraph:6048d46eb879_38"},{"__ref":"Paragraph:6048d46eb879_39"},{"__ref":"Paragraph:6048d46eb879_40"},{"__ref":"Paragraph:6048d46eb879_41"},{"__ref":"Paragraph:6048d46eb879_42"},{"__ref":"Paragraph:6048d46eb879_43"},{"__ref":"Paragraph:6048d46eb879_44"},{"__ref":"Paragraph:6048d46eb879_45"},{"__ref":"Paragraph:6048d46eb879_46"},{"__ref":"Paragraph:6048d46eb879_47"},{"__ref":"Paragraph:6048d46eb879_48"},{"__ref":"Paragraph:6048d46eb879_49"},{"__ref":"Paragraph:6048d46eb879_50"},{"__ref":"Paragraph:6048d46eb879_51"},{"__ref":"Paragraph:6048d46eb879_52"},{"__ref":"Paragraph:6048d46eb879_53"},{"__ref":"Paragraph:6048d46eb879_54"},{"__ref":"Paragraph:6048d46eb879_55"},{"__ref":"Paragraph:6048d46eb879_56"},{"__ref":"Paragraph:6048d46eb879_57"},{"__ref":"Paragraph:6048d46eb879_58"},{"__ref":"Paragraph:6048d46eb879_59"},{"__ref":"Paragraph:6048d46eb879_60"},{"__ref":"Paragraph:6048d46eb879_61"},{"__ref":"Paragraph:6048d46eb879_62"},{"__ref":"Paragraph:6048d46eb879_63"},{"__ref":"Paragraph:6048d46eb879_64"},{"__ref":"Paragraph:6048d46eb879_65"},{"__ref":"Paragraph:6048d46eb879_66"},{"__ref":"Paragraph:6048d46eb879_67"},{"__ref":"Paragraph:6048d46eb879_68"},{"__ref":"Paragraph:6048d46eb879_69"},{"__ref":"Paragraph:6048d46eb879_70"},{"__ref":"Paragraph:6048d46eb879_71"},{"__ref":"Paragraph:6048d46eb879_72"},{"__ref":"Paragraph:6048d46eb879_73"},{"__ref":"Paragraph:6048d46eb879_74"},{"__ref":"Paragraph:6048d46eb879_75"},{"__ref":"Paragraph:6048d46eb879_76"},{"__ref":"Paragraph:6048d46eb879_77"},{"__ref":"Paragraph:6048d46eb879_78"},{"__ref":"Paragraph:6048d46eb879_79"},{"__ref":"Paragraph:6048d46eb879_80"},{"__ref":"Paragraph:6048d46eb879_81"},{"__ref":"Paragraph:6048d46eb879_82"},{"__ref":"Paragraph:6048d46eb879_83"},{"__ref":"Paragraph:6048d46eb879_84"},{"__ref":"Paragraph:6048d46eb879_85"},{"__ref":"Paragraph:6048d46eb879_86"},{"__ref":"Paragraph:6048d46eb879_87"},{"__ref":"Paragraph:6048d46eb879_88"},{"__ref":"Paragraph:6048d46eb879_89"},{"__ref":"Paragraph:6048d46eb879_90"},{"__ref":"Paragraph:6048d46eb879_91"},{"__ref":"Paragraph:6048d46eb879_92"},{"__ref":"Paragraph:6048d46eb879_93"},{"__ref":"Paragraph:6048d46eb879_94"},{"__ref":"Paragraph:6048d46eb879_95"}]},"validatedShareKey":"","shareKeyCreator":null},"creator":{"__ref":"User:2e0fc9a4a8c2"},"inResponseToEntityType":null,"isLocked":false,"isMarkedPaywallOnly":false,"lockedSource":"LOCKED_POST_SOURCE_NONE","mediumUrl":"https:\u002F\u002Fmedium.com\u002Fandroiddevelopers\u002Fnow-in-android-111-9c60a12a8473","primaryTopic":null,"topics":[{"__typename":"Topic","slug":"android-development"}],"isPublished":true,"latestPublishedVersion":"6048d46eb879","visibility":"PUBLIC","postResponses":{"__typename":"PostResponses","count":0},"clapCount":124,"allowResponses":true,"isLimitedState":false,"title":"Now in Android #111","isSeries":false,"sequence":null,"uniqueSlug":"now-in-android-111-9c60a12a8473","socialTitle":"","socialDek":"","canonicalUrl":"","metaDescription":"","latestPublishedAt":1732053090545,"readingTime":8.780188679245283,"previewContent":{"__typename":"PreviewContent","subtitle":"Android API level and schedule updates, Gemini in Android Studio, Google Play, Spotlight weeks and more."},"previewImage":{"__ref":"ImageMetadata:1*Sy3ea40KCd6LSmU6QFUgDA.png"},"isShortform":false,"seoTitle":"","firstPublishedAt":1731018671662,"updatedAt":1732053090545,"shortformType":"SHORTFORM_TYPE_LINK","seoDescription":"","viewerEdge":{"__ref":"PostViewerEdge:postId:9c60a12a8473-viewerId:lo_0bf4f5e80a48"},"isSuspended":false,"license":"ALL_RIGHTS_RESERVED","tags":[{"__ref":"Tag:featured"},{"__ref":"Tag:jetpack-compose"},{"__ref":"Tag:google-play"},{"__ref":"Tag:android-studio"},{"__ref":"Tag:now-in-android"}],"isNewsletter":false,"statusForCollection":"APPROVED","pendingCollection":null,"detectedLanguage":"en","wordCount":2075,"layerCake":4,"responsesLocked":false}}</script><script>window.__MIDDLEWARE_STATE__={"session":{"xsrf":""},"cache":{"cacheStatus":"HIT"}}</script><script src="https://cdn-client.medium.com/lite/static/js/manifest.b2314f6d.js"></script><script src="https://cdn-client.medium.com/lite/static/js/9865.1496d74a.js"></script><script src="https://cdn-client.medium.com/lite/static/js/main.24534aeb.js"></script><script src="https://cdn-client.medium.com/lite/static/js/instrumentation.d9108df7.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/reporting.ff22a7a5.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9120.5df29668.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5049.d1ead72d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4810.6318add7.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6618.db187378.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2707.b0942613.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9977.5b3eb23a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8599.1ab63137.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5250.9f9e01d2.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6349.b071a958.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2648.26563adf.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8393.826a25fb.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7079.67349d50.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3735.afb7e926.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5642.a2d9f6a1.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6546.cd03f950.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6834.08de95de.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7346.72622eb9.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2420.2a5e2d95.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/839.ca7937c2.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7975.d195c6f1.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2106.21ff89d3.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7394.3d049572.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2961.00a48598.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8204.c4082863.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4391.59acaed3.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostPage.MainContent.c8a11795.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8414.6565ad5f.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3974.8d3e0217.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2527.a0afad8a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostResponsesContent.36c2ecf4.chunk.js"></script><script>window.main();</script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8e7385b45b35893c',t:'MTczMjM4OTY4Ni4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body></html>

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