CINXE.COM

<!doctype html><html lang="en"><head><title data-rh="true">Now in Android #106. I/O’24, Android 15, KMP, Compose… | by Alice Yuan | Android Developers | 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-05-30T21:31:37.129Z"/><meta data-rh="true" name="title" content="Now in Android #106. I/O’24, Android 15, KMP, Compose… | by Alice Yuan | Android Developers | Medium"/><meta data-rh="true" property="og:title" content="Now in Android #106"/><meta data-rh="true" property="al:android:url" content="medium://p/1b72759c5f0c"/><meta data-rh="true" property="al:ios:url" content="medium://p/1b72759c5f0c"/><meta data-rh="true" property="al:android:app_name" content="Medium"/><meta data-rh="true" name="description" content="Welcome to Now in Android, your ongoing guide to what’s new and notable in the world of Android development. In this episode we’ll cover I/O’24, Android 15, KMP, Compose, AndroidX, and more. Most of…"/><meta data-rh="true" property="og:description" content="I/O’24, Android 15, KMP, Compose, AndroidX, and more"/><meta data-rh="true" property="og:url" content="https://medium.com/androiddevelopers/now-in-android-106-1b72759c5f0c"/><meta data-rh="true" property="al:web:url" content="https://medium.com/androiddevelopers/now-in-android-106-1b72759c5f0c"/><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/@alice_yuan"/><meta data-rh="true" name="author" content="Alice Yuan"/><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 #106"/><meta data-rh="true" name="twitter:site" content="@androiddev"/><meta data-rh="true" name="twitter:app:url:iphone" content="medium://p/1b72759c5f0c"/><meta data-rh="true" property="twitter:description" content="I/O’24, Android 15, KMP, Compose, AndroidX, 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="6 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/@alice_yuan"/><link data-rh="true" rel="canonical" href="https://medium.com/androiddevelopers/now-in-android-106-1b72759c5f0c"/><link data-rh="true" rel="alternate" href="android-app://com.medium.reader/https/medium.com/p/1b72759c5f0c"/><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-106-1b72759c5f0c","dateCreated":"2024-05-30T21:31:37.129Z","datePublished":"2024-05-30T21:31:37.129Z","dateModified":"2024-11-24T21:23:32.968Z","headline":"Now in Android #106 - Android Developers - Medium","name":"Now in Android #106 - Android Developers - Medium","description":"Welcome to Now in Android, your ongoing guide to what’s new and notable in the world of Android development. In this episode we’ll cover I\u002FO’24, Android 15, KMP, Compose, AndroidX, and more. Most of…","identifier":"1b72759c5f0c","author":{"@type":"Person","name":"Alice Yuan","url":"https:\u002F\u002Fmedium.com\u002F@alice_yuan"},"creator":["Alice Yuan"],"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-106-1b72759c5f0c"}</script><style type="text/css" data-fela-rehydration="591" 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="591" 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="591" 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{line-height:1.12}.ps{letter-spacing:-0.022em}.pt{font-weight:600}.qm{margin-bottom:-0.28em}.qs{box-shadow:inset 0 0 0 1px #F2F2F2}.qt{padding:0px}.qu{padding:16px 20px}.qv{flex:1 1 auto}.qx{max-height:40px}.qy{-webkit-line-clamp:2}.qz{margin-top:8px}.ra{margin-top:12px}.rb{width:160px}.rc{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*ygzXrMmuCxtlzgth)}.rd{background-origin:border-box}.re{background-size:cover}.rf{height:167px}.rg{background-position:50% 50%}.rh{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*tVPdg2cT5W9azzy3)}.ri{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*qCZNI5dCFeLD63vH)}.rj{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*aQzPeKObvT7UPWm9)}.ru{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*816Iz60TL7YCREEq)}.rv{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*dX5yEiUnPvpndr4B)}.rw{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*oFV6aw_A1L5OdrHV)}.rx{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*m0316hopse5w7n4d)}.ry{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*VZLUu4096nUdOJHO)}.rz{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*4MmNtvKYOohUbpTt)}.sa{background-image:url(https://miro.medium.com/v2/resize:fit:320/1*qtD67Ce8fe-H2eRX1ggXAA.png)}.sb{padding:2px 4px}.sc{font-size:75%}.sd> strong{font-family:inherit}.se{font-family:source-code-pro, Menlo, Monaco, "Courier New", Courier, monospace}.sf{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*Ea3-svSCMuSLZauA)}.sg{margin-bottom:26px}.sh{margin-top:6px}.si{margin-right:8px}.sj{padding:8px 16px}.sk{border-radius:100px}.sl{transition:background 300ms ease}.sn{white-space:nowrap}.so{border-top:none}.sp{height:52px}.sq{max-height:52px}.sr{box-sizing:content-box}.ss{position:static}.su{max-width:155px}.tf{height:0px}.tg{margin-bottom:40px}.th{margin-bottom:48px}.tv{border-radius:2px}.tx{height:64px}.ty{width:64px}.tz{align-self:flex-end}.ud{padding-right:4px}.ue{font-weight:500}.ur{margin-top:16px}.us{color:rgba(255, 255, 255, 1)}.ut{fill:rgba(255, 255, 255, 1)}.uu{background:rgba(25, 25, 25, 1)}.uv{border-color:rgba(25, 25, 25, 1)}.uy:disabled{opacity:0.1}.uz:disabled:hover{background:rgba(25, 25, 25, 1)}.va:disabled:hover{border-color:rgba(25, 25, 25, 1)}.vb{margin-bottom:54px}.vh{gap:18px}.vi{fill:rgba(61, 61, 61, 1)}.vp{border-bottom:solid 1px #E5E5E5}.vq{margin-top:72px}.vr{padding:24px 0}.vs{margin-bottom:0px}.vt{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}.sm:hover{background-color:#F2F2F2}.tw:hover{background-color:none}.uw:hover{background:#000000}.ux:hover{border-color:#242424}.vj: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="591" 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}.qi{font-size:24px}.qj{margin-top:1.25em}.qk{line-height:30px}.ql{letter-spacing:-0.016em}.qr{margin-top:32px}.ro{margin-top:1.95em}.rt{margin-top:0.94em}.sz{display:inline-block}.te{margin-bottom:104px}.ti{flex-direction:row}.tl{margin-bottom:0}.tm{margin-right:20px}.ua{max-width:500px}.up{line-height:24px}.uq{letter-spacing:0}.vg{margin-bottom:72px}.vo{padding-top:72px}</style><style type="text/css" data-fela-rehydration="591" data-fela-type="RULE" media="all and (max-width: 1079.98px)">.e{display:none}.mz{margin-top:0px}.sy{display:inline-block}</style><style type="text/css" data-fela-rehydration="591" data-fela-type="RULE" media="all and (max-width: 903.98px)">.f{display:none}.my{margin-top:0px}.sx{display:inline-block}</style><style type="text/css" data-fela-rehydration="591" data-fela-type="RULE" media="all and (max-width: 727.98px)">.g{display:none}.mw{margin-top:0px}.mx{margin-right:0px}.qw{padding:10px 12px 10px}.sw{display:inline-block}</style><style type="text/css" data-fela-rehydration="591" 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}.pu{font-size:20px}.pv{margin-top:0.93em}.pw{letter-spacing:0}.qn{margin-top:24px}.rk{margin-top:1.2em}.rp{margin-top:0.67em}.sv{display:inline-block}.ta{margin-bottom:96px}.tt{margin-bottom:20px}.tu{margin-right:0}.uf{font-size:24px}.ug{line-height:30px}.uh{letter-spacing:-0.016em}.vc{margin-bottom:64px}.vk{padding-top:48px}.nv:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="591" 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}.qe{font-size:24px}.qf{margin-top:1.25em}.qg{line-height:30px}.qh{letter-spacing:-0.016em}.qq{margin-top:32px}.rn{margin-top:1.95em}.rs{margin-top:0.94em}.td{margin-bottom:104px}.tj{flex-direction:row}.tn{margin-bottom:0}.to{margin-right:20px}.ub{max-width:500px}.un{line-height:24px}.uo{letter-spacing:0}.vf{margin-bottom:72px}.vn{padding-top:72px}</style><style type="text/css" data-fela-rehydration="591" 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}.qa{font-size:24px}.qb{margin-top:1.25em}.qc{line-height:30px}.qd{letter-spacing:-0.016em}.qp{margin-top:32px}.rm{margin-top:1.95em}.rr{margin-top:0.94em}.tc{margin-bottom:104px}.tk{flex-direction:row}.tp{margin-bottom:0}.tq{margin-right:20px}.uc{max-width:500px}.ul{line-height:24px}.um{letter-spacing:0}.ve{margin-bottom:72px}.vm{padding-top:72px}</style><style type="text/css" data-fela-rehydration="591" 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}.px{font-size:20px}.py{margin-top:0.93em}.pz{letter-spacing:0}.qo{margin-top:24px}.rl{margin-top:1.2em}.rq{margin-top:0.67em}.tb{margin-bottom:96px}.tr{margin-bottom:20px}.ts{margin-right:0}.ui{font-size:24px}.uj{line-height:30px}.uk{letter-spacing:-0.016em}.vd{margin-bottom:64px}.vl{padding-top:48px}.oc:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="591" data-fela-type="RULE" media="print">.st{display:none}</style><style type="text/css" data-fela-rehydration="591" 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="591" 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%2F1b72759c5f0c&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-106-1b72759c5f0c&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-106-1b72759c5f0c&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="73a7" 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 #106</h1></div><div><h2 id="ee00" 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/05/15-things-to-know-for-android-developers-google-io-2024.html" rel="noopener ugc nofollow" target="_blank">I/O’24</a>, <a class="af jg" href="http://android-developers.googleblog.com/2024/05/the-second-beta-of-android-15.html" rel="noopener ugc nofollow" target="_blank">Android 15</a>, <a class="af jg" href="http://android-developers.googleblog.com/2024/05/android-support-for-kotlin-multiplatform-to-share-business-logic-across-mobile-web-server-desktop.html" rel="noopener ugc nofollow" target="_blank">KMP</a>, Compose, <a class="af jg" href="https://developer.android.com/jetpack/androidx/versions/all-channel" rel="noopener ugc nofollow" target="_blank">AndroidX</a>, and more</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="/@alice_yuan?source=post_page---byline--1b72759c5f0c--------------------------------"><div class="l jn jo by jp jq"><div class="l fj"><img alt="Alice Yuan" class="l fd by dd de cx" src="https://miro.medium.com/v2/resize:fill:88:88/1*YO6UsorsU7z0MZzxhXLgNw.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--1b72759c5f0c--------------------------------" 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="/@alice_yuan?source=post_page---byline--1b72759c5f0c--------------------------------">Alice Yuan</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%2Feb38ed87b679&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-106-1b72759c5f0c&amp;user=Alice+Yuan&amp;userId=eb38ed87b679&amp;source=post_page-eb38ed87b679--byline--1b72759c5f0c---------------------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--1b72759c5f0c--------------------------------" 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">6 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">May 30, 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%2F1b72759c5f0c&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-106-1b72759c5f0c&amp;user=Alice+Yuan&amp;userId=eb38ed87b679&amp;source=---header_actions--1b72759c5f0c---------------------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%2F1b72759c5f0c&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-106-1b72759c5f0c&amp;source=---header_actions--1b72759c5f0c---------------------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="c170" 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 Now in Android, your ongoing guide to what’s new and notable in the world of Android development. In this episode we’ll cover <a class="af jg" href="https://android-developers.googleblog.com/2024/05/15-things-to-know-for-android-developers-google-io-2024.html" rel="noopener ugc nofollow" target="_blank">I/O’24</a>, <a class="af jg" href="http://android-developers.googleblog.com/2024/05/the-second-beta-of-android-15.html" rel="noopener ugc nofollow" target="_blank">Android 15</a>, <a class="af jg" href="http://android-developers.googleblog.com/2024/05/android-support-for-kotlin-multiplatform-to-share-business-logic-across-mobile-web-server-desktop.html" rel="noopener ugc nofollow" target="_blank">KMP</a>, Compose, <a class="af jg" href="https://developer.android.com/jetpack/androidx/versions/all-channel" rel="noopener ugc nofollow" target="_blank">AndroidX</a>, 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><figure class="pa pb pc pd pe gs"><div class="pf kr l fj"><div class="pi ph l"></div></div></figure><p id="72bc" 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/eWRd0VIBKIY" rel="noopener ugc nofollow" target="_blank">video</a> or <a class="af jg" href="https://nowinandroid.libsyn.com/104-android-studio-jellyfish-ab-testing-power-consumption-new-androidx-releases-and-more" rel="noopener ugc nofollow" target="_blank">podcast</a>, so feel free to <a class="af jg" href="https://youtu.be/eWRd0VIBKIY" rel="noopener ugc nofollow" target="_blank">watch</a> or <a class="af jg" href="https://nowinandroid.libsyn.com/104-android-studio-jellyfish-ab-testing-power-consumption-new-androidx-releases-and-more" 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"><h1 id="3a21" class="pr ps ht bf pt pu pv it pw px py iw pz qa qb qc qd qe qf qg qh qi qj qk ql qm bk">Announcements 📣</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 hd"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*TmF6On6Byfjqa7aEqhTfBQ.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*TmF6On6Byfjqa7aEqhTfBQ.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*TmF6On6Byfjqa7aEqhTfBQ.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*TmF6On6Byfjqa7aEqhTfBQ.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*TmF6On6Byfjqa7aEqhTfBQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*TmF6On6Byfjqa7aEqhTfBQ.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*TmF6On6Byfjqa7aEqhTfBQ.png 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/1*TmF6On6Byfjqa7aEqhTfBQ.png 640w, https://miro.medium.com/v2/resize:fit:720/1*TmF6On6Byfjqa7aEqhTfBQ.png 720w, https://miro.medium.com/v2/resize:fit:750/1*TmF6On6Byfjqa7aEqhTfBQ.png 750w, https://miro.medium.com/v2/resize:fit:786/1*TmF6On6Byfjqa7aEqhTfBQ.png 786w, https://miro.medium.com/v2/resize:fit:828/1*TmF6On6Byfjqa7aEqhTfBQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*TmF6On6Byfjqa7aEqhTfBQ.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*TmF6On6Byfjqa7aEqhTfBQ.png 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><p id="f749" 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"><a class="af jg" href="https://youtube.com/playlist?list=PL590L5WQmH8doPo8OufXavO2Qu4ysZjyl&amp;si=oqySaivz_tgW0zNA" rel="noopener ugc nofollow" target="_blank">Google I/O happened on May 14th</a>. Did you miss an Android announcement?</p><p id="0ba3" 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 out the blog post <a class="af jg" href="https://android-developers.googleblog.com/2024/05/15-things-to-know-for-android-developers-google-io-2024.html" rel="noopener ugc nofollow" target="_blank">15 Things to know for Android developers at Google I/O</a>. This covered a range of updates to our tools and services grounded in productivity, helping make it faster and easier for you to build excellent experiences across form factors, as well as how we’re reimagining Android with AI at the core.</p><div class="qn qo qp qq qr qs"><a href="https://android-developers.googleblog.com/2024/05/15-things-to-know-for-android-developers-google-io-2024.html?source=post_page-----1b72759c5f0c--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qt ab kj"><div class="qu ab co cb qv qw"><h2 class="bf hu ka z kr qx kt ku qy kw ky hs bk">15 Things to know for Android developers at Google I/O</h2><div class="qz l"><h3 class="bf b ka z kr qx kt ku qy kw ky du">Take a peak at some of the ways Android is here to support you. Don&#x27;t forget to check out the Android track at Google…</h3></div><div class="ra l"><p class="bf b dv z kr qx kt ku qy kw ky du">android-developers.googleblog.com</p></div></div><div class="rb l"><div class="rc l rd re rf rb rg hp qs"></div></div></div></a></div><p id="530b" 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="http://android-developers.googleblog.com/2024/05/the-second-beta-of-android-15.html" rel="noopener ugc nofollow" target="_blank">The Second Beta of Android 15</a> which includes improved large-screen multitasking, private space, predictive back on by default, generated widget previews, and more. Also, the Android 15 beta is available on more devices.</p><div class="qn qo qp qq qr qs"><a href="http://android-developers.googleblog.com/2024/05/the-second-beta-of-android-15.html?source=post_page-----1b72759c5f0c--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qt ab kj"><div class="qu ab co cb qv qw"><h2 class="bf hu ka z kr qx kt ku qy kw ky hs bk">The Second Beta of Android 15</h2><div class="qz l"><h3 class="bf b ka z kr qx kt ku qy kw ky du">The Android 15 beta is now available on across devices, with everything you need to try Android 15 features, test your…</h3></div><div class="ra l"><p class="bf b dv z kr qx kt ku qy kw ky du">android-developers.googleblog.com</p></div></div><div class="rb l"><div class="rh l rd re rf rb rg hp qs"></div></div></div></a></div><p id="a69f" 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">Android has been actively supporting Kotlin since 2017, and is now supporting Kotlin Multiplatform which enables sharing code across mobile, web, server, and desktop platforms. Check out the blog post <a class="af jg" href="http://android-developers.googleblog.com/2024/05/android-support-for-kotlin-multiplatform-to-share-business-logic-across-mobile-web-server-desktop.html" rel="noopener ugc nofollow" target="_blank">Android Support for Kotlin Multiplatform to Share Business Logic Across Mobile, Web, Server, and Desktop Platforms</a>.</p><div class="qn qo qp qq qr qs"><a href="http://android-developers.googleblog.com/2024/05/android-support-for-kotlin-multiplatform-to-share-business-logic-across-mobile-web-server-desktop.html?source=post_page-----1b72759c5f0c--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qt ab kj"><div class="qu ab co cb qv qw"><h2 class="bf hu ka z kr qx kt ku qy kw ky hs bk">Android Support for Kotlin Multiplatform (KMP) to Share Business Logic Across Mobile, Web, Server…</h2><div class="qz l"><h3 class="bf b ka z kr qx kt ku qy kw ky du">We are supporting Kotlin Multiplatform on Android, enabling sharing code across platforms to increase productivity and…</h3></div><div class="ra l"><p class="bf b dv z kr qx kt ku qy kw ky du">android-developers.googleblog.com</p></div></div><div class="rb l"><div class="ri l rd re rf rb rg hp qs"></div></div></div></a></div><p id="1090" 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 released the first alpha version of the <a class="af jg" href="https://developer.android.com/studio/preview/compose-screenshot-testing" rel="noopener ugc nofollow" target="_blank">Compose Preview Screenshot Testing</a> tool. Screenshot testing is an effective way to verify how your UI looks to users, leveraging the simplicity and speed of Compose previews.</p><div class="qn qo qp qq qr qs"><a href="https://developer.android.com/studio/preview/compose-screenshot-testing?source=post_page-----1b72759c5f0c--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qt ab kj"><div class="qu ab co cb qv qw"><h2 class="bf hu ka z kr qx kt ku qy kw ky hs bk">Compose Preview Screenshot Testing | Android Studio | Android Developers</h2><div class="qz l"><h3 class="bf b ka z kr qx kt ku qy kw ky du">Learn how to run screenshot tests of Compose UIs.</h3></div><div class="ra l"><p class="bf b dv z kr qx kt ku qy kw ky du">developer.android.com</p></div></div><div class="rb l"><div class="rj l rd re rf rb rg hp qs"></div></div></div></a></div><h1 id="a141" class="pr ps ht bf pt pu rk it pw px rl iw pz qa rm qc qd qe rn qg qh qi ro qk ql qm bk"><strong class="al">Android Developers blog 📝</strong></h1><p id="3622" class="pw-post-body-paragraph oe of ht og b ir rp oi oj iu rq ol om on rr op oq or rs ot ou ov rt ox oy oz gn bk">Trying to understand what’s new with a specific area of Android? Check out the following I/O’24 blog posts:</p><p id="2b0f" 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"><a class="af jg" href="http://android-developers.googleblog.com/2024/05/io-24-whats-new-in-google-play.html" rel="noopener ugc nofollow" target="_blank">What’s new in Google Play</a> we shared a brand new play store surface in developer preview, updates to Google Play SDK Console and Play Integrity API to help you reinforce trust with secure, high-quality experiences. Also we shared more ways to acquire and engage users, and optimize your revenue.</p><div class="qn qo qp qq qr qs"><a href="http://android-developers.googleblog.com/2024/05/io-24-whats-new-in-google-play.html?source=post_page-----1b72759c5f0c--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qt ab kj"><div class="qu ab co cb qv qw"><h2 class="bf hu ka z kr qx kt ku qy kw ky hs bk">I/O 2024: What&#x27;s new in Google Play</h2><div class="qz l"><h3 class="bf b ka z kr qx kt ku qy kw ky du">We&#x27;re giving you the tools to grow your revenue, delight users with your content, both on and beyond the Play Store and…</h3></div><div class="ra l"><p class="bf b dv z kr qx kt ku qy kw ky du">android-developers.googleblog.com</p></div></div><div class="rb l"><div class="ru l rd re rf rb rg hp qs"></div></div></div></a></div><p id="1515" 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"><a class="af jg" href="http://android-developers.googleblog.com/2024/05/whats-new-in-jetpack-compose-at-io-24.html" rel="noopener ugc nofollow" target="_blank">What’s new in Jetpack Compose</a> we announced the upcoming June ’24 Jetpack Compose release and announced expanded Compose support across the ecosystem of Android devices.</p><div class="qn qo qp qq qr qs"><a href="http://android-developers.googleblog.com/2024/05/whats-new-in-jetpack-compose-at-io-24.html?source=post_page-----1b72759c5f0c--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qt ab kj"><div class="qu ab co cb qv qw"><h2 class="bf hu ka z kr qx kt ku qy kw ky hs bk">What&#x27;s new in Jetpack Compose at I/O &#x27;24</h2><div class="qz l"><h3 class="bf b ka z kr qx kt ku qy kw ky du">Here&#x27;s an overview of all Jetpack Compose news, announcements, and updates at Google I/O &#x27;24.</h3></div><div class="ra l"><p class="bf b dv z kr qx kt ku qy kw ky du">android-developers.googleblog.com</p></div></div><div class="rb l"><div class="rv l rd re rf rb rg hp qs"></div></div></div></a></div><p id="558b" 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"><a class="af jg" href="http://android-developers.googleblog.com/2024/05/whats-new-in-wear-os-io-24.html" rel="noopener ugc nofollow" target="_blank">What’s new in Wear OS</a> we announced that we released the Developer Preview of Wear OS 5, the next iteration of the Watch Face Format with Wear OS 5 and tooling and library updates.</p><div class="qn qo qp qq qr qs"><a href="http://android-developers.googleblog.com/2024/05/whats-new-in-wear-os-io-24.html?source=post_page-----1b72759c5f0c--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qt ab kj"><div class="qu ab co cb qv qw"><h2 class="bf hu ka z kr qx kt ku qy kw ky hs bk">What&#x27;s new in Wear OS - I/O &#x27;24</h2><div class="qz l"><h3 class="bf b ka z kr qx kt ku qy kw ky du">With Wear OS 5, tracking your workout is now more efficient with enhanced security, user customizations, power…</h3></div><div class="ra l"><p class="bf b dv z kr qx kt ku qy kw ky du">android-developers.googleblog.com</p></div></div><div class="rb l"><div class="rw l rd re rf rb rg hp qs"></div></div></div></a></div><p id="9712" 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"><a class="af jg" href="http://android-developers.googleblog.com/2024/05/get-big-picture-with-large-screens-at-google-io-24.html" rel="noopener ugc nofollow" target="_blank">Get the big picture with Large Screens</a>. At I/O we covered building adaptable apps, increasing user productivity with key inputs like keyboard and stylus, and scaling games across surfaces.</p><div class="qn qo qp qq qr qs"><a href="http://android-developers.googleblog.com/2024/05/get-big-picture-with-large-screens-at-google-io-24.html?source=post_page-----1b72759c5f0c--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qt ab kj"><div class="qu ab co cb qv qw"><h2 class="bf hu ka z kr qx kt ku qy kw ky hs bk">Get the big picture with Large Screens at Google I/O 2024</h2><div class="qz l"><h3 class="bf b ka z kr qx kt ku qy kw ky du">At this year&#x27;s Google I/O, we covered building adaptable apps, increasing user productivity with key inputs, and…</h3></div><div class="ra l"><p class="bf b dv z kr qx kt ku qy kw ky du">android-developers.googleblog.com</p></div></div><div class="rb l"><div class="rx l rd re rf rb rg hp qs"></div></div></div></a></div><p id="26f0" 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"><a class="af jg" href="http://android-developers.googleblog.com/2024/05/the-latest-updates-from-android-health-io-2024.html" rel="noopener ugc nofollow" target="_blank">Level up your apps with the latest features from Android Health</a> Our updates this year focus on helping you build up a strong foundation of health data, with support for more data types, new ways to access data, and methods of getting timely data updates.</p><div class="qn qo qp qq qr qs"><a href="http://android-developers.googleblog.com/2024/05/the-latest-updates-from-android-health-io-2024.html?source=post_page-----1b72759c5f0c--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qt ab kj"><div class="qu ab co cb qv qw"><h2 class="bf hu ka z kr qx kt ku qy kw ky hs bk">Level up your apps with the latest features from Android Health</h2><div class="qz l"><h3 class="bf b ka z kr qx kt ku qy kw ky du">Android Health helps you build up a data foundation with support for more data types and new ways to access, for timely…</h3></div><div class="ra l"><p class="bf b dv z kr qx kt ku qy kw ky du">android-developers.googleblog.com</p></div></div><div class="rb l"><div class="ry l rd re rf rb rg hp qs"></div></div></div></a></div><h1 id="9dab" class="pr ps ht bf pt pu rk it pw px rl iw pz qa rm qc qd qe rn qg qh qi ro qk ql qm bk"><a class="af jg" href="http://developer.android.com" rel="noopener ugc nofollow" target="_blank">Developer.Android.com</a> updates 💻</h1><p id="74df" class="pw-post-body-paragraph oe of ht og b ir rp oi oj iu rq ol om on rr op oq or rs ot ou ov rt ox oy oz gn bk">Along with the new announcements, we’ve been updating <a class="af jg" href="http://developer.android.com" rel="noopener ugc nofollow" target="_blank">developer.android.com</a> to be better than ever! Check out our new <a class="af jg" href="https://developer.android.com/ai" rel="noopener ugc nofollow" target="_blank">AI</a>, <a class="af jg" href="https://developer.android.com/identity" rel="noopener ugc nofollow" target="_blank">Identity</a> and <a class="af jg" href="https://developer.android.com/social-and-messaging" rel="noopener ugc nofollow" target="_blank">Social and Messaging</a> documentation hubs. These new hubs offer guidance around critical user journeys such as high performance on-device AI with Gemini Nano, how to do user authentication with Passkeys and how to do media capture and creation.</p><h1 id="6040" class="pr ps ht bf pt pu rk it pw px rl iw pz qa rm qc qd qe rn qg qh qi ro qk ql qm bk">Medium 📝</h1><p id="3647" class="pw-post-body-paragraph oe of ht og b ir rp oi oj iu rq ol om on rr op oq or rs ot ou ov rt ox oy oz gn bk">Check out the following medium blog posts:</p><p id="1a41" 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">Shahbaz wrote about <a class="af jg" rel="noopener" href="/androiddevelopers/multisampled-anti-aliasing-for-almost-free-on-tile-based-rendering-hardware-21794c479cb9">Multisampled Anti-aliasing For Almost Free</a>. If you get it right, you can seriously improve the visuals of your game with little effort.</p><div class="qn qo qp qq qr qs"><a rel="noopener follow" target="_blank" href="/androiddevelopers/multisampled-anti-aliasing-for-almost-free-on-tile-based-rendering-hardware-21794c479cb9?source=post_page-----1b72759c5f0c--------------------------------"><div class="qt ab kj"><div class="qu ab co cb qv qw"><h2 class="bf hu ka z kr qx kt ku qy kw ky hs bk">Multisampled Anti-aliasing For Almost Free — On Tile-Based Rendering Hardware</h2><div class="qz l"><h3 class="bf b ka z kr qx kt ku qy kw ky du">Improve the visuals in your Android game at no cost by following these best practices.</h3></div><div class="ra l"><p class="bf b dv z kr qx kt ku qy kw ky du">medium.com</p></div></div><div class="rb l"><div class="rz l rd re rf rb rg hp qs"></div></div></div></a></div><p id="1be8" 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">If you are developing a Wear OS app, Chiara wrote about <a class="af jg" rel="noopener" href="/androiddevelopers/tools-and-libraries-to-help-your-wear-os-app-satisfy-google-play-app-quality-requirements-a4f061f18e26">tools and libraries you can use to help your Wear OS app satisfy Google Play app quality requirements</a>.</p><div class="qn qo qp qq qr qs"><a rel="noopener follow" target="_blank" href="/androiddevelopers/tools-and-libraries-to-help-your-wear-os-app-satisfy-google-play-app-quality-requirements-a4f061f18e26?source=post_page-----1b72759c5f0c--------------------------------"><div class="qt ab kj"><div class="qu ab co cb qv qw"><h2 class="bf hu ka z kr qx kt ku qy kw ky hs bk">Tools and libraries to help your Wear OS app satisfy Google Play app quality requirements</h2><div class="qz l"><h3 class="bf b ka z kr qx kt ku qy kw ky du">Learn about available tools and libraries to help you easily meet Wear OS app quality requirements to be published on…</h3></div><div class="ra l"><p class="bf b dv z kr qx kt ku qy kw ky du">medium.com</p></div></div><div class="rb l"><div class="sa l rd re rf rb rg hp qs"></div></div></div></a></div><h1 id="23ac" class="pr ps ht bf pt pu rk it pw px rl iw pz qa rm qc qd qe rn qg qh qi ro qk ql qm bk">Codelabs 🛠️</h1><p id="5a0f" class="pw-post-body-paragraph oe of ht og b ir rp oi oj iu rq ol om on rr op oq or rs ot ou ov rt ox oy oz gn bk">We’ve also added new codelabs, check out the new pathway: <a class="af jg" href="https://developer.android.com/courses/pathways/improve-user-experience" rel="noopener ugc nofollow" target="_blank">Improve the user experience of an Android app</a>. Learn how Edge to Edge, Predictive Back, and Glance can enhance the user experience and quality of an Android app.</p><p id="43a6" 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">Also, check out <a class="af jg" href="https://developer.android.com/codelabs/jetpack-compose-performance#0" rel="noopener ugc nofollow" target="_blank">Practical performance problem solving in Jetpack Compose</a>. In this codelab, you learn how to improve the runtime performance of a Compose app.</p><h1 id="ad03" class="pr ps ht bf pt pu rk it pw px rl iw pz qa rm qc qd qe rn qg qh qi ro qk ql qm bk"><a class="af jg" href="http://adbackstage.libsyn.com/episode-206-make-it-faster" rel="noopener ugc nofollow" target="_blank">Android Developers Backstage</a>🎙️</h1><p id="fa55" class="pw-post-body-paragraph oe of ht og b ir rp oi oj iu rq ol om on rr op oq or rs ot ou ov rt ox oy oz gn bk">On <a class="af jg" href="https://adbackstage.libsyn.com/episode-206-make-it-faster" rel="noopener ugc nofollow" target="_blank">Android Developers Backstage episode 206: “Make it faster”</a> we cover ADB, “Android Debug Bridge”, the technology powering device connections.</p><p id="2c1a" 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">Romain and Tor talk with Fabien from the Android Studio team on his work to improve the debug stack — including the new USB speed detection feature recently unveiled at Google I/O.</p><p id="3ad6" 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="https://adbackstage.libsyn.com/episode-206-make-it-faster" rel="noopener ugc nofollow" target="_blank">podcast</a> or <a class="af jg" href="https://www.youtube.com/watch?v=D1xPZagZdqk" 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="5452" class="pr ps ht bf pt pu rk it pw px rl iw pz qa rm qc qd qe rn qg qh qi ro qk ql qm bk">AndroidX Releases 🚀</h1><p id="7a1b" class="pw-post-body-paragraph oe of ht og b ir rp oi oj iu rq ol om on rr op oq or rs ot ou ov rt ox oy oz gn bk">Finally, we had several exciting new libraries and features launched in Android Jetpack:</p><p id="f952" 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"><a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/camera#viewfinder-compose-1.0.0-alpha01" rel="noopener ugc nofollow" target="_blank">Camera Viewfinder Compose Version 1.0.0-alpha01</a> is released. This library introduces a Compose native Viewfinder composable, that can be used with CameraX and Camera2</p><p id="d508" 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"><a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/vectordrawable#vectordrawable-seekable-1.0.0" rel="noopener ugc nofollow" target="_blank">VectorDrawable-Seekable Version 1.0.0</a> is released. This launches <code class="cx sb sc sd se b"><a class="af jg" href="https://developer.android.com/reference/androidx/vectordrawable/graphics/drawable/SeekableAnimatedVectorDrawable" rel="noopener ugc nofollow" target="_blank">SeekableAnimatedVectorDrawable</a></code>, a seekable alternative to <code class="cx sb sc sd se b">AnimatedVectorDrawable</code> with some additional features.</p><p id="f81b" 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"><a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/vectordrawable#vectordrawable-seekable-1.0.0" rel="noopener ugc nofollow" target="_blank">ViewPager2 Version 1.1.0 </a>is released. This includes a number of fixes and adds the <code class="cx sb sc sd se b">FragmentTransactionCallback</code> interface for listening to fragment lifecycle changes that happen inside <code class="cx sb sc sd se b">FragmentStateAdapter</code>.</p><p id="5f04" 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"><a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/fragment#1.7.0" rel="noopener ugc nofollow" target="_blank">Fragment Version 1.7.0</a> is released. Fragments now provide support for Predictive in-app back when using Animator or when using <a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/transition#1.5.0" rel="noopener ugc nofollow" target="_blank">AndroidX Transition 1.5</a>. This allows users to use the back gesture to see the previous fragment by seeking your Animator/Transition before deciding to either commit the transaction via completing the gesture or canceling.</p><p id="92d9" 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"><a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/transition#1.5.0" rel="noopener ugc nofollow" target="_blank">Transition Version 1.5.0</a> is released. TransitionListeners now have new <code class="cx sb sc sd se b">onTransitionStart() </code>and <code class="cx sb sc sd se b">onTransitionEnd()</code> listeners that allow the developer to know whether the transition is starting or ending.</p><p id="be4b" 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"><a class="af jg" href="https://developer.android.com/jetpack/androidx/releases/webkit#1.11.0" rel="noopener ugc nofollow" target="_blank">Webkit Version 1.11.0</a> is released. This allows apps to control audio playback in WebView through the new <code class="cx sb sc sd se b"><a class="af jg" href="https://developer.android.com/reference/androidx/webkit/WebViewCompat#setAudioMuted(android.webkit.WebView,boolean)" rel="noopener ugc nofollow" target="_blank">setAudioMuted</a></code> and <code class="cx sb sc sd se b"><a class="af jg" href="https://developer.android.com/reference/androidx/webkit/WebViewCompat#isAudioMuted(android.webkit.WebView)" rel="noopener ugc nofollow" target="_blank">isAudioMuted</a></code> APIs, which are analogous to muting a tab in Chrome.</p><p id="1afb" 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">Make sure to check out the AndroidX release notes <a class="af jg" href="https://developer.android.com/jetpack/androidx/versions/all-channel" rel="noopener ugc nofollow" target="_blank">here</a> to learn more.</p><div class="qn qo qp qq qr qs"><a href="https://developer.android.com/jetpack/androidx/releases/?source=post_page-----1b72759c5f0c--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qt ab kj"><div class="qu ab co cb qv qw"><h2 class="bf hu ka z kr qx kt ku qy kw ky hs bk">AndroidX releases | Jetpack | Android Developers</h2><div class="qz l"><h3 class="bf b ka z kr qx kt ku qy kw ky du">Jetpack libraries ship separately from the Android OS, so updates to the libraries can happen independently and more…</h3></div><div class="ra l"><p class="bf b dv z kr qx kt ku qy kw ky du">developer.android.com</p></div></div><div class="rb l"><div class="sf l rd re rf rb rg hp qs"></div></div></div></a></div><h1 id="bcd9" class="pr ps ht bf pt pu rk it pw px rl iw pz qa rm qc qd qe rn qg qh qi ro qk ql qm bk">Now then… 👋</h1><p id="6a5b" class="pw-post-body-paragraph oe of ht og b ir rp oi oj iu rq ol om on rr op oq or rs ot ou ov rt ox oy oz gn bk">That’s it for this week with <a class="af jg" href="https://android-developers.googleblog.com/2024/05/15-things-to-know-for-android-developers-google-io-2024.html" rel="noopener ugc nofollow" target="_blank">I/O’24</a>, <a class="af jg" href="http://android-developers.googleblog.com/2024/05/the-second-beta-of-android-15.html" rel="noopener ugc nofollow" target="_blank">Android 15</a>, <a class="af jg" href="http://android-developers.googleblog.com/2024/05/android-support-for-kotlin-multiplatform-to-share-business-logic-across-mobile-web-server-desktop.html" rel="noopener ugc nofollow" target="_blank">KMP</a>, Compose, <a class="af jg" href="https://developer.android.com/jetpack/androidx/versions/all-channel" rel="noopener ugc nofollow" target="_blank">AndroidX</a>, and more!</p><p id="1712" 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="sg sh ab km"><div class="qz ab"><a class="si ay am ao" rel="noopener follow" href="/tag/kotlin?source=post_page-----1b72759c5f0c--------------------------------"><div class="sj fj cx sk ge sl sm bf b bg z bk sn">Kotlin</div></a></div><div class="qz ab"><a class="si ay am ao" rel="noopener follow" href="/tag/android-app-development?source=post_page-----1b72759c5f0c--------------------------------"><div class="sj fj cx sk ge sl sm bf b bg z bk sn">Android App Development</div></a></div><div class="qz ab"><a class="si ay am ao" rel="noopener follow" href="/tag/android-15?source=post_page-----1b72759c5f0c--------------------------------"><div class="sj fj cx sk ge sl sm bf b bg z bk sn">Android 15</div></a></div><div class="qz ab"><a class="si ay am ao" rel="noopener follow" href="/tag/now-in-android?source=post_page-----1b72759c5f0c--------------------------------"><div class="sj fj cx sk ge sl sm bf b bg z bk sn">Now In Android</div></a></div><div class="qz ab"><a class="si ay am ao" rel="noopener follow" href="/tag/featured?source=post_page-----1b72759c5f0c--------------------------------"><div class="sj fj cx sk ge sl sm bf b bg z bk sn">Featured</div></a></div></div></div></div><div class="l"></div><footer class="so pk sp sq sr ab q ss jw c"><div class="l ae"><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="ab cp st"><div class="ab q mh"><div class="su l"><span class="l sv sw sx 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%2F1b72759c5f0c&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-106-1b72759c5f0c&amp;user=Alice+Yuan&amp;userId=eb38ed87b679&amp;source=---footer_actions--1b72759c5f0c---------------------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 sy sz"><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%2F1b72759c5f0c&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-106-1b72759c5f0c&amp;user=Alice+Yuan&amp;userId=eb38ed87b679&amp;source=---footer_actions--1b72759c5f0c---------------------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%2F1b72759c5f0c&amp;operation=register&amp;redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-106-1b72759c5f0c&amp;source=---footer_actions--1b72759c5f0c---------------------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="ta tb tc td te l"><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="tf bh r tg"></div><div class="th l"><div class="ab ti tj tk kl kk"><div class="tl tm tn to tp tq tr ts tt tu ab cp"><div class="h k"><a href="https://medium.com/androiddevelopers?source=post_page---post_publication_info--1b72759c5f0c--------------------------------" rel="noopener follow"><div class="fj ab"><img alt="Android Developers" class="tv jn jo cx" src="https://miro.medium.com/v2/resize:fill:96:96/1*4Tg6pPzer7cIarYaszIKaQ.png" width="48" height="48" loading="lazy"/><div class="tv l jo jn fs n fr tw"></div></div></a></div><div class="j i d"><a href="https://medium.com/androiddevelopers?source=post_page---post_publication_info--1b72759c5f0c--------------------------------" rel="noopener follow"><div class="fj ab"><img alt="Android Developers" class="tv ty tx cx" src="https://miro.medium.com/v2/resize:fill:128:128/1*4Tg6pPzer7cIarYaszIKaQ.png" width="64" height="64" loading="lazy"/><div class="tv l tx ty fs n fr tw"></div></div></a></div><div class="j i d tz kj"><div class="ab"></div></div></div><div class="ab co qv"><div class="ua ub uc 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--1b72759c5f0c--------------------------------" rel="noopener follow"><h2 class="pw-author-name bf ue uf ug uh ui uj uk on ul um or un uo ov up uq bk"><span class="gn ud">Published in <!-- -->Android Developers</span></h2></a><div class="qz 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--1b72759c5f0c--------------------------------">52K 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--1b72759c5f0c--------------------------------">Last published <!-- -->5 days ago</a></div></div><div class="ur 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 ti tj tk kl kk"><div class="tl tm tn to tp tq tr ts tt tu ab cp"><div class="h k"><a tabindex="0" rel="noopener follow" href="/@alice_yuan?source=post_page---post_author_info--1b72759c5f0c--------------------------------"><div class="l fj"><img alt="Alice Yuan" class="l fd by jo jn cx" src="https://miro.medium.com/v2/resize:fill:96:96/1*YO6UsorsU7z0MZzxhXLgNw.jpeg" width="48" height="48" loading="lazy"/><div class="fr by l jo jn fs n ay tw"></div></div></a></div><div class="j i d"><a tabindex="0" rel="noopener follow" href="/@alice_yuan?source=post_page---post_author_info--1b72759c5f0c--------------------------------"><div class="l fj"><img alt="Alice Yuan" class="l fd by tx ty cx" src="https://miro.medium.com/v2/resize:fill:128:128/1*YO6UsorsU7z0MZzxhXLgNw.jpeg" width="64" height="64" loading="lazy"/><div class="fr by l tx ty fs n ay tw"></div></div></a></div><div class="j i d tz kj"><div class="ab"><span><button class="bf b bg z us sj ut uu uv uw ux ev ew uy uz va fa fb fc fd bm fe ff">Follow</button></span></div></div></div><div class="ab co qv"><div class="ua ub uc 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="/@alice_yuan?source=post_page---post_author_info--1b72759c5f0c--------------------------------"><h2 class="pw-author-name bf ue uf ug uh ui uj uk on ul um or un uo ov up uq bk"><span class="gn ud">Written by <!-- -->Alice Yuan</span></h2></a><div class="qz 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="/@alice_yuan/followers?source=post_page---post_author_info--1b72759c5f0c--------------------------------">428 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="/@alice_yuan/following?source=post_page---post_author_info--1b72759c5f0c--------------------------------">178 Following</a></div></div><div class="ur l"><p class="bf b bg z bk"><span class="gn">Android Developer Relations at Google. I talk about Android and also make comics!</span></p></div></div></div><div class="h k"><div class="ab"><span><button class="bf b bg z us sj ut uu uv uw ux ev ew uy uz va fa fb fc fd bm fe ff">Follow</button></span></div></div></div></div></div></div><div class="vb l"><div class="tf bh r vc vd ve vf vg"></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="ab q cp"><h2 class="bf ue pu it pw px iw pz qa qc qd qe qg qh qi qk ql bk">No responses yet</h2><div class="ab vh"><div><div class="bm" aria-hidden="false"><a class="vi vj" href="https://policy.medium.com/medium-rules-30e5502c4eb4?source=post_page---post_responses--1b72759c5f0c--------------------------------" 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="vk vl vm vn vo l bx"><div class="h k j"><div class="tf bh vp vq"></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="vr ab mh km"><div class="vs vt 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-----1b72759c5f0c--------------------------------" rel="noopener follow"><p class="bf b dv z du">Help</p></a></div><div class="vs vt 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-----1b72759c5f0c--------------------------------" rel="noopener follow"><p class="bf b dv z du">Status</p></a></div><div class="vs vt 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-----1b72759c5f0c--------------------------------"><p class="bf b dv z du">About</p></a></div><div class="vs vt 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-----1b72759c5f0c--------------------------------"><p class="bf b dv z du">Careers</p></a></div><div class="vs vt 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-----1b72759c5f0c--------------------------------" rel="noopener follow"><p class="bf b dv z du">Press</p></a></div><div class="vs vt 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-----1b72759c5f0c--------------------------------" rel="noopener follow"><p class="bf b dv z du">Blog</p></a></div><div class="vs vt 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-----1b72759c5f0c--------------------------------" rel="noopener follow"><p class="bf b dv z du">Privacy</p></a></div><div class="vs vt 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-----1b72759c5f0c--------------------------------" rel="noopener follow"><p class="bf b dv z du">Terms</p></a></div><div class="vs vt 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-----1b72759c5f0c--------------------------------" rel="noopener follow"><p class="bf b dv z du">Text to speech</p></a></div><div class="vs 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-----1b72759c5f0c--------------------------------"><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-20241126-181518-0cb59a020f"</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-1b72759c5f0c","user-eb38ed87b679","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":false,"routingEntity":{"type":"DEFAULT","explicit":false},"viewerIsBot":false},"debug":{"requestId":"f97641ed-c57e-4f65-8332-3422cbacb491","hybridDevServices":[],"originalSpanCarrier":{"traceparent":"00-c179c7e6335d182145d91bdc99aea0e3-147b9284f23a1709-01"}},"multiVote":{"clapsPerPost":{}},"navigation":{"branch":{"show":null,"hasRendered":null,"blockedByCTA":false},"hideGoogleOneTap":false,"hasRenderedAlternateUserBanner":null,"currentLocation":"https:\u002F\u002Fmedium.com\u002Fandroiddevelopers\u002Fnow-in-android-106-1b72759c5f0c","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-20241126-181518-0cb59a020f","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-20241126-181518-0cb59a020f","commit":"0cb59a020f4453d0900f671f1a6576feecc55e74"}},"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\":\"1b72759c5f0c\"})":{"__ref":"Post:1b72759c5f0c"}},"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":52047,"latestPostsConnection({\"paging\":{\"limit\":1}})":{"__typename":"PostConnection","posts":[{"__ref":"Post:255973814ae3"}]},"viewerEdge":{"__ref":"CollectionViewerEdge:collectionId:95b274b437c2-viewerId:lo_dc56a5384656"},"twitterUsername":"androiddev","facebookPageId":null,"logo":{"__ref":"ImageMetadata:1*5pMw_nx55x_66tk77kutPQ.png"}},"User:e1f26db83092":{"__typename":"User","id":"e1f26db83092"},"User:2e0fc9a4a8c2":{"__typename":"User","id":"2e0fc9a4a8c2"},"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:eb38ed87b679":{"__typename":"LinkedAccounts","mastodon":null,"id":"eb38ed87b679"},"UserViewerEdge:userId:eb38ed87b679-viewerId:lo_dc56a5384656":{"__typename":"UserViewerEdge","id":"userId:eb38ed87b679-viewerId:lo_dc56a5384656","isFollowing":false,"isUser":false,"isMuting":false},"NewsletterV3:b99b111a9b80":{"__typename":"NewsletterV3","id":"b99b111a9b80","type":"NEWSLETTER_TYPE_AUTHOR","slug":"eb38ed87b679","name":"eb38ed87b679","collection":null,"user":{"__ref":"User:eb38ed87b679"}},"User:eb38ed87b679":{"__typename":"User","id":"eb38ed87b679","name":"Alice Yuan","username":"alice_yuan","newsletterV3":{"__ref":"NewsletterV3:b99b111a9b80"},"linkedAccounts":{"__ref":"LinkedAccounts:eb38ed87b679"},"isSuspended":false,"imageId":"1*YO6UsorsU7z0MZzxhXLgNw.jpeg","mediumMemberAt":0,"verifications":{"__typename":"VerifiedInfo","isBookAuthor":false},"socialStats":{"__typename":"SocialStats","followerCount":428,"followingCount":173,"collectionFollowingCount":5},"customDomainState":null,"hasSubdomain":false,"bio":"Android Developer Relations at Google. I talk about Android and also make comics!","isPartnerProgramEnrolled":true,"viewerEdge":{"__ref":"UserViewerEdge:userId:eb38ed87b679-viewerId:lo_dc56a5384656"},"viewerIsUser":false,"postSubscribeMembershipUpsellShownAt":0,"membership":null,"allowNotes":true,"twitterScreenName":""},"ImageMetadata:1*Sy3ea40KCd6LSmU6QFUgDA.png":{"__typename":"ImageMetadata","id":"1*Sy3ea40KCd6LSmU6QFUgDA.png","originalHeight":1253,"originalWidth":4209,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:d4c7889aa09b_0":{"__typename":"Paragraph","id":"d4c7889aa09b_0","name":"1b30","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:d4c7889aa09b_1":{"__typename":"Paragraph","id":"d4c7889aa09b_1","name":"73a7","type":"H3","href":null,"layout":null,"metadata":null,"text":"Now in Android #106","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_2":{"__typename":"Paragraph","id":"d4c7889aa09b_2","name":"ee00","type":"H4","href":null,"layout":null,"metadata":null,"text":"I\u002FO’24, Android 15, KMP, Compose, AndroidX, and more","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":6,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002F15-things-to-know-for-android-developers-google-io-2024.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":8,"end":18,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fthe-second-beta-of-android-15.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":20,"end":23,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fandroid-support-for-kotlin-multiplatform-to-share-business-logic-across-mobile-web-server-desktop.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":34,"end":42,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Fversions\u002Fall-channel","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_3":{"__typename":"Paragraph","id":"d4c7889aa09b_3","name":"c170","type":"P","href":null,"layout":null,"metadata":null,"text":"Welcome to Now in Android, your ongoing guide to what’s new and notable in the world of Android development. In this episode we’ll cover I\u002FO’24, Android 15, KMP, Compose, AndroidX, and more.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":137,"end":143,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002F15-things-to-know-for-android-developers-google-io-2024.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":145,"end":155,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fthe-second-beta-of-android-15.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":157,"end":160,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fandroid-support-for-kotlin-multiplatform-to-share-business-logic-across-mobile-web-server-desktop.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":171,"end":179,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Fversions\u002Fall-channel","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:dcf9c64e9e77449e371b4b63ba5cf404":{"__typename":"MediaResource","id":"dcf9c64e9e77449e371b4b63ba5cf404","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FeWRd0VIBKIY%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DeWRd0VIBKIY&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FeWRd0VIBKIY%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":"Now in Android: 106 - I\u002FO '24, Android 15, KMP, Compose, AndroidX, and more!"},"Paragraph:d4c7889aa09b_4":{"__typename":"Paragraph","id":"d4c7889aa09b_4","name":"448a","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:dcf9c64e9e77449e371b4b63ba5cf404"}},"mixtapeMetadata":null},"MediaResource:1a3ebaccfad8e52601903f3bdc3cec98":{"__typename":"MediaResource","id":"1a3ebaccfad8e52601903f3bdc3cec98","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=%2F%2Fhtml5-player.libsyn.com%2Fembed%2Fepisode%2Fid%2F31092153%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%2F104-android-studio-jellyfish-ab-testing-power-consumption-new-androidx-releases-and-more&image=https%3A%2F%2Fassets.libsyn.com%2Fsecure%2Fitem%2F31092153&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=libsyn","iframeHeight":90,"iframeWidth":600,"title":"104 - Android Studio Jellyfish, A\u002FB testing power consumption, AndroidX, and more!"},"Paragraph:d4c7889aa09b_5":{"__typename":"Paragraph","id":"d4c7889aa09b_5","name":"f987","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:1a3ebaccfad8e52601903f3bdc3cec98"}},"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_6":{"__typename":"Paragraph","id":"d4c7889aa09b_6","name":"72bc","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\u002FeWRd0VIBKIY","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":72,"end":79,"href":"https:\u002F\u002Fnowinandroid.libsyn.com\u002F104-android-studio-jellyfish-ab-testing-power-consumption-new-androidx-releases-and-more","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":97,"end":102,"href":"https:\u002F\u002Fyoutu.be\u002FeWRd0VIBKIY","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":106,"end":112,"href":"https:\u002F\u002Fnowinandroid.libsyn.com\u002F104-android-studio-jellyfish-ab-testing-power-consumption-new-androidx-releases-and-more","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_7":{"__typename":"Paragraph","id":"d4c7889aa09b_7","name":"3a21","type":"H3","href":null,"layout":null,"metadata":null,"text":"Announcements 📣","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*TmF6On6Byfjqa7aEqhTfBQ.png":{"__typename":"ImageMetadata","id":"1*TmF6On6Byfjqa7aEqhTfBQ.png","originalHeight":1253,"originalWidth":4209,"focusPercentX":null,"focusPercentY":null,"alt":null},"Paragraph:d4c7889aa09b_8":{"__typename":"Paragraph","id":"d4c7889aa09b_8","name":"a40e","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:1*TmF6On6Byfjqa7aEqhTfBQ.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_9":{"__typename":"Paragraph","id":"d4c7889aa09b_9","name":"f749","type":"P","href":null,"layout":null,"metadata":null,"text":"Google I\u002FO happened on May 14th. Did you miss an Android announcement?","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":31,"href":"https:\u002F\u002Fyoutube.com\u002Fplaylist?list=PL590L5WQmH8doPo8OufXavO2Qu4ysZjyl&si=oqySaivz_tgW0zNA","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_10":{"__typename":"Paragraph","id":"d4c7889aa09b_10","name":"0ba3","type":"P","href":null,"layout":null,"metadata":null,"text":"Check out the blog post 15 Things to know for Android developers at Google I\u002FO. This covered a range of updates to our tools and services grounded in productivity, helping make it faster and easier for you to build excellent experiences across form factors, as well as how we’re reimagining Android with AI at the core.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":24,"end":78,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002F15-things-to-know-for-android-developers-google-io-2024.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_11":{"__typename":"Paragraph","id":"d4c7889aa09b_11","name":"2b6d","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"15 Things to know for Android developers at Google I\u002FO\nTake a peak at some of the ways Android is here to support you. Don't forget to check out the Android track at Google…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":206,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002F15-things-to-know-for-android-developers-google-io-2024.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":54,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":55,"end":173,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002F15-things-to-know-for-android-developers-google-io-2024.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*ygzXrMmuCxtlzgth"}},"Paragraph:d4c7889aa09b_12":{"__typename":"Paragraph","id":"d4c7889aa09b_12","name":"530b","type":"P","href":null,"layout":null,"metadata":null,"text":"We released The Second Beta of Android 15 which includes improved large-screen multitasking, private space, predictive back on by default, generated widget previews, and more. Also, the Android 15 beta is available on more devices.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":12,"end":41,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fthe-second-beta-of-android-15.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_13":{"__typename":"Paragraph","id":"d4c7889aa09b_13","name":"58a7","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"The Second Beta of Android 15\nThe Android 15 beta is now available on across devices, with everything you need to try Android 15 features, test your…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":182,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fthe-second-beta-of-android-15.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":29,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":30,"end":149,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fthe-second-beta-of-android-15.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*tVPdg2cT5W9azzy3"}},"Paragraph:d4c7889aa09b_14":{"__typename":"Paragraph","id":"d4c7889aa09b_14","name":"a69f","type":"P","href":null,"layout":null,"metadata":null,"text":"Android has been actively supporting Kotlin since 2017, and is now supporting Kotlin Multiplatform which enables sharing code across mobile, web, server, and desktop platforms. Check out the blog post Android Support for Kotlin Multiplatform to Share Business Logic Across Mobile, Web, Server, and Desktop Platforms.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":201,"end":315,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fandroid-support-for-kotlin-multiplatform-to-share-business-logic-across-mobile-web-server-desktop.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_15":{"__typename":"Paragraph","id":"d4c7889aa09b_15","name":"19c5","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Android Support for Kotlin Multiplatform (KMP) to Share Business Logic Across Mobile, Web, Server…\nWe are supporting Kotlin Multiplatform on Android, enabling sharing code across platforms to increase productivity and…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":251,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fandroid-support-for-kotlin-multiplatform-to-share-business-logic-across-mobile-web-server-desktop.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":98,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":99,"end":218,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fandroid-support-for-kotlin-multiplatform-to-share-business-logic-across-mobile-web-server-desktop.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*qCZNI5dCFeLD63vH"}},"Paragraph:d4c7889aa09b_16":{"__typename":"Paragraph","id":"d4c7889aa09b_16","name":"1090","type":"P","href":null,"layout":null,"metadata":null,"text":"We also released the first alpha version of the Compose Preview Screenshot Testing tool. Screenshot testing is an effective way to verify how your UI looks to users, leveraging the simplicity and speed of Compose previews.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":48,"end":82,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fstudio\u002Fpreview\u002Fcompose-screenshot-testing","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_17":{"__typename":"Paragraph","id":"d4c7889aa09b_17","name":"c91f","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Compose Preview Screenshot Testing | Android Studio | Android Developers\nLearn how to run screenshot tests of Compose UIs.developer.android.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":143,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fstudio\u002Fpreview\u002Fcompose-screenshot-testing","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":72,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":73,"end":122,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"https:\u002F\u002Fdeveloper.android.com\u002Fstudio\u002Fpreview\u002Fcompose-screenshot-testing","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*aQzPeKObvT7UPWm9"}},"Paragraph:d4c7889aa09b_18":{"__typename":"Paragraph","id":"d4c7889aa09b_18","name":"a141","type":"H3","href":null,"layout":null,"metadata":null,"text":"Android Developers blog 📝","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"STRONG","start":0,"end":26,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_19":{"__typename":"Paragraph","id":"d4c7889aa09b_19","name":"3622","type":"P","href":null,"layout":null,"metadata":null,"text":"Trying to understand what’s new with a specific area of Android? Check out the following I\u002FO’24 blog posts:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_20":{"__typename":"Paragraph","id":"d4c7889aa09b_20","name":"2b0f","type":"P","href":null,"layout":null,"metadata":null,"text":"What’s new in Google Play we shared a brand new play store surface in developer preview, updates to Google Play SDK Console and Play Integrity API to help you reinforce trust with secure, high-quality experiences. Also we shared more ways to acquire and engage users, and optimize your revenue.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":25,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fio-24-whats-new-in-google-play.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_21":{"__typename":"Paragraph","id":"d4c7889aa09b_21","name":"228d","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"I\u002FO 2024: What's new in Google Play\nWe're giving you the tools to grow your revenue, delight users with your content, both on and beyond the Play Store and…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":189,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fio-24-whats-new-in-google-play.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":35,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":36,"end":156,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fio-24-whats-new-in-google-play.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*816Iz60TL7YCREEq"}},"Paragraph:d4c7889aa09b_22":{"__typename":"Paragraph","id":"d4c7889aa09b_22","name":"1515","type":"P","href":null,"layout":null,"metadata":null,"text":"What’s new in Jetpack Compose we announced the upcoming June ’24 Jetpack Compose release and announced expanded Compose support across the ecosystem of Android devices.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":29,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fwhats-new-in-jetpack-compose-at-io-24.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_23":{"__typename":"Paragraph","id":"d4c7889aa09b_23","name":"957f","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"What's new in Jetpack Compose at I\u002FO '24\nHere's an overview of all Jetpack Compose news, announcements, and updates at Google I\u002FO '24.android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":167,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fwhats-new-in-jetpack-compose-at-io-24.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":40,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":41,"end":134,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fwhats-new-in-jetpack-compose-at-io-24.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*dX5yEiUnPvpndr4B"}},"Paragraph:d4c7889aa09b_24":{"__typename":"Paragraph","id":"d4c7889aa09b_24","name":"558b","type":"P","href":null,"layout":null,"metadata":null,"text":"What’s new in Wear OS we announced that we released the Developer Preview of Wear OS 5, the next iteration of the Watch Face Format with Wear OS 5 and tooling and library updates.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":21,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fwhats-new-in-wear-os-io-24.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_25":{"__typename":"Paragraph","id":"d4c7889aa09b_25","name":"e86a","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"What's new in Wear OS - I\u002FO '24\nWith Wear OS 5, tracking your workout is now more efficient with enhanced security, user customizations, power…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":176,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fwhats-new-in-wear-os-io-24.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":31,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":32,"end":143,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fwhats-new-in-wear-os-io-24.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*oFV6aw_A1L5OdrHV"}},"Paragraph:d4c7889aa09b_26":{"__typename":"Paragraph","id":"d4c7889aa09b_26","name":"9712","type":"P","href":null,"layout":null,"metadata":null,"text":"Get the big picture with Large Screens. At I\u002FO we covered building adaptable apps, increasing user productivity with key inputs like keyboard and stylus, and scaling games across surfaces.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":38,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fget-big-picture-with-large-screens-at-google-io-24.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_27":{"__typename":"Paragraph","id":"d4c7889aa09b_27","name":"84ed","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Get the big picture with Large Screens at Google I\u002FO 2024\nAt this year's Google I\u002FO, we covered building adaptable apps, increasing user productivity with key inputs, and…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":204,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fget-big-picture-with-large-screens-at-google-io-24.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":57,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":58,"end":171,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fget-big-picture-with-large-screens-at-google-io-24.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*m0316hopse5w7n4d"}},"Paragraph:d4c7889aa09b_28":{"__typename":"Paragraph","id":"d4c7889aa09b_28","name":"26f0","type":"P","href":null,"layout":null,"metadata":null,"text":"Level up your apps with the latest features from Android Health Our updates this year focus on helping you build up a strong foundation of health data, with support for more data types, new ways to access data, and methods of getting timely data updates.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":63,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fthe-latest-updates-from-android-health-io-2024.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_29":{"__typename":"Paragraph","id":"d4c7889aa09b_29","name":"4ae6","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Level up your apps with the latest features from Android Health\nAndroid Health helps you build up a data foundation with support for more data types and new ways to access, for timely…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":217,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fthe-latest-updates-from-android-health-io-2024.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":63,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":64,"end":184,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fthe-latest-updates-from-android-health-io-2024.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*VZLUu4096nUdOJHO"}},"Paragraph:d4c7889aa09b_30":{"__typename":"Paragraph","id":"d4c7889aa09b_30","name":"9dab","type":"H3","href":null,"layout":null,"metadata":null,"text":"Developer.Android.com updates 💻","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":21,"href":"http:\u002F\u002Fdeveloper.android.com","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_31":{"__typename":"Paragraph","id":"d4c7889aa09b_31","name":"74df","type":"P","href":null,"layout":null,"metadata":null,"text":"Along with the new announcements, we’ve been updating developer.android.com to be better than ever! Check out our new AI, Identity and Social and Messaging documentation hubs. These new hubs offer guidance around critical user journeys such as high performance on-device AI with Gemini Nano, how to do user authentication with Passkeys and how to do media capture and creation.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":54,"end":75,"href":"http:\u002F\u002Fdeveloper.android.com","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":118,"end":120,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fai","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":122,"end":130,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fidentity","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":135,"end":155,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fsocial-and-messaging","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_32":{"__typename":"Paragraph","id":"d4c7889aa09b_32","name":"6040","type":"H3","href":null,"layout":null,"metadata":null,"text":"Medium 📝","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_33":{"__typename":"Paragraph","id":"d4c7889aa09b_33","name":"3647","type":"P","href":null,"layout":null,"metadata":null,"text":"Check out the following medium blog posts:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_34":{"__typename":"Paragraph","id":"d4c7889aa09b_34","name":"1a41","type":"P","href":null,"layout":null,"metadata":null,"text":"Shahbaz wrote about Multisampled Anti-aliasing For Almost Free. If you get it right, you can seriously improve the visuals of your game with little effort.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":20,"end":62,"href":"https:\u002F\u002Fmedium.com\u002Fandroiddevelopers\u002Fmultisampled-anti-aliasing-for-almost-free-on-tile-based-rendering-hardware-21794c479cb9?source=rss----95b274b437c2---4","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_35":{"__typename":"Paragraph","id":"d4c7889aa09b_35","name":"dc7b","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Multisampled Anti-aliasing For Almost Free — On Tile-Based Rendering Hardware\nImprove the visuals in your Android game at no cost by following these best practices.medium.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":174,"href":"https:\u002F\u002Fmedium.com\u002Fandroiddevelopers\u002Fmultisampled-anti-aliasing-for-almost-free-on-tile-based-rendering-hardware-21794c479cb9","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":164,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"https:\u002F\u002Fmedium.com\u002Fandroiddevelopers\u002Fmultisampled-anti-aliasing-for-almost-free-on-tile-based-rendering-hardware-21794c479cb9","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*4MmNtvKYOohUbpTt"}},"Paragraph:d4c7889aa09b_36":{"__typename":"Paragraph","id":"d4c7889aa09b_36","name":"1be8","type":"P","href":null,"layout":null,"metadata":null,"text":"If you are developing a Wear OS app, Chiara wrote about tools and libraries you can use to help your Wear OS app satisfy Google Play app quality requirements.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":56,"end":157,"href":"https:\u002F\u002Fmedium.com\u002Fandroiddevelopers\u002Ftools-and-libraries-to-help-your-wear-os-app-satisfy-google-play-app-quality-requirements-a4f061f18e26?source=rss----95b274b437c2---4","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_37":{"__typename":"Paragraph","id":"d4c7889aa09b_37","name":"a3d8","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Tools and libraries to help your Wear OS app satisfy Google Play app quality requirements\nLearn about available tools and libraries to help you easily meet Wear OS app quality requirements to be published on…medium.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":218,"href":"https:\u002F\u002Fmedium.com\u002Fandroiddevelopers\u002Ftools-and-libraries-to-help-your-wear-os-app-satisfy-google-play-app-quality-requirements-a4f061f18e26","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":89,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":90,"end":208,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"https:\u002F\u002Fmedium.com\u002Fandroiddevelopers\u002Ftools-and-libraries-to-help-your-wear-os-app-satisfy-google-play-app-quality-requirements-a4f061f18e26","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"1*qtD67Ce8fe-H2eRX1ggXAA.png"}},"Paragraph:d4c7889aa09b_38":{"__typename":"Paragraph","id":"d4c7889aa09b_38","name":"23ac","type":"H3","href":null,"layout":null,"metadata":null,"text":"Codelabs 🛠️","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_39":{"__typename":"Paragraph","id":"d4c7889aa09b_39","name":"5a0f","type":"P","href":null,"layout":null,"metadata":null,"text":"We’ve also added new codelabs, check out the new pathway: Improve the user experience of an Android app. Learn how Edge to Edge, Predictive Back, and Glance can enhance the user experience and quality of an Android app.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":58,"end":103,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fcourses\u002Fpathways\u002Fimprove-user-experience","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_40":{"__typename":"Paragraph","id":"d4c7889aa09b_40","name":"43a6","type":"P","href":null,"layout":null,"metadata":null,"text":"Also, check out Practical performance problem solving in Jetpack Compose. In this codelab, you learn how to improve the runtime performance of a Compose app.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":16,"end":72,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fcodelabs\u002Fjetpack-compose-performance#0","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_41":{"__typename":"Paragraph","id":"d4c7889aa09b_41","name":"ad03","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":"http:\u002F\u002Fadbackstage.libsyn.com\u002Fepisode-206-make-it-faster","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_42":{"__typename":"Paragraph","id":"d4c7889aa09b_42","name":"fa55","type":"P","href":null,"layout":null,"metadata":null,"text":"On Android Developers Backstage episode 206: “Make it faster” we cover ADB, “Android Debug Bridge”, the technology powering device connections.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":3,"end":61,"href":"https:\u002F\u002Fadbackstage.libsyn.com\u002Fepisode-206-make-it-faster","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_43":{"__typename":"Paragraph","id":"d4c7889aa09b_43","name":"2c1a","type":"P","href":null,"layout":null,"metadata":null,"text":"Romain and Tor talk with Fabien from the Android Studio team on his work to improve the debug stack — including the new USB speed detection feature recently unveiled at Google I\u002FO.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_44":{"__typename":"Paragraph","id":"d4c7889aa09b_44","name":"3ad6","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":"https:\u002F\u002Fadbackstage.libsyn.com\u002Fepisode-206-make-it-faster","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":27,"end":34,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=D1xPZagZdqk","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:7d7fad1ba26a6ba998f04d380e0dd178":{"__typename":"MediaResource","id":"7d7fad1ba26a6ba998f04d380e0dd178","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=%2F%2Fhtml5-player.libsyn.com%2Fembed%2Fepisode%2Fid%2F31424717%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-206-make-it-faster&image=https%3A%2F%2Fassets.libsyn.com%2Fsecure%2Fitem%2F31424717&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=libsyn","iframeHeight":90,"iframeWidth":600,"title":"Episode 206: Make it faster"},"Paragraph:d4c7889aa09b_45":{"__typename":"Paragraph","id":"d4c7889aa09b_45","name":"365b","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:7d7fad1ba26a6ba998f04d380e0dd178"}},"mixtapeMetadata":null},"MediaResource:93e100692aa101d1d591e99e55323eaf":{"__typename":"MediaResource","id":"93e100692aa101d1d591e99e55323eaf","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FD1xPZagZdqk%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DD1xPZagZdqk&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FD1xPZagZdqk%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":"Make it faster - Android Developers Backstage"},"Paragraph:d4c7889aa09b_46":{"__typename":"Paragraph","id":"d4c7889aa09b_46","name":"2f1e","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:93e100692aa101d1d591e99e55323eaf"}},"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_47":{"__typename":"Paragraph","id":"d4c7889aa09b_47","name":"5452","type":"H3","href":null,"layout":null,"metadata":null,"text":"AndroidX Releases 🚀","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_48":{"__typename":"Paragraph","id":"d4c7889aa09b_48","name":"7a1b","type":"P","href":null,"layout":null,"metadata":null,"text":"Finally, we had several exciting new libraries and features launched in Android Jetpack:","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_49":{"__typename":"Paragraph","id":"d4c7889aa09b_49","name":"f952","type":"P","href":null,"layout":null,"metadata":null,"text":"Camera Viewfinder Compose Version 1.0.0-alpha01 is released. This library introduces a Compose native Viewfinder composable, that can be used with CameraX and Camera2","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":47,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fcamera#viewfinder-compose-1.0.0-alpha01","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_50":{"__typename":"Paragraph","id":"d4c7889aa09b_50","name":"d508","type":"P","href":null,"layout":null,"metadata":null,"text":"VectorDrawable-Seekable Version 1.0.0 is released. This launches SeekableAnimatedVectorDrawable, a seekable alternative to AnimatedVectorDrawable with some additional features.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":65,"end":95,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":123,"end":145,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":0,"end":37,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fvectordrawable#vectordrawable-seekable-1.0.0","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":65,"end":95,"href":"https:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fandroidx\u002Fvectordrawable\u002Fgraphics\u002Fdrawable\u002FSeekableAnimatedVectorDrawable","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_51":{"__typename":"Paragraph","id":"d4c7889aa09b_51","name":"f81b","type":"P","href":null,"layout":null,"metadata":null,"text":"ViewPager2 Version 1.1.0 is released. This includes a number of fixes and adds the FragmentTransactionCallback interface for listening to fragment lifecycle changes that happen inside FragmentStateAdapter.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":83,"end":110,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":184,"end":204,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":0,"end":25,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fvectordrawable#vectordrawable-seekable-1.0.0","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_52":{"__typename":"Paragraph","id":"d4c7889aa09b_52","name":"5f04","type":"P","href":null,"layout":null,"metadata":null,"text":"Fragment Version 1.7.0 is released. Fragments now provide support for Predictive in-app back when using Animator or when using AndroidX Transition 1.5. This allows users to use the back gesture to see the previous fragment by seeking your Animator\u002FTransition before deciding to either commit the transaction via completing the gesture or canceling.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":22,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Ffragment#1.7.0","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":127,"end":150,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Ftransition#1.5.0","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_53":{"__typename":"Paragraph","id":"d4c7889aa09b_53","name":"92d9","type":"P","href":null,"layout":null,"metadata":null,"text":"Transition Version 1.5.0 is released. TransitionListeners now have new onTransitionStart() and onTransitionEnd() listeners that allow the developer to know whether the transition is starting or ending.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":71,"end":91,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":95,"end":112,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":0,"end":24,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Ftransition#1.5.0","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_54":{"__typename":"Paragraph","id":"d4c7889aa09b_54","name":"be4b","type":"P","href":null,"layout":null,"metadata":null,"text":"Webkit Version 1.11.0 is released. This allows apps to control audio playback in WebView through the new setAudioMuted and isAudioMuted APIs, which are analogous to muting a tab in Chrome.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"CODE","start":105,"end":118,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"CODE","start":123,"end":135,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":0,"end":21,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fwebkit#1.11.0","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":105,"end":118,"href":"https:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fandroidx\u002Fwebkit\u002FWebViewCompat#setAudioMuted(android.webkit.WebView,boolean)","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":123,"end":135,"href":"https:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fandroidx\u002Fwebkit\u002FWebViewCompat#isAudioMuted(android.webkit.WebView)","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_55":{"__typename":"Paragraph","id":"d4c7889aa09b_55","name":"1afb","type":"P","href":null,"layout":null,"metadata":null,"text":"Make sure to check out the AndroidX release notes here to learn more.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":50,"end":54,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Fversions\u002Fall-channel","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_56":{"__typename":"Paragraph","id":"d4c7889aa09b_56","name":"aa36","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"AndroidX releases | Jetpack | Android Developers\nJetpack libraries ship separately from the Android OS, so updates to the libraries can happen independently and more…developer.android.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":187,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002F","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":166,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002F","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*Ea3-svSCMuSLZauA"}},"Paragraph:d4c7889aa09b_57":{"__typename":"Paragraph","id":"d4c7889aa09b_57","name":"bcd9","type":"H3","href":null,"layout":null,"metadata":null,"text":"Now then… 👋","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_58":{"__typename":"Paragraph","id":"d4c7889aa09b_58","name":"6a5b","type":"P","href":null,"layout":null,"metadata":null,"text":"That’s it for this week with I\u002FO’24, Android 15, KMP, Compose, AndroidX, and more!","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":29,"end":35,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002F15-things-to-know-for-android-developers-google-io-2024.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":37,"end":47,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fthe-second-beta-of-android-15.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":49,"end":52,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F05\u002Fandroid-support-for-kotlin-multiplatform-to-share-business-logic-across-mobile-web-server-desktop.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":63,"end":71,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Fversions\u002Fall-channel","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:d4c7889aa09b_59":{"__typename":"Paragraph","id":"d4c7889aa09b_59","name":"1712","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_dc56a5384656":{"__typename":"CollectionViewerEdge","id":"collectionId:95b274b437c2-viewerId:lo_dc56a5384656","isEditor":false,"isMuting":false},"ImageMetadata:1*5pMw_nx55x_66tk77kutPQ.png":{"__typename":"ImageMetadata","id":"1*5pMw_nx55x_66tk77kutPQ.png","originalWidth":600,"originalHeight":72},"PostViewerEdge:postId:1b72759c5f0c-viewerId:lo_dc56a5384656":{"__typename":"PostViewerEdge","shouldIndexPostForExternalSearch":true,"id":"postId:1b72759c5f0c-viewerId:lo_dc56a5384656"},"Tag:kotlin":{"__typename":"Tag","id":"kotlin","displayTitle":"Kotlin","normalizedTagSlug":"kotlin"},"Tag:android-app-development":{"__typename":"Tag","id":"android-app-development","displayTitle":"Android App Development","normalizedTagSlug":"android-app-development"},"Tag:android-15":{"__typename":"Tag","id":"android-15","displayTitle":"Android 15","normalizedTagSlug":"android-15"},"Tag:now-in-android":{"__typename":"Tag","id":"now-in-android","displayTitle":"Now In Android","normalizedTagSlug":"now-in-android"},"Tag:featured":{"__typename":"Tag","id":"featured","displayTitle":"Featured","normalizedTagSlug":"featured"},"Post:1b72759c5f0c":{"__typename":"Post","id":"1b72759c5f0c","collection":{"__ref":"Collection:95b274b437c2"},"content({\"postMeteringOptions\":{}})":{"__typename":"PostContent","isLockedPreviewOnly":false,"bodyModel":{"__typename":"RichText","sections":[{"__typename":"Section","name":"f53c","startIndex":0,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null},{"__typename":"Section","name":"d5bc","startIndex":7,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null}],"paragraphs":[{"__ref":"Paragraph:d4c7889aa09b_0"},{"__ref":"Paragraph:d4c7889aa09b_1"},{"__ref":"Paragraph:d4c7889aa09b_2"},{"__ref":"Paragraph:d4c7889aa09b_3"},{"__ref":"Paragraph:d4c7889aa09b_4"},{"__ref":"Paragraph:d4c7889aa09b_5"},{"__ref":"Paragraph:d4c7889aa09b_6"},{"__ref":"Paragraph:d4c7889aa09b_7"},{"__ref":"Paragraph:d4c7889aa09b_8"},{"__ref":"Paragraph:d4c7889aa09b_9"},{"__ref":"Paragraph:d4c7889aa09b_10"},{"__ref":"Paragraph:d4c7889aa09b_11"},{"__ref":"Paragraph:d4c7889aa09b_12"},{"__ref":"Paragraph:d4c7889aa09b_13"},{"__ref":"Paragraph:d4c7889aa09b_14"},{"__ref":"Paragraph:d4c7889aa09b_15"},{"__ref":"Paragraph:d4c7889aa09b_16"},{"__ref":"Paragraph:d4c7889aa09b_17"},{"__ref":"Paragraph:d4c7889aa09b_18"},{"__ref":"Paragraph:d4c7889aa09b_19"},{"__ref":"Paragraph:d4c7889aa09b_20"},{"__ref":"Paragraph:d4c7889aa09b_21"},{"__ref":"Paragraph:d4c7889aa09b_22"},{"__ref":"Paragraph:d4c7889aa09b_23"},{"__ref":"Paragraph:d4c7889aa09b_24"},{"__ref":"Paragraph:d4c7889aa09b_25"},{"__ref":"Paragraph:d4c7889aa09b_26"},{"__ref":"Paragraph:d4c7889aa09b_27"},{"__ref":"Paragraph:d4c7889aa09b_28"},{"__ref":"Paragraph:d4c7889aa09b_29"},{"__ref":"Paragraph:d4c7889aa09b_30"},{"__ref":"Paragraph:d4c7889aa09b_31"},{"__ref":"Paragraph:d4c7889aa09b_32"},{"__ref":"Paragraph:d4c7889aa09b_33"},{"__ref":"Paragraph:d4c7889aa09b_34"},{"__ref":"Paragraph:d4c7889aa09b_35"},{"__ref":"Paragraph:d4c7889aa09b_36"},{"__ref":"Paragraph:d4c7889aa09b_37"},{"__ref":"Paragraph:d4c7889aa09b_38"},{"__ref":"Paragraph:d4c7889aa09b_39"},{"__ref":"Paragraph:d4c7889aa09b_40"},{"__ref":"Paragraph:d4c7889aa09b_41"},{"__ref":"Paragraph:d4c7889aa09b_42"},{"__ref":"Paragraph:d4c7889aa09b_43"},{"__ref":"Paragraph:d4c7889aa09b_44"},{"__ref":"Paragraph:d4c7889aa09b_45"},{"__ref":"Paragraph:d4c7889aa09b_46"},{"__ref":"Paragraph:d4c7889aa09b_47"},{"__ref":"Paragraph:d4c7889aa09b_48"},{"__ref":"Paragraph:d4c7889aa09b_49"},{"__ref":"Paragraph:d4c7889aa09b_50"},{"__ref":"Paragraph:d4c7889aa09b_51"},{"__ref":"Paragraph:d4c7889aa09b_52"},{"__ref":"Paragraph:d4c7889aa09b_53"},{"__ref":"Paragraph:d4c7889aa09b_54"},{"__ref":"Paragraph:d4c7889aa09b_55"},{"__ref":"Paragraph:d4c7889aa09b_56"},{"__ref":"Paragraph:d4c7889aa09b_57"},{"__ref":"Paragraph:d4c7889aa09b_58"},{"__ref":"Paragraph:d4c7889aa09b_59"}]},"validatedShareKey":"","shareKeyCreator":null},"creator":{"__ref":"User:eb38ed87b679"},"inResponseToEntityType":null,"isLocked":false,"isMarkedPaywallOnly":false,"lockedSource":"LOCKED_POST_SOURCE_NONE","mediumUrl":"https:\u002F\u002Fmedium.com\u002Fandroiddevelopers\u002Fnow-in-android-106-1b72759c5f0c","primaryTopic":null,"topics":[{"__typename":"Topic","slug":"android-development"}],"isPublished":true,"latestPublishedVersion":"d4c7889aa09b","visibility":"PUBLIC","postResponses":{"__typename":"PostResponses","count":0},"clapCount":113,"allowResponses":true,"isLimitedState":false,"title":"Now in Android #106","isSeries":false,"sequence":null,"uniqueSlug":"now-in-android-106-1b72759c5f0c","socialTitle":"","socialDek":"","canonicalUrl":"","metaDescription":"","latestPublishedAt":1717104697129,"readingTime":5.330503144654088,"previewContent":{"__typename":"PreviewContent","subtitle":"I\u002FO’24, Android 15, KMP, Compose, AndroidX, and more"},"previewImage":{"__ref":"ImageMetadata:1*Sy3ea40KCd6LSmU6QFUgDA.png"},"isShortform":false,"seoTitle":"","firstPublishedAt":1717104697129,"updatedAt":1732483412968,"shortformType":"SHORTFORM_TYPE_LINK","seoDescription":"","viewerEdge":{"__ref":"PostViewerEdge:postId:1b72759c5f0c-viewerId:lo_dc56a5384656"},"isSuspended":false,"license":"ALL_RIGHTS_RESERVED","tags":[{"__ref":"Tag:kotlin"},{"__ref":"Tag:android-app-development"},{"__ref":"Tag:android-15"},{"__ref":"Tag:now-in-android"},{"__ref":"Tag:featured"}],"isNewsletter":false,"statusForCollection":"APPROVED","pendingCollection":null,"detectedLanguage":"en","wordCount":1311,"layerCake":6,"responsesLocked":false}}</script><script>window.__MIDDLEWARE_STATE__={"session":{"xsrf":""},"cache":{"cacheStatus":"MISS"}}</script><script src="https://cdn-client.medium.com/lite/static/js/manifest.aa9242f7.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.e556b4ac.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/5787.e66a3a4d.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/3104.c3413b66.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.8ad8a900.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.094844de.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.1387c5dc.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:'8e9001551d4fab56',t:'MTczMjY4ODM1Mi4wMDAwMDA='};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