CINXE.COM
<!doctype html><html lang="en"><head><title data-rh="true">Now in Android #109. The Fourth Beta of Android 15… | by Kateryna Semenova | 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-08-27T21:15:55.089Z"/><meta data-rh="true" name="title" content="Now in Android #109. The Fourth Beta of Android 15… | by Kateryna Semenova | Android Developers | Medium"/><meta data-rh="true" property="og:title" content="Now in Android #109"/><meta data-rh="true" property="al:android:url" content="medium://p/1dbf4e81b127"/><meta data-rh="true" property="al:ios:url" content="medium://p/1dbf4e81b127"/><meta data-rh="true" property="al:android:app_name" content="Medium"/><meta data-rh="true" name="description" content="Welcome to episode 109 of Now in Android: your ongoing guide to what’s new and notable in the world of Android development. In this episode, we’ll cover The Fourth Beta of Android 15, Samsung’s…"/><meta data-rh="true" property="og:description" content="The Fourth Beta of Android 15, Samsung’s Galaxy Unpacked event, Google Play’s new Collections feature and more."/><meta data-rh="true" property="og:url" content="https://medium.com/androiddevelopers/now-in-android-109-1dbf4e81b127"/><meta data-rh="true" property="al:web:url" content="https://medium.com/androiddevelopers/now-in-android-109-1dbf4e81b127"/><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/@katerynasemenova"/><meta data-rh="true" name="author" content="Kateryna Semenova"/><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 #109"/><meta data-rh="true" name="twitter:site" content="@androiddev"/><meta data-rh="true" name="twitter:app:url:iphone" content="medium://p/1dbf4e81b127"/><meta data-rh="true" property="twitter:description" content="The Fourth Beta of Android 15, Samsung’s Galaxy Unpacked event, Google Play’s new Collections feature 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="5 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/@katerynasemenova"/><link data-rh="true" rel="canonical" href="https://medium.com/androiddevelopers/now-in-android-109-1dbf4e81b127"/><link data-rh="true" rel="alternate" href="android-app://com.medium.reader/https/medium.com/p/1dbf4e81b127"/><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-109-1dbf4e81b127","dateCreated":"2024-08-27T21:15:55.089Z","datePublished":"2024-08-27T21:15:55.089Z","dateModified":"2024-11-17T16:56:30.675Z","headline":"Now in Android #109 - Android Developers - Medium","name":"Now in Android #109 - Android Developers - Medium","description":"Welcome to episode 109 of Now in Android: your ongoing guide to what’s new and notable in the world of Android development. In this episode, we’ll cover The Fourth Beta of Android 15, Samsung’s…","identifier":"1dbf4e81b127","author":{"@type":"Person","name":"Kateryna Semenova","url":"https:\u002F\u002Fmedium.com\u002F@katerynasemenova"},"creator":["Kateryna Semenova"],"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-109-1dbf4e81b127"}</script><style type="text/css" data-fela-rehydration="585" 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="585" 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="585" 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}.iz{align-items:baseline}.ja{width:48px}.jb{height:48px}.jc{border:2px solid rgba(255, 255, 255, 1)}.jd{z-index:0}.je{box-shadow:none}.jf{border:1px solid rgba(0, 0, 0, 0.05)}.jg{margin-left:-12px}.jh{width:28px}.ji{height:28px}.jj{z-index:1}.jk{width:24px}.jl{margin-bottom:2px}.jm{flex-wrap:nowrap}.jn{font-size:16px}.jo{line-height:24px}.jq{margin:0 8px}.jr{display:inline}.js{color:rgba(132, 132, 136, 1)}.jt{fill:rgba(132, 132, 136, 1)}.jw{flex:0 0 auto}.jz{flex-wrap:wrap}.kc{white-space:pre-wrap}.kd{margin-right:4px}.ke{overflow:hidden}.kf{max-height:20px}.kg{text-overflow:ellipsis}.kh{display:-webkit-box}.ki{-webkit-line-clamp:1}.kj{-webkit-box-orient:vertical}.kk{word-break:break-all}.km{padding-left:8px}.kn{padding-right:8px}.lo> *{flex-shrink:0}.lp{overflow-x:scroll}.lq::-webkit-scrollbar{display:none}.lr{scrollbar-width:none}.ls{-ms-overflow-style:none}.lt{width:74px}.lu{flex-direction:row}.lv{z-index:2}.ly{-webkit-user-select:none}.lz{border:0}.ma{fill:rgba(117, 117, 117, 1)}.md{outline:0}.me{user-select:none}.mf> svg{pointer-events:none}.mo{cursor:progress}.mp{opacity:1}.mq{padding:4px 0}.mt{margin-top:0px}.mu{width:16px}.mw{display:inline-flex}.mz{padding:8px 2px}.na svg{color:#6B6B6B}.nr{line-height:1.58}.ns{letter-spacing:-0.004em}.nt{font-family:source-serif-pro, Georgia, Cambria, "Times New Roman", Times, serif}.oo{margin-bottom:-0.46em}.op{text-decoration:underline}.ov{margin:auto}.ow{padding-bottom:56.206088992974244%}.ox{height:0}.oy{padding-bottom:15%}.oz{margin-top:32px}.pa{margin-bottom:14px}.pb{padding-top:24px}.pc{padding-bottom:10px}.pd{background-color:#000000}.pe{height:3px}.pf{width:3px}.pg{margin-right:20px}.ph{line-height:1.12}.pi{letter-spacing:-0.022em}.pj{font-weight:600}.qe{margin-bottom:-0.28em}.qf{max-width:2633px}.ql{box-shadow:inset 0 0 0 1px #F2F2F2}.qm{padding:0px}.qn{padding:16px 20px}.qo{flex:1 1 auto}.qq{max-height:40px}.qr{-webkit-line-clamp:2}.qs{margin-top:8px}.qt{margin-top:12px}.qu{width:160px}.qv{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*hcDB3ChbW6wolcCS)}.qw{background-origin:border-box}.qx{background-size:cover}.qy{height:167px}.qz{background-position:50% 50%}.rk{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*kSvijuATSGhvRFu1)}.rl{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*eGxCM9mPMGAgYaEa)}.rm{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*H8Q_5v4V6y4_GARs)}.rn{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*QKUaxMj-B09lZmxD)}.ro{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*svvkJXmx2vZ2CUTw)}.rp{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*dCaXSnelg_nmmkOM)}.rq{line-height:1.18}.se{margin-bottom:-0.31em}.sf{background-image:url(https://miro.medium.com/v2/da:true/resize:fit:320/0*FWrpKuugXCL-l4_O)}.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}.ul{margin-top:16px}.um{color:rgba(255, 255, 255, 1)}.un{fill:rgba(255, 255, 255, 1)}.uo{background:rgba(25, 25, 25, 1)}.up{border-color:rgba(25, 25, 25, 1)}.us:disabled{opacity:0.1}.ut:disabled:hover{background:rgba(25, 25, 25, 1)}.uu:disabled:hover{border-color:rgba(25, 25, 25, 1)}.uv{margin-bottom:54px}.vb{gap:18px}.vc{fill:rgba(61, 61, 61, 1)}.vj{border-bottom:solid 1px #E5E5E5}.vk{margin-top:72px}.vl{padding:24px 0}.vm{margin-bottom:0px}.vn{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)}.jp:hover{text-decoration:underline}.ju:hover:not(:disabled){color:rgba(113, 114, 117, 1)}.jv:hover:not(:disabled){fill:rgba(113, 114, 117, 1)}.mc:hover{fill:rgba(8, 8, 8, 1)}.mr:hover{fill:#000000}.ms:hover p{color:#000000}.mv:hover{color:#000000}.nb:hover svg{color:#000000}.sm:hover{background-color:#F2F2F2}.tw:hover{background-color:none}.uq:hover{background:#000000}.ur:hover{border-color:#242424}.vd:hover{fill:rgba(25, 25, 25, 1)}.bd:focus-within path{fill:#242424}.ho:focus{transform:scale(1.01)}.mb:focus{fill:rgba(8, 8, 8, 1)}.nc:focus svg{color:#000000}.mg:active{border-style:none}</style><style type="text/css" data-fela-rehydration="585" 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}.ip{font-size:42px}.iq{margin-top:1em}.ir{margin-bottom:32px}.is{line-height:52px}.it{letter-spacing:-0.011em}.iy{align-items:center}.la{border-top:solid 1px #F2F2F2}.lb{border-bottom:solid 1px #F2F2F2}.lc{margin:32px 0 0}.ld{padding:3px 8px}.lm> *{margin-right:24px}.ln> :last-child{margin-right:0}.mn{margin-top:0px}.my{margin:0}.ok{font-size:20px}.ol{margin-top:2.14em}.om{line-height:32px}.on{letter-spacing:-0.003em}.ou{margin-top:56px}.qa{font-size:24px}.qb{margin-top:1.25em}.qc{line-height:30px}.qd{letter-spacing:-0.016em}.qk{margin-top:32px}.re{margin-top:1.95em}.rj{margin-top:0.94em}.sb{margin-top:1.72em}.sc{line-height:24px}.sd{letter-spacing:0}.sz{display:inline-block}.te{margin-bottom:104px}.ti{flex-direction:row}.tl{margin-bottom:0}.tm{margin-right:20px}.ua{max-width:500px}.va{margin-bottom:72px}.vi{padding-top:72px}</style><style type="text/css" data-fela-rehydration="585" data-fela-type="RULE" media="all and (max-width: 1079.98px)">.e{display:none}.mm{margin-top:0px}.sy{display:inline-block}</style><style type="text/css" data-fela-rehydration="585" data-fela-type="RULE" media="all and (max-width: 903.98px)">.f{display:none}.ml{margin-top:0px}.sx{display:inline-block}</style><style type="text/css" data-fela-rehydration="585" data-fela-type="RULE" media="all and (max-width: 727.98px)">.g{display:none}.mj{margin-top:0px}.mk{margin-right:0px}.qp{padding:10px 12px 10px}.sw{display:inline-block}</style><style type="text/css" data-fela-rehydration="585" 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{margin-bottom:24px}.hy{line-height:38px}.hz{letter-spacing:-0.014em}.iu{align-items:flex-start}.jx{flex-direction:column}.ka{margin-bottom:2px}.ko{margin:24px -24px 0}.kp{padding:0}.le> *{margin-right:8px}.lf> :last-child{margin-right:24px}.lw{margin-left:0px}.mh{margin-top:0px}.mi{margin-right:0px}.nd{border:1px solid #F2F2F2}.ne{border-radius:99em}.nf{padding:0px 16px 0px 12px}.ng{height:38px}.nh{align-items:center}.nj svg{margin-right:8px}.nu{font-size:18px}.nv{margin-top:1.56em}.nw{line-height:28px}.nx{letter-spacing:-0.003em}.oq{margin-top:40px}.pk{font-size:20px}.pl{margin-top:0.93em}.pm{line-height:24px}.pn{letter-spacing:0}.qg{margin-top:24px}.ra{margin-top:1.2em}.rf{margin-top:0.67em}.rr{font-size:16px}.rs{margin-top:1.23em}.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}.uw{margin-bottom:64px}.ve{padding-top:48px}.ni:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="585" 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}.ik{font-size:42px}.il{margin-top:1em}.im{margin-bottom:32px}.in{line-height:52px}.io{letter-spacing:-0.011em}.ix{align-items:center}.kw{border-top:solid 1px #F2F2F2}.kx{border-bottom:solid 1px #F2F2F2}.ky{margin:32px 0 0}.kz{padding:3px 8px}.lk> *{margin-right:24px}.ll> :last-child{margin-right:0}.mx{margin:0}.og{font-size:20px}.oh{margin-top:2.14em}.oi{line-height:32px}.oj{letter-spacing:-0.003em}.ot{margin-top:56px}.pw{font-size:24px}.px{margin-top:1.25em}.py{line-height:30px}.pz{letter-spacing:-0.016em}.qj{margin-top:32px}.rd{margin-top:1.95em}.ri{margin-top:0.94em}.ry{margin-top:1.72em}.rz{line-height:24px}.sa{letter-spacing:0}.td{margin-bottom:104px}.tj{flex-direction:row}.tn{margin-bottom:0}.to{margin-right:20px}.ub{max-width:500px}.uz{margin-bottom:72px}.vh{padding-top:72px}</style><style type="text/css" data-fela-rehydration="585" 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}.if{font-size:42px}.ig{margin-top:1em}.ih{margin-bottom:32px}.ii{line-height:52px}.ij{letter-spacing:-0.011em}.iw{align-items:center}.ks{border-top:solid 1px #F2F2F2}.kt{border-bottom:solid 1px #F2F2F2}.ku{margin:32px 0 0}.kv{padding:3px 8px}.li> *{margin-right:24px}.lj> :last-child{margin-right:0}.oc{font-size:20px}.od{margin-top:2.14em}.oe{line-height:32px}.of{letter-spacing:-0.003em}.os{margin-top:56px}.ps{font-size:24px}.pt{margin-top:1.25em}.pu{line-height:30px}.pv{letter-spacing:-0.016em}.qi{margin-top:32px}.rc{margin-top:1.95em}.rh{margin-top:0.94em}.rv{margin-top:1.72em}.rw{line-height:24px}.rx{letter-spacing:0}.tc{margin-bottom:104px}.tk{flex-direction:row}.tp{margin-bottom:0}.tq{margin-right:20px}.uc{max-width:500px}.uy{margin-bottom:72px}.vg{padding-top:72px}</style><style type="text/css" data-fela-rehydration="585" 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}.ia{font-size:32px}.ib{margin-top:1.01em}.ic{margin-bottom:24px}.id{line-height:38px}.ie{letter-spacing:-0.014em}.iv{align-items:flex-start}.jy{flex-direction:column}.kb{margin-bottom:2px}.kq{margin:24px 0 0}.kr{padding:0}.lg> *{margin-right:8px}.lh> :last-child{margin-right:8px}.lx{margin-left:0px}.nk{border:1px solid #F2F2F2}.nl{border-radius:99em}.nm{padding:0px 16px 0px 12px}.nn{height:38px}.no{align-items:center}.nq svg{margin-right:8px}.ny{font-size:18px}.nz{margin-top:1.56em}.oa{line-height:28px}.ob{letter-spacing:-0.003em}.or{margin-top:40px}.po{font-size:20px}.pp{margin-top:0.93em}.pq{line-height:24px}.pr{letter-spacing:0}.qh{margin-top:24px}.rb{margin-top:1.2em}.rg{margin-top:0.67em}.rt{font-size:16px}.ru{margin-top:1.23em}.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}.ux{margin-bottom:64px}.vf{padding-top:48px}.np:hover{border-color:#E5E5E5}</style><style type="text/css" data-fela-rehydration="585" data-fela-type="RULE" media="print">.st{display:none}</style><style type="text/css" data-fela-rehydration="585" 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="585" data-fela-type="RULE" media="(orientation: landscape) and (max-width: 903.98px)">.kl{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%2F1dbf4e81b127&%7Efeature=LoOpenInAppButton&%7Echannel=ShowPostUnderCollection&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&redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-109-1dbf4e81b127&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&redirect=https%3A%2F%2Fmedium.com%2Fnew-story&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&redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-109-1dbf4e81b127&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="ab9c" 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 iq ir is it bk" data-testid="storyTitle">Now in Android #109</h1><div><div class="speechify-ignore ab cp"><div class="speechify-ignore bh l"><div class="iu iv iw ix iy ab"><div><div class="ab iz"><div><div class="bm" aria-hidden="false"><a rel="noopener follow" href="/@katerynasemenova?source=post_page---byline--1dbf4e81b127--------------------------------"><div class="l ja jb by jc jd"><div class="l fj"><img alt="Kateryna Semenova" class="l fd by dd de cx" src="https://miro.medium.com/v2/resize:fill:88:88/2*MWidJNpRKpwnPhMYw1hBTA.png" width="44" height="44" loading="lazy" data-testid="authorPhoto"/><div class="je by l dd de fs n jf ft"></div></div></div></a></div></div><div class="jg ab fj"><div><div class="bm" aria-hidden="false"><a href="https://medium.com/androiddevelopers?source=post_page---byline--1dbf4e81b127--------------------------------" rel="noopener follow"><div class="l jh ji by jc jj"><div class="l fj"><img alt="Android Developers" class="l fd by br jk 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="je by l br jk fs n jf 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="jl ab q"><div class="ab q jm"><div class="ab q"><div><div class="bm" aria-hidden="false"><p class="bf b jn jo bk"><a class="af ag ah ai aj ak al am an ao ap aq ar jp" data-testid="authorName" rel="noopener follow" href="/@katerynasemenova?source=post_page---byline--1dbf4e81b127--------------------------------">Kateryna Semenova</a></p></div></div></div><span class="jq jr" aria-hidden="true"><span class="bf b bg z du">·</span></span><p class="bf b jn jo du"><span><a class="js jt ah ai aj ak al am an ao ap aq ar ex ju jv" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fsubscribe%2Fuser%2Fb85a51f012d7&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-109-1dbf4e81b127&user=Kateryna+Semenova&userId=b85a51f012d7&source=post_page-b85a51f012d7--byline--1dbf4e81b127---------------------post_header-----------">Follow</a></span></p></div></div></span></div></div><div class="l jw"><span class="bf b bg z du"><div class="ab cn jx jy jz"><div class="ka kb ab"><div class="bf b bg z du ab kc"><span class="kd l jw">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 jp ab q" data-testid="publicationName" href="https://medium.com/androiddevelopers?source=post_page---byline--1dbf4e81b127--------------------------------" rel="noopener follow"><p class="bf b bg z ke kf kg kh ki kj kk kl bk">Android Developers</p></a></div></div></div><div class="h k"><span class="jq jr" 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">5 min read</span><div class="km kn l" aria-hidden="true"><span class="l" aria-hidden="true"><span class="bf b bg z du">·</span></span></div><span data-testid="storyPublishDate">Aug 27, 2024</span></div></span></div></span></div></div></div><div class="ab cp ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld"><div class="h k w fg fh q"><div class="lt l"><div class="ab q lu lv"><div class="pw-multi-vote-icon fj kd lw lx ly"><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%2F1dbf4e81b127&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-109-1dbf4e81b127&user=Kateryna+Semenova&userId=b85a51f012d7&source=---header_actions--1dbf4e81b127---------------------clap_footer-----------"><div><div class="bm" aria-hidden="false"><div class="lz ao ma mb mc md am me mf mg ly"><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 mh mi mj mk ml mm mn"><p class="bf b dv z du"><span class="mo">--</span></p></div></div></div><div><div class="bm" aria-hidden="false"><button class="ao lz mp mq ab q fk mr ms" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="mt"><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 le lf lg lh li lj lk ll lm ln lo lp lq lr ls"><div class="mu 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%2F1dbf4e81b127&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-109-1dbf4e81b127&source=---header_actions--1dbf4e81b127---------------------bookmark_footer-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du mv" 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 mw cn"><div class="l ae"><div class="ab cb"><div class="gt gv gx mx my 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 mz an ao ap ex na nb ms nc nd ne nf ng s nh ni nj nk nl nm nn u no np nq"><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 mz an ao ap ex na nb ms nc nd ne nf ng s nh ni nj nk nl nm nn u no np nq"><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="5f2f" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">Welcome to episode 109 of Now in Android: your ongoing guide to what’s new and notable in the world of Android development.</p><p id="0af4" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">In this episode, we’ll cover <a class="af op" href="https://android-developers.googleblog.com/2024/07/the-fourth-beta-of-android-15.html" rel="noopener ugc nofollow" target="_blank">The Fourth Beta of Android 15</a>, <a class="af op" href="http://android-developers.googleblog.com/2024/07/updates-samsung-galaxy-unpacked.html" rel="noopener ugc nofollow" target="_blank">Samsung’s Galaxy Unpacked event</a>, Google Play’s <a class="af op" href="http://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html" rel="noopener ugc nofollow" target="_blank">new Collections feature</a> and <a class="af op" href="https://android-developers.googleblog.com/2024/07/making-security-easy-vuln-remediation.html" rel="noopener ugc nofollow" target="_blank">security enhancements</a>, inspirational stories from #WeArePlay series and <a class="af op" href="https://developer.android.com/jetpack/androidx/versions/all-channel" rel="noopener ugc nofollow" target="_blank">lots of stable AndroidX releases</a>.</p><figure class="oq or os ot ou gs"><div class="ov ke l fj"><div class="ow ox l"></div></div></figure><figure class="oq or os ot ou gs"><div class="ov ke l fj"><div class="oy ox l"></div></div></figure><p id="8e0e" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">Most of the content of this post is available in the form of a <a class="af op" href="https://youtu.be/x3sVb-Inu0c?si=oaqFXRkcBN_hekvX" rel="noopener ugc nofollow" target="_blank">video</a> or <a class="af op" href="https://nowinandroid.libsyn.com/109-android-15-beta-4-samsung-galaxy-unpacked-google-plays-new-feature-and-more" rel="noopener ugc nofollow" target="_blank">podcast</a>, so feel free to <a class="af op" href="https://youtu.be/x3sVb-Inu0c?si=oaqFXRkcBN_hekvX" rel="noopener ugc nofollow" target="_blank">watch</a> or <a class="af op" href="https://nowinandroid.libsyn.com/109-android-15-beta-4-samsung-galaxy-unpacked-google-plays-new-feature-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 oz pa pb pc" role="separator"><span class="pd by bm pe pf pg"></span><span class="pd by bm pe pf pg"></span><span class="pd by bm pe pf"></span></div><div class="gn go gp gq gr"><div class="ab cb"><div class="ci bh fz ga gb gc"><h1 id="e1db" class="ph pi ht bf pj pk pl pm pn po pp pq pr ps pt pu pv pw px py pz qa qb qc qd qe bk"><a class="af op" href="https://android-developers.googleblog.com/2024/07/the-fourth-beta-of-android-15.html" rel="noopener ugc nofollow" target="_blank">The Fourth Beta of Android 15</a> 🧑💻</h1><figure class="oq or os ot ou gs hb hc paragraph-image"><div role="button" tabindex="0" class="hl hm fj hn bh ho"><div class="hb hc qf"><picture><source srcSet="https://miro.medium.com/v2/resize:fit:640/format:webp/1*-b_VBwmqYCNltLlmUpBuQQ.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*-b_VBwmqYCNltLlmUpBuQQ.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*-b_VBwmqYCNltLlmUpBuQQ.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*-b_VBwmqYCNltLlmUpBuQQ.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*-b_VBwmqYCNltLlmUpBuQQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*-b_VBwmqYCNltLlmUpBuQQ.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*-b_VBwmqYCNltLlmUpBuQQ.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*-b_VBwmqYCNltLlmUpBuQQ.png 640w, https://miro.medium.com/v2/resize:fit:720/1*-b_VBwmqYCNltLlmUpBuQQ.png 720w, https://miro.medium.com/v2/resize:fit:750/1*-b_VBwmqYCNltLlmUpBuQQ.png 750w, https://miro.medium.com/v2/resize:fit:786/1*-b_VBwmqYCNltLlmUpBuQQ.png 786w, https://miro.medium.com/v2/resize:fit:828/1*-b_VBwmqYCNltLlmUpBuQQ.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*-b_VBwmqYCNltLlmUpBuQQ.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*-b_VBwmqYCNltLlmUpBuQQ.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="Android 15" class="bh hp hq c" width="700" height="265" loading="eager"/></picture></div></div></figure><p id="9ab7" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">Android 15 Beta 4, the final update in the beta release cycle, is now available. This release brings stability and final APIs for developers to test and integrate into their apps.</p><p id="ded9" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk"><a class="af op" href="https://android-developers.googleblog.com/2024/07/the-fourth-beta-of-android-15.html" rel="noopener ugc nofollow" target="_blank">The blog</a> covers the removal of the legacy PNG-based emoji font, which means some devices will only have the vector-based COLRv1 file. Android 15 also introduces several new features that you can take advantage of, including predictive back animations, Low Light Boost for improved low-light photography, a variable font for CJK languages, insights into app startup, screen recording detection, partial screen sharing, linking specific views with Credential Manager requests, edge-to-edge drawing by default, and generated previews for app widget providers.</p><p id="f706" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">You are encouraged to test your apps, libraries, tools, and game engines for compatibility with Android 15 and update any necessary SDKs.</p><div class="qg qh qi qj qk ql"><a href="https://android-developers.googleblog.com/2024/07/the-fourth-beta-of-android-15.html?source=post_page-----1dbf4e81b127--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qm ab jw"><div class="qn ab co cb qo qp"><h2 class="bf hu jn z ke qq kg kh qr kj kl hs bk">The Fourth Beta of Android 15</h2><div class="qs l"><h3 class="bf b jn z ke qq kg kh qr kj kl du">Android 15 Beta 4 is the last scheduled update in the Android 15 beta program. Test your apps and send us your feedback…</h3></div><div class="qt l"><p class="bf b dv z ke qq kg kh qr kj kl du">android-developers.googleblog.com</p></div></div><div class="qu l"><div class="qv l qw qx qy qu qz hp ql"></div></div></div></a></div><h1 id="d557" class="ph pi ht bf pj pk ra pm pn po rb pq pr ps rc pu pv pw rd py pz qa re qc qd qe bk">Android Developers blog 📝</h1><p id="5f20" class="pw-post-body-paragraph nr ns ht nt b nu rf nw nx ny rg oa ob oc rh oe of og ri oi oj ok rj om on oo gn bk"><a class="af op" href="http://android-developers.googleblog.com/2024/07/updates-samsung-galaxy-unpacked.html" rel="noopener ugc nofollow" target="_blank">Samsung’s Galaxy Unpacked</a> event unveiled the latest foldables, wearables, and more, including the Galaxy Z Fold6, Z Flip6, Galaxy Watch7, and Watch Ultra. Maru shares how to get your apps ready for the latest Android devices, how you can prepare your app for Wear OS 5, and how to build adaptive apps that scale across mobile, tablets, foldables and more!</p><div class="qg qh qi qj qk ql"><a href="http://android-developers.googleblog.com/2024/07/updates-samsung-galaxy-unpacked.html?source=post_page-----1dbf4e81b127--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qm ab jw"><div class="qn ab co cb qo qp"><h2 class="bf hu jn z ke qq kg kh qr kj kl hs bk">Prepare your app for the new Samsung Galaxy foldables and watches!</h2><div class="qs l"><h3 class="bf b jn z ke qq kg kh qr kj kl du">The Galaxy Unpacked event from Samsung debuted the latest in foldables, wearables - and more. Get started building for…</h3></div><div class="qt l"><p class="bf b dv z ke qq kg kh qr kj kl du">android-developers.googleblog.com</p></div></div><div class="qu l"><div class="rk l qw qx qy qu qz hp ql"></div></div></div></a></div><p id="1e61" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">Google announced Android Device Streaming in open beta at Google I/O 2024, enabling you to test your apps on physical devices in Google data centers. Grant & Adarsh share that <a class="af op" href="http://android-developers.googleblog.com/2024/08/android-device-streaming-announcing-early-access.html" rel="noopener ugc nofollow" target="_blank">Android Device Streaming is now expanding its partnership</a> with device manufacturers like Samsung, Xiaomi, and Oppo, allowing you to access even more physical devices directly in Android Studio using OmniLab for secure connections.</p><div class="qg qh qi qj qk ql"><a href="http://android-developers.googleblog.com/2024/08/android-device-streaming-announcing-early-access.html?source=post_page-----1dbf4e81b127--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qm ab jw"><div class="qn ab co cb qo qp"><h2 class="bf hu jn z ke qq kg kh qr kj kl hs bk">Android Device Streaming: Announcing Early Access to Samsung, Xiaomi, and Oppo Device Labs</h2><div class="qs l"><h3 class="bf b jn z ke qq kg kh qr kj kl du">Android Device Streaming is expanding its service to include devices from OEMs such as Samsung, Xiaomi, and Oppo.</h3></div><div class="qt l"><p class="bf b dv z ke qq kg kh qr kj kl du">android-developers.googleblog.com</p></div></div><div class="qu l"><div class="rl l qw qx qy qu qz hp ql"></div></div></div></a></div><p id="d1d5" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">Cullen discusses how <a class="af op" href="http://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html" rel="noopener ugc nofollow" target="_blank">Google Play’s new Collections feature</a> organizes app content into categories, allowing users to access it from a Play Store widget. You can use the <a class="af op" href="https://developer.android.com/guide/playcore/engage" rel="noopener ugc nofollow" target="_blank">Engage SDK</a> to push personalized content to Collections, requiring minimal effort. Top apps like Amazon Prime Video and Spotify have already integrated with the Engage SDK.</p><div class="qg qh qi qj qk ql"><a href="http://android-developers.googleblog.com/2024/07/introducing-collections-powered-by-engage-sdk.html?source=post_page-----1dbf4e81b127--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qm ab jw"><div class="qn ab co cb qo qp"><h2 class="bf hu jn z ke qq kg kh qr kj kl hs bk">Introducing Collections, a new on-device surface for your content</h2><div class="qs l"><h3 class="bf b jn z ke qq kg kh qr kj kl du">Google Play is introducing Collections, a new on-device surface powered by Engage SDK that expands the discovery of app…</h3></div><div class="qt l"><p class="bf b dv z ke qq kg kh qr kj kl du">android-developers.googleblog.com</p></div></div><div class="qu l"><div class="rm l qw qx qy qu qz hp ql"></div></div></div></a></div><p id="3651" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">Bessie and Chris introduce the <a class="af op" href="http://android-developers.googleblog.com/2024/07/making-security-easy-vuln-remediation.html" rel="noopener ugc nofollow" target="_blank">Android Application Security Knowledge Base (AAKB)</a> — a repository of common code issues, with remediation examples and explanations for implementing specific code patterns. Android Studio has updated its security lint checks to include links to relevant articles from AAKB, providing context for vulnerable code snippets.</p><div class="qg qh qi qj qk ql"><a href="http://android-developers.googleblog.com/2024/07/making-security-easy-vuln-remediation.html?source=post_page-----1dbf4e81b127--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qm ab jw"><div class="qn ab co cb qo qp"><h2 class="bf hu jn z ke qq kg kh qr kj kl hs bk">Making security easy: How we are helping you fix vulnerabilities in your Android apps</h2><div class="qs l"><h3 class="bf b jn z ke qq kg kh qr kj kl du">The Android Application Security Knowledge Base (AAKB) is a new developer resource, providing guidance via a homepage…</h3></div><div class="qt l"><p class="bf b dv z ke qq kg kh qr kj kl du">android-developers.googleblog.com</p></div></div><div class="qu l"><div class="rn l qw qx qy qu qz hp ql"></div></div></div></a></div><p id="dea9" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">Robbie shares <a class="af op" href="https://android-developers.googleblog.com/2024/07/weareplay-stories-from-people-creating-apps-and-games-in-the-us.html" rel="noopener ugc nofollow" target="_blank">stories from people creating apps and games in the U.S</a>, highlighting additional emerging businesses on Google Play. These stories demonstrate the diverse and innovative nature of the app and game industry in the United States.</p><div class="qg qh qi qj qk ql"><a href="https://android-developers.googleblog.com/2024/07/weareplay-stories-from-people-creating-apps-and-games-in-the-us.html?source=post_page-----1dbf4e81b127--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qm ab jw"><div class="qn ab co cb qo qp"><h2 class="bf hu jn z ke qq kg kh qr kj kl hs bk">#WeArePlay | 153 new stories from people creating apps and games in the U.S.</h2><div class="qs l"><h3 class="bf b jn z ke qq kg kh qr kj kl du">WeArePlay showcases Google Play developer stories. Meet Bernard, Pinkey, Bria, Alina, and Samara, creating apps and…</h3></div><div class="qt l"><p class="bf b dv z ke qq kg kh qr kj kl du">android-developers.googleblog.com</p></div></div><div class="qu l"><div class="ro l qw qx qy qu qz hp ql"></div></div></div></a></div><p id="1532" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">Robbie also highlights <a class="af op" href="http://android-developers.googleblog.com/2024/08/weareplay-how-jakub-is-infusing-czech-mythology-into-his-games.html" rel="noopener ugc nofollow" target="_blank">Amanita Design, founded by Jakub in Prague</a>, that creates visually stunning and narratively rich games inspired by Czech landscapes and folklore. Their unique approach has earned worldwide recognition.</p><div class="qg qh qi qj qk ql"><a href="http://android-developers.googleblog.com/2024/08/weareplay-how-jakub-is-infusing-czech-mythology-into-his-games.html?source=post_page-----1dbf4e81b127--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qm ab jw"><div class="qn ab co cb qo qp"><h2 class="bf hu jn z ke qq kg kh qr kj kl hs bk">#WeArePlay | How Jakub is infusing Czech mythology into his games</h2><div class="qs l"><h3 class="bf b jn z ke qq kg kh qr kj kl du">WeArePlay showcases Google Play developer stories. Learn how Jakub, founder of Amanita Design, is infusing Czech…</h3></div><div class="qt l"><p class="bf b dv z ke qq kg kh qr kj kl du">android-developers.googleblog.com</p></div></div><div class="qu l"><div class="rp l qw qx qy qu qz hp ql"></div></div></div></a></div><h2 id="b3d4" class="rq pi ht bf pj rr rs dy pn rt ru ea pr oc rv rw rx og ry rz sa ok sb sc sd se bk"><a class="af op" href="https://adbackstage.libsyn.com/episode-208-micro-optimizations" rel="noopener ugc nofollow" target="_blank"><strong class="al">Android Developers Backstage</strong></a><strong class="al">🎙️</strong></h2><p id="3807" class="pw-post-body-paragraph nr ns ht nt b nu rf nw nx ny rg oa ob oc rh oe of og ri oi oj ok rj om on oo gn bk">On <a class="af op" href="https://adbackstage.libsyn.com/episode-208-micro-optimizations" rel="noopener ugc nofollow" target="_blank">Android Developers Backstage Episode 208: “Micro optimizations”</a>, Tor and Romain chat about micro optimizations and writing custom tools such as Kotlin Explorer that can help detect code inefficiencies. They also discuss the cost of using Companion objects, making Hash maps more performant and many more tips to optimize your app. Listen to it in <a class="af op" href="https://adbackstage.libsyn.com/episode-208-micro-optimizations" rel="noopener ugc nofollow" target="_blank">podcast</a> or <a class="af op" href="https://www.youtube.com/watch?v=Z9-Z16glXRU" rel="noopener ugc nofollow" target="_blank">youtube</a> format.</p><figure class="oq or os ot ou gs"><div class="ov ke l fj"><div class="oy ox l"></div></div></figure><figure class="oq or os ot ou gs"><div class="ov ke l fj"><div class="ow ox l"></div></div></figure><h1 id="3c16" class="ph pi ht bf pj pk ra pm pn po rb pq pr ps rc pu pv pw rd py pz qa re qc qd qe bk">Videos💡</h1><p id="1468" class="pw-post-body-paragraph nr ns ht nt b nu rf nw nx ny rg oa ob oc rh oe of og ri oi oj ok rj om on oo gn bk">How to use nested scrolling in Compose, for a seemingly complex coordination between multiple components on a single scroll.</p><figure class="oq or os ot ou gs"><div class="ov ke l fj"><div class="ow ox l"></div></div></figure><p id="5673" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">How to use the Pager composable, configuration parameters such as controlling the fling distance, and tying into the PagerState to create animations.</p><figure class="oq or os ot ou gs"><div class="ov ke l fj"><div class="ow ox l"></div></div></figure><p id="8e76" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">Learn about Lookahead layout system — a new powerful feature of Compose. Using this new layouting mechanism, we can create powerful layouts that animate fluidly.</p><figure class="oq or os ot ou gs"><div class="ov ke l fj"><div class="ow ox l"></div></div></figure><p id="0234" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">Learn how AndroidX Lifecycle libraries (ViewModel, Lifecycle Runtime, and Compose support) were converted to Kotlin multi-platform (KMP), the API challenges and the process.</p><figure class="oq or os ot ou gs"><div class="ov ke l fj"><div class="ow ox l"></div></div></figure><h1 id="afcb" class="ph pi ht bf pj pk ra pm pn po rb pq pr ps rc pu pv pw rd py pz qa re qc qd qe bk"><a class="af op" href="https://developer.android.com/jetpack/androidx/versions/all-channel" rel="noopener ugc nofollow" target="_blank">AndroidX Releases</a> 🚀</h1><p id="8853" class="pw-post-body-paragraph nr ns ht nt b nu rf nw nx ny rg oa ob oc rh oe of og ri oi oj ok rj om on oo gn bk">There were a lot of stable releases.</p><p id="28a4" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">For Wear apps check out stable <a class="af op" href="https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.2.0" rel="noopener ugc nofollow" target="_blank">Wear ProtoLayout 1.2.0</a> and <a class="af op" href="https://developer.android.com/jetpack/androidx/releases/wear-tiles#1.4.0" rel="noopener ugc nofollow" target="_blank">Wear Tiles 1.4.0</a>.</p><p id="da1b" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">For Games apps there are several releases including <a class="af op" href="https://developer.android.com/jetpack/androidx/releases/games#games-activity-3.0.5" rel="noopener ugc nofollow" target="_blank">Games-Activity 3.0.5</a>, <a class="af op" href="https://developer.android.com/jetpack/androidx/releases/games#games-text-input-3.0.4" rel="noopener ugc nofollow" target="_blank">Games-Text-Input 3.0.4</a>, <a class="af op" href="https://developer.android.com/jetpack/androidx/releases/games#games-performance-tuner-2.0.0" rel="noopener ugc nofollow" target="_blank">Games-Performance-Tuner 2.0.0</a> and <a class="af op" href="https://developer.android.com/jetpack/androidx/releases/games#games-frame-pacing-2.1.2" rel="noopener ugc nofollow" target="_blank">Games-Frame-Pacing 2.1.2</a></p><p id="a9d7" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">Several libraries include additional Kotlin Multiplatform targets: <a class="af op" href="https://developer.android.com/jetpack/androidx/releases/paging#3.3.2" rel="noopener ugc nofollow" target="_blank">Paging Version 3.3.2</a>, <a class="af op" href="https://developer.android.com/jetpack/androidx/releases/annotation#1.8.2" rel="noopener ugc nofollow" target="_blank">Annotation 1.8.2</a></p><p id="3cd9" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo gn bk">And a lot of other stable releases dropped: <a class="af op" href="https://developer.android.com/jetpack/androidx/releases/media3#1.4.0" rel="noopener ugc nofollow" target="_blank">Media 1.4.0</a>, <a class="af op" href="https://developer.android.com/jetpack/androidx/releases/collection#1.4.3" rel="noopener ugc nofollow" target="_blank">Collection 1.4.3</a>, <a class="af op" href="https://developer.android.com/jetpack/androidx/releases/transition#1.5.1" rel="noopener ugc nofollow" target="_blank">Transition 1.5.1</a>, <a class="af op" href="https://developer.android.com/jetpack/androidx/releases/lifecycle#2.8.4" rel="noopener ugc nofollow" target="_blank">Lifecycle 2.8.4</a>, <a class="af op" href="https://developer.android.com/jetpack/androidx/releases/fragment#1.8.2" rel="noopener ugc nofollow" target="_blank">Fragment 1.8.2</a>, <a class="af op" href="https://developer.android.com/jetpack/androidx/releases/annotation#1.8.2" rel="noopener ugc nofollow" target="_blank">Annotation 1.8.2</a>, <a class="af op" href="https://developer.android.com/jetpack/androidx/releases/activity#1.9.1" rel="noopener ugc nofollow" target="_blank">Activity 1.9.1</a>, <a class="af op" href="https://developer.android.com/jetpack/androidx/releases/work#2.9.1" rel="noopener ugc nofollow" target="_blank">WorkManager Version 2.9.1</a>, <a class="af op" href="https://developer.android.com/jetpack/androidx/releases/compose-compiler#1.5.15" rel="noopener ugc nofollow" target="_blank">Compose Compiler 1.5.15</a></p><div class="qg qh qi qj qk ql"><a href="https://developer.android.com/jetpack/androidx/versions/all-channel?source=post_page-----1dbf4e81b127--------------------------------" rel="noopener ugc nofollow" target="_blank"><div class="qm ab jw"><div class="qn ab co cb qo qp"><h2 class="bf hu jn z ke qq kg kh qr kj kl hs bk">Recent Release Notes | Android Developers</h2><div class="qs l"><h3 class="bf b jn z ke qq kg kh qr kj kl du">the Jetpack team started signing Jetpack libraries in June 2023. For more information, see Each version of an AndroidX…</h3></div><div class="qt l"><p class="bf b dv z ke qq kg kh qr kj kl du">developer.android.com</p></div></div><div class="qu l"><div class="sf l qw qx qy qu qz hp ql"></div></div></div></a></div><h1 id="0c69" class="ph pi ht bf pj pk ra pm pn po rb pq pr ps rc pu pv pw rd py pz qa re qc qd qe bk">Now then… 👋</h1><p id="50d0" class="pw-post-body-paragraph nr ns ht nt b nu rf nw nx ny rg oa ob oc rh oe of og ri oi oj ok rj om on oo gn bk">That’s it for this week with Android 15 Beta 4, Samsung’s Galaxy Unpacked event, Google Play’s new Collections feature and security enhancements, inspirational stories from #WeArePlay series and lots of stable AndroidX releases.</p><p id="e678" class="pw-post-body-paragraph nr ns ht nt b nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo 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 jz"><div class="qs ab"><a class="si ay am ao" rel="noopener follow" href="/tag/android-15?source=post_page-----1dbf4e81b127--------------------------------"><div class="sj fj cx sk ge sl sm bf b bg z bk sn">Android 15</div></a></div><div class="qs ab"><a class="si ay am ao" rel="noopener follow" href="/tag/google-play?source=post_page-----1dbf4e81b127--------------------------------"><div class="sj fj cx sk ge sl sm bf b bg z bk sn">Google Play</div></a></div><div class="qs ab"><a class="si ay am ao" rel="noopener follow" href="/tag/featured?source=post_page-----1dbf4e81b127--------------------------------"><div class="sj fj cx sk ge sl sm bf b bg z bk sn">Featured</div></a></div><div class="qs ab"><a class="si ay am ao" rel="noopener follow" href="/tag/now-in-android?source=post_page-----1dbf4e81b127--------------------------------"><div class="sj fj cx sk ge sl sm bf b bg z bk sn">Now In Android</div></a></div><div class="qs ab"><a class="si ay am ao" rel="noopener follow" href="/tag/androidx?source=post_page-----1dbf4e81b127--------------------------------"><div class="sj fj cx sk ge sl sm bf b bg z bk sn">Androidx</div></a></div></div></div></div><div class="l"></div><footer class="so pa sp sq sr ab q ss jj 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 lu"><div class="su l"><span class="l sv sw sx e d"><div class="ab q lu lv"><div class="pw-multi-vote-icon fj kd lw lx ly"><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%2F1dbf4e81b127&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-109-1dbf4e81b127&user=Kateryna+Semenova&userId=b85a51f012d7&source=---footer_actions--1dbf4e81b127---------------------clap_footer-----------"><div><div class="bm" aria-hidden="false"><div class="lz ao ma mb mc md am me mf mg ly"><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 mh mi mj mk ml mm mn"><p class="bf b dv z du"><span class="mo">--</span></p></div></div></span><span class="l h g f sy sz"><div class="ab q lu lv"><div class="pw-multi-vote-icon fj kd lw lx ly"><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%2F1dbf4e81b127&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-109-1dbf4e81b127&user=Kateryna+Semenova&userId=b85a51f012d7&source=---footer_actions--1dbf4e81b127---------------------clap_footer-----------"><div><div class="bm" aria-hidden="false"><div class="lz ao ma mb mc md am me mf mg ly"><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 mh mi mj mk ml mm mn"><p class="bf b dv z du"><span class="mo">--</span></p></div></div></span></div><div class="bq ab"><div><div class="bm" aria-hidden="false"><button class="ao lz mp mq ab q fk mr ms" aria-label="responses"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" class="mt"><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="pg l jw"><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%2F1dbf4e81b127&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fandroiddevelopers%2Fnow-in-android-109-1dbf4e81b127&source=---footer_actions--1dbf4e81b127---------------------bookmark_footer-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="du mv" 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="pg l jw"><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 mz an ao ap ex na nb ms nc"><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 jy jx"><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--1dbf4e81b127--------------------------------" rel="noopener follow"><div class="fj ab"><img alt="Android Developers" class="tv ja jb cx" src="https://miro.medium.com/v2/resize:fill:96:96/1*4Tg6pPzer7cIarYaszIKaQ.png" width="48" height="48" loading="lazy"/><div class="tv l jb ja 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--1dbf4e81b127--------------------------------" 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 jw"><div class="ab"></div></div></div><div class="ab co qo"><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--1dbf4e81b127--------------------------------" rel="noopener follow"><h2 class="pw-author-name bf ue uf ug uh ui uj uk oc rw rx og rz sa ok sc sd bk"><span class="gn ud">Published in <!-- -->Android Developers</span></h2></a><div class="qs ab iz"><div class="l jw"><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 jp" rel="noopener follow" href="/androiddevelopers/followers?source=post_page---post_publication_info--1dbf4e81b127--------------------------------">51K Followers</a></span></div><div class="bf b bg z du ab kc"><span class="jq 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 jp" rel="noopener follow" href="/androiddevelopers/test-smarter-not-harder-new-testing-strategies-documentation-255973814ae3?source=post_page---post_publication_info--1dbf4e81b127--------------------------------">Last published <!-- -->2 days ago</a></div></div><div class="ul 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 jy jx"><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="/@katerynasemenova?source=post_page---post_author_info--1dbf4e81b127--------------------------------"><div class="l fj"><img alt="Kateryna Semenova" class="l fd by jb ja cx" src="https://miro.medium.com/v2/resize:fill:96:96/2*MWidJNpRKpwnPhMYw1hBTA.png" width="48" height="48" loading="lazy"/><div class="fr by l jb ja fs n ay tw"></div></div></a></div><div class="j i d"><a tabindex="0" rel="noopener follow" href="/@katerynasemenova?source=post_page---post_author_info--1dbf4e81b127--------------------------------"><div class="l fj"><img alt="Kateryna Semenova" class="l fd by tx ty cx" src="https://miro.medium.com/v2/resize:fill:128:128/2*MWidJNpRKpwnPhMYw1hBTA.png" 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 jw"><div class="ab"><span><button class="bf b bg z um sj un uo up uq ur ev ew us ut uu fa fb fc fd bm fe ff">Follow</button></span></div></div></div><div class="ab co qo"><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="/@katerynasemenova?source=post_page---post_author_info--1dbf4e81b127--------------------------------"><h2 class="pw-author-name bf ue uf ug uh ui uj uk oc rw rx og rz sa ok sc sd bk"><span class="gn ud">Written by <!-- -->Kateryna Semenova</span></h2></a><div class="qs ab iz"><div class="l jw"><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 jp" rel="noopener follow" href="/@katerynasemenova/followers?source=post_page---post_author_info--1dbf4e81b127--------------------------------">141 Followers</a></span></div><div class="bf b bg z du ab kc"><span class="jq 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 jp" rel="noopener follow" href="/@katerynasemenova/following?source=post_page---post_author_info--1dbf4e81b127--------------------------------">46 Following</a></div></div><div class="ul l"><p class="bf b bg z bk"><span class="gn">Android DevRel Eng @ Google. Former Software Eng @ Lyft</span></p></div></div></div><div class="h k"><div class="ab"><span><button class="bf b bg z um sj un uo up uq ur ev ew us ut uu fa fb fc fd bm fe ff">Follow</button></span></div></div></div></div></div></div><div class="uv l"><div class="tf bh r uw ux uy uz va"></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="ab q cp"><h2 class="bf ue pk pm pn po pq pr ps pu pv pw py pz qa qc qd bk">No responses yet</h2><div class="ab vb"><div><div class="bm" aria-hidden="false"><a class="vc vd" href="https://policy.medium.com/medium-rules-30e5502c4eb4?source=post_page---post_responses--1dbf4e81b127--------------------------------" 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="ve vf vg vh vi l bx"><div class="h k j"><div class="tf bh vj vk"></div><div class="ab cb"><div class="ci bh fz ga gb gc"><div class="vl ab lu jz"><div class="vm vn 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-----1dbf4e81b127--------------------------------" rel="noopener follow"><p class="bf b dv z du">Help</p></a></div><div class="vm vn 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-----1dbf4e81b127--------------------------------" rel="noopener follow"><p class="bf b dv z du">Status</p></a></div><div class="vm vn 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&source=post_page-----1dbf4e81b127--------------------------------"><p class="bf b dv z du">About</p></a></div><div class="vm vn 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-----1dbf4e81b127--------------------------------"><p class="bf b dv z du">Careers</p></a></div><div class="vm vn 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-----1dbf4e81b127--------------------------------" rel="noopener follow"><p class="bf b dv z du">Press</p></a></div><div class="vm vn 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-----1dbf4e81b127--------------------------------" rel="noopener follow"><p class="bf b dv z du">Blog</p></a></div><div class="vm vn 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-----1dbf4e81b127--------------------------------" rel="noopener follow"><p class="bf b dv z du">Privacy</p></a></div><div class="vm vn 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-----1dbf4e81b127--------------------------------" rel="noopener follow"><p class="bf b dv z du">Terms</p></a></div><div class="vm vn 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-----1dbf4e81b127--------------------------------" rel="noopener follow"><p class="bf b dv z du">Text to speech</p></a></div><div class="vm 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-----1dbf4e81b127--------------------------------"><p class="bf b dv z du">Teams</p></a></div></div></div></div></div></div></div></div></div></div><script>window.__BUILD_ID__="main-20241122-185319-7bcdc08639"</script><script>window.__GRAPHQL_URI__ = "https://medium.com/_/graphql"</script><script>window.__PRELOADED_STATE__ = {"algolia":{"queries":{}},"cache":{"experimentGroupSet":true,"reason":"","group":"enabled","tags":["group-edgeCachePosts","post-1dbf4e81b127","user-b85a51f012d7","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":"aeb3ca53-f933-4178-8517-79fed4718469","hybridDevServices":[],"originalSpanCarrier":{"traceparent":"00-5034c7fa9813a23734bce3c169ab6864-83d88c15b36719e5-01"}},"multiVote":{"clapsPerPost":{}},"navigation":{"branch":{"show":null,"hasRendered":null,"blockedByCTA":false},"hideGoogleOneTap":false,"hasRenderedAlternateUserBanner":null,"currentLocation":"https:\u002F\u002Fmedium.com\u002Fandroiddevelopers\u002Fnow-in-android-109-1dbf4e81b127","host":"medium.com","hostname":"medium.com","referrer":"","hasSetReferrer":false,"susiModal":{"step":null,"operation":"register"},"postRead":false,"partnerProgram":{"selectedCountryCode":null},"queryString":"","currentHash":""},"config":{"nodeEnv":"production","version":"main-20241122-185319-7bcdc08639","target":"production","productName":"Medium","publicUrl":"https:\u002F\u002Fcdn-client.medium.com\u002Flite","authDomain":"medium.com","authGoogleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","favicon":"production","glyphUrl":"https:\u002F\u002Fglyph.medium.com","branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","algolia":{"appId":"MQ57UUUQZ2","apiKeySearch":"394474ced050e3911ae2249ecc774921","indexPrefix":"medium_","host":"-dsn.algolia.net"},"recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","recaptchaEnterpriseKeyId":"6Le-uGgpAAAAAPprRaokM8AKthQ9KNGdoxaGUvVp","datadog":{"applicationId":"6702d87d-a7e0-42fe-bbcb-95b469547ea0","clientToken":"pub853ea8d17ad6821d9f8f11861d23dfed","rumToken":"pubf9cc52896502b9413b68ba36fc0c7162","context":{"deployment":{"target":"production","tag":"main-20241122-185319-7bcdc08639","commit":"7bcdc08639c179dc5172558201a3fd3abc1b5db6"}},"datacenter":"us"},"googleAnalyticsCode":"G-7JY7T788PK","googlePay":{"apiVersion":"2","apiVersionMinor":"0","merchantId":"BCR2DN6TV7EMTGBM","merchantName":"Medium","instanceMerchantId":"13685562959212738550"},"applePay":{"version":3},"signInWallCustomDomainCollectionIds":["3a8144eabfe3","336d898217ee","61061eb0c96b","138adf9c44c","819cc2aaeee0"],"mediumMastodonDomainName":"me.dm","mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"],"tierOneDomains":["medium.com","thebolditalic.com","arcdigital.media","towardsdatascience.com","uxdesign.cc","codeburst.io","psiloveyou.xyz","writingcooperative.com","entrepreneurshandbook.co","prototypr.io","betterhumans.coach.me","theascent.pub"],"topicsToFollow":["d61cf867d93f","8a146bc21b28","1eca0103fff3","4d562ee63426","aef1078a3ef5","e15e46793f8d","6158eb913466","55f1c20aba7a","3d18b94f6858","4861fee224fd","63c6f1f93ee","1d98b3a9a871","decb52b64abf","ae5d4995e225","830cded25262"],"topicToTagMappings":{"accessibility":"accessibility","addiction":"addiction","android-development":"android-development","art":"art","artificial-intelligence":"artificial-intelligence","astrology":"astrology","basic-income":"basic-income","beauty":"beauty","biotech":"biotech","blockchain":"blockchain","books":"books","business":"business","cannabis":"cannabis","cities":"cities","climate-change":"climate-change","comics":"comics","coronavirus":"coronavirus","creativity":"creativity","cryptocurrency":"cryptocurrency","culture":"culture","cybersecurity":"cybersecurity","data-science":"data-science","design":"design","digital-life":"digital-life","disability":"disability","economy":"economy","education":"education","equality":"equality","family":"family","feminism":"feminism","fiction":"fiction","film":"film","fitness":"fitness","food":"food","freelancing":"freelancing","future":"future","gadgets":"gadgets","gaming":"gaming","gun-control":"gun-control","health":"health","history":"history","humor":"humor","immigration":"immigration","ios-development":"ios-development","javascript":"javascript","justice":"justice","language":"language","leadership":"leadership","lgbtqia":"lgbtqia","lifestyle":"lifestyle","machine-learning":"machine-learning","makers":"makers","marketing":"marketing","math":"math","media":"media","mental-health":"mental-health","mindfulness":"mindfulness","money":"money","music":"music","neuroscience":"neuroscience","nonfiction":"nonfiction","outdoors":"outdoors","parenting":"parenting","pets":"pets","philosophy":"philosophy","photography":"photography","podcasts":"podcast","poetry":"poetry","politics":"politics","privacy":"privacy","product-management":"product-management","productivity":"productivity","programming":"programming","psychedelics":"psychedelics","psychology":"psychology","race":"race","relationships":"relationships","religion":"religion","remote-work":"remote-work","san-francisco":"san-francisco","science":"science","self":"self","self-driving-cars":"self-driving-cars","sexuality":"sexuality","social-media":"social-media","society":"society","software-engineering":"software-engineering","space":"space","spirituality":"spirituality","sports":"sports","startups":"startup","style":"style","technology":"technology","transportation":"transportation","travel":"travel","true-crime":"true-crime","tv":"tv","ux":"ux","venture-capital":"venture-capital","visual-design":"visual-design","work":"work","world":"world","writing":"writing"},"defaultImages":{"avatar":{"imageId":"1*dmbNkD5D-u45r44go_cf0g.png","height":150,"width":150},"orgLogo":{"imageId":"7*V1_7XP4snlmqrc_0Njontw.png","height":110,"width":500},"postLogo":{"imageId":"bd978bb536350a710e8efb012513429cabdc4c28700604261aeda246d0f980b7","height":810,"width":1440},"postPreviewImage":{"imageId":"1*hn4v1tCaJy7cWMyb0bpNpQ.png","height":386,"width":579}},"collectionStructuredData":{"8d6b8a439e32":{"name":"Elemental","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F980\u002F1*9ygdqoKprhwuTVKUM0DLPA@2x.png","width":980,"height":159}}},"3f6ecf56618":{"name":"Forge","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F596\u002F1*uULpIlImcO5TDuBZ6lm7Lg@2x.png","width":596,"height":183}}},"ae2a65f35510":{"name":"GEN","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F264\u002F1*RdVZMdvfV3YiZTw6mX7yWA.png","width":264,"height":140}}},"88d9857e584e":{"name":"LEVEL","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*JqYMhNX6KNNb2UlqGqO2WQ.png","width":540,"height":108}}},"7b6769f2748b":{"name":"Marker","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F383\u002F1*haCUs0wF6TgOOvfoY-jEoQ@2x.png","width":383,"height":92}}},"444d13b52878":{"name":"OneZero","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*cw32fIqCbRWzwJaoQw6BUg.png","width":540,"height":123}}},"8ccfed20cbb2":{"name":"Zora","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*tZUQqRcCCZDXjjiZ4bDvgQ.png","width":540,"height":106}}}},"embeddedPostIds":{"coronavirus":"cd3010f9d81f"},"sharedCdcMessaging":{"COVID_APPLICABLE_TAG_SLUGS":[],"COVID_APPLICABLE_TOPIC_NAMES":[],"COVID_APPLICABLE_TOPIC_NAMES_FOR_TOPIC_PAGE":[],"COVID_MESSAGES":{"tierA":{"text":"For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":66,"end":73,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"tierB":{"text":"Anyone can publish on Medium per our Policies, but we don’t fact-check every story. For more info about the coronavirus, see cdc.gov.","markups":[{"start":37,"end":45,"href":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Fcategories\u002F201931128-Policies-Safety"},{"start":125,"end":132,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"paywall":{"text":"This article has been made free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":56,"end":70,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":138,"end":145,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"unbound":{"text":"This article is free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":45,"end":59,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":127,"end":134,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]}},"COVID_BANNER_POST_ID_OVERRIDE_WHITELIST":["3b31a67bff4a"]},"sharedVoteMessaging":{"TAGS":["politics","election-2020","government","us-politics","election","2020-presidential-race","trump","donald-trump","democrats","republicans","congress","republican-party","democratic-party","biden","joe-biden","maga"],"TOPICS":["politics","election"],"MESSAGE":{"text":"Find out more about the U.S. election results here.","markups":[{"start":46,"end":50,"href":"https:\u002F\u002Fcookpolitical.com\u002F2020-national-popular-vote-tracker"}]},"EXCLUDE_POSTS":["397ef29e3ca5"]},"embedPostRules":[],"recircOptions":{"v1":{"limit":3},"v2":{"limit":8}},"braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","braintree":{"enabled":true,"merchantId":"m56f8fqpf7ngnrd4","merchantAccountId":{"usd":"AMediumCorporation_instant","eur":"amediumcorporation_EUR","cad":"amediumcorporation_CAD"},"publicKey":"ds2nn34bg2z7j5gd","braintreeEnvironment":"production","dashboardUrl":"https:\u002F\u002Fwww.braintreegateway.com\u002Fmerchants","gracePeriodDurationInDays":14,"mediumMembershipPlanId":{"monthly":"ce105f8c57a3","monthlyV2":"e8a5e126-792b-4ee6-8fba-d574c1b02fc5","monthlyWithTrial":"d5ee3dbe3db8","monthlyPremium":"fa741a9b47a2","yearly":"a40ad4a43185","yearlyV2":"3815d7d6-b8ca-4224-9b8c-182f9047866e","yearlyStaff":"d74fb811198a","yearlyWithTrial":"b3bc7350e5c7","yearlyPremium":"e21bd2c12166","monthlyOneYearFree":"e6c0637a-2bad-4171-ab4f-3c268633d83c","monthly25PercentOffFirstYear":"235ecc62-0cdb-49ae-9378-726cd21c504b","monthly20PercentOffFirstYear":"ba518864-9c13-4a99-91ca-411bf0cac756","monthly15PercentOffFirstYear":"594c029b-9f89-43d5-88f8-8173af4e070e","monthly10PercentOffFirstYear":"c6c7bc9a-40f2-4b51-8126-e28511d5bdb0","monthlyForStudents":"629ebe51-da7d-41fd-8293-34cd2f2030a8","yearlyOneYearFree":"78ba7be9-0d9f-4ece-aa3e-b54b826f2bf1","yearly25PercentOffFirstYear":"2dbb010d-bb8f-4eeb-ad5c-a08509f42d34","yearly20PercentOffFirstYear":"47565488-435b-47f8-bf93-40d5fbe0ebc8","yearly15PercentOffFirstYear":"8259809b-0881-47d9-acf7-6c001c7f720f","yearly10PercentOffFirstYear":"9dd694fb-96e1-472c-8d9e-3c868d5c1506","yearlyForStudents":"e29345ef-ab1c-4234-95c5-70e50fe6bc23","monthlyCad":"p52orjkaceei","yearlyCad":"h4q9g2up9ktt"},"braintreeDiscountId":{"oneMonthFree":"MONTHS_FREE_01","threeMonthsFree":"MONTHS_FREE_03","sixMonthsFree":"MONTHS_FREE_06","fiftyPercentOffOneYear":"FIFTY_PERCENT_OFF_ONE_YEAR"},"3DSecureVersion":"2","defaultCurrency":"usd","providerPlanIdCurrency":{"4ycw":"usd","rz3b":"usd","3kqm":"usd","jzw6":"usd","c2q2":"usd","nnsw":"usd","q8qw":"usd","d9y6":"usd","fx7w":"cad","nwf2":"cad"}},"paypalClientId":"AXj1G4fotC2GE8KzWX9mSxCH1wmPE3nJglf4Z2ig_amnhvlMVX87otaq58niAg9iuLktVNF_1WCMnN7v","paypal":{"host":"https:\u002F\u002Fapi.paypal.com:443","clientMode":"production","serverMode":"live","webhookId":"4G466076A0294510S","monthlyPlan":{"planId":"P-9WR0658853113943TMU5FDQA","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlan":{"planId":"P-7N8963881P8875835MU5JOPQ","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com\u002Fredeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"},"oldMonthlyPlan":{"planId":"P-96U02458LM656772MJZUVH2Y","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlan":{"planId":"P-59P80963JF186412JJZU3SMI","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"monthlyPlanWithTrial":{"planId":"P-66C21969LR178604GJPVKUKY","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlanWithTrial":{"planId":"P-6XW32684EX226940VKCT2MFA","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oldMonthlyPlanNoSetupFee":{"planId":"P-4N046520HR188054PCJC7LJI","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlanNoSetupFee":{"planId":"P-7A4913502Y5181304CJEJMXQ","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"sdkUrl":"https:\u002F\u002Fwww.paypal.com\u002Fsdk\u002Fjs"},"stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","log":{"json":true,"level":"info"},"imageUploadMaxSizeMb":25,"staffPicks":{"title":"Staff Picks","catalogId":"c7bc6e1ee00f"}},"session":{"xsrf":""}}</script><script>window.__APOLLO_STATE__ = {"ROOT_QUERY":{"__typename":"Query","viewer":null,"collectionByDomainOrSlug({\"domainOrSlug\":\"androiddevelopers\"})":{"__ref":"Collection:95b274b437c2"},"postResult({\"id\":\"1dbf4e81b127\"})":{"__ref":"Post:1dbf4e81b127"}},"Collection:95b274b437c2":{"__typename":"Collection","id":"95b274b437c2","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}]}},"favicon":{"__ref":"ImageMetadata:"},"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":51945,"latestPostsConnection({\"paging\":{\"limit\":1}})":{"__typename":"PostConnection","posts":[{"__ref":"Post:255973814ae3"}]},"viewerEdge":{"__ref":"CollectionViewerEdge:collectionId:95b274b437c2-viewerId:lo_6ef7598878bc"},"twitterUsername":"androiddev","facebookPageId":null,"logo":{"__ref":"ImageMetadata:1*5pMw_nx55x_66tk77kutPQ.png"}},"ImageMetadata:":{"__typename":"ImageMetadata","id":""},"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:b85a51f012d7":{"__typename":"LinkedAccounts","mastodon":null,"id":"b85a51f012d7"},"UserViewerEdge:userId:b85a51f012d7-viewerId:lo_6ef7598878bc":{"__typename":"UserViewerEdge","id":"userId:b85a51f012d7-viewerId:lo_6ef7598878bc","isFollowing":false,"isUser":false,"isMuting":false},"NewsletterV3:4f5790787587":{"__typename":"NewsletterV3","id":"4f5790787587","type":"NEWSLETTER_TYPE_AUTHOR","slug":"b85a51f012d7","name":"b85a51f012d7","collection":null,"user":{"__ref":"User:b85a51f012d7"}},"User:b85a51f012d7":{"__typename":"User","id":"b85a51f012d7","name":"Kateryna Semenova","username":"katerynasemenova","newsletterV3":{"__ref":"NewsletterV3:4f5790787587"},"linkedAccounts":{"__ref":"LinkedAccounts:b85a51f012d7"},"isSuspended":false,"imageId":"2*MWidJNpRKpwnPhMYw1hBTA.png","mediumMemberAt":0,"verifications":{"__typename":"VerifiedInfo","isBookAuthor":false},"socialStats":{"__typename":"SocialStats","followerCount":141,"followingCount":44,"collectionFollowingCount":2},"customDomainState":null,"hasSubdomain":false,"bio":"Android DevRel Eng @ Google. Former Software Eng @ Lyft","isPartnerProgramEnrolled":false,"viewerEdge":{"__ref":"UserViewerEdge:userId:b85a51f012d7-viewerId:lo_6ef7598878bc"},"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:cb74eab3fe13_0":{"__typename":"Paragraph","id":"cb74eab3fe13_0","name":"7f31","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:cb74eab3fe13_1":{"__typename":"Paragraph","id":"cb74eab3fe13_1","name":"ab9c","type":"H3","href":null,"layout":null,"metadata":null,"text":"Now in Android #109","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_2":{"__typename":"Paragraph","id":"cb74eab3fe13_2","name":"5f2f","type":"P","href":null,"layout":null,"metadata":null,"text":"Welcome to episode 109 of Now in Android: your ongoing guide to what’s new and notable in the world of Android development.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_3":{"__typename":"Paragraph","id":"cb74eab3fe13_3","name":"0af4","type":"P","href":null,"layout":null,"metadata":null,"text":"In this episode, we’ll cover The Fourth Beta of Android 15, Samsung’s Galaxy Unpacked event, Google Play’s new Collections feature and security enhancements, inspirational stories from #WeArePlay series and lots of stable AndroidX releases.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":29,"end":58,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fthe-fourth-beta-of-android-15.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":60,"end":91,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fupdates-samsung-galaxy-unpacked.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":107,"end":130,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fintroducing-collections-powered-by-engage-sdk.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":135,"end":156,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fmaking-security-easy-vuln-remediation.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":207,"end":239,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Fversions\u002Fall-channel","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:c5c949312d2113a1d0dbe92a31319453":{"__typename":"MediaResource","id":"c5c949312d2113a1d0dbe92a31319453","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fx3sVb-Inu0c%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dx3sVb-Inu0c&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fx3sVb-Inu0c%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":"Now in Android: 109 - Android 15 Beta 4, Samsung Galaxy Unpacked, Google Play's new feature, & more!"},"Paragraph:cb74eab3fe13_4":{"__typename":"Paragraph","id":"cb74eab3fe13_4","name":"c04f","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:c5c949312d2113a1d0dbe92a31319453"}},"mixtapeMetadata":null},"MediaResource:59509872ab380ae35b6303c4dbbcd59c":{"__typename":"MediaResource","id":"59509872ab380ae35b6303c4dbbcd59c","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=%2F%2Fhtml5-player.libsyn.com%2Fembed%2Fepisode%2Fid%2F32764707%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%2F109-android-15-beta-4-samsung-galaxy-unpacked-google-plays-new-feature-and-more&image=https%3A%2F%2Fassets.libsyn.com%2Fsecure%2Fitem%2F32764707&key=d04bfffea46d4aeda930ec88cc64b87c&type=text%2Fhtml&schema=libsyn","iframeHeight":90,"iframeWidth":600,"title":"109 - Android 15 Beta 4, Samsung Galaxy Unpacked, Google Play's new feature, and more!"},"Paragraph:cb74eab3fe13_5":{"__typename":"Paragraph","id":"cb74eab3fe13_5","name":"be96","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:59509872ab380ae35b6303c4dbbcd59c"}},"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_6":{"__typename":"Paragraph","id":"cb74eab3fe13_6","name":"8e0e","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\u002Fx3sVb-Inu0c?si=oaqFXRkcBN_hekvX","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":72,"end":79,"href":"https:\u002F\u002Fnowinandroid.libsyn.com\u002F109-android-15-beta-4-samsung-galaxy-unpacked-google-plays-new-feature-and-more","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":97,"end":102,"href":"https:\u002F\u002Fyoutu.be\u002Fx3sVb-Inu0c?si=oaqFXRkcBN_hekvX","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":106,"end":112,"href":"https:\u002F\u002Fnowinandroid.libsyn.com\u002F109-android-15-beta-4-samsung-galaxy-unpacked-google-plays-new-feature-and-more","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_7":{"__typename":"Paragraph","id":"cb74eab3fe13_7","name":"e1db","type":"H3","href":null,"layout":null,"metadata":null,"text":"The Fourth Beta of Android 15 🧑💻","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":29,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fthe-fourth-beta-of-android-15.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"ImageMetadata:1*-b_VBwmqYCNltLlmUpBuQQ.png":{"__typename":"ImageMetadata","id":"1*-b_VBwmqYCNltLlmUpBuQQ.png","originalHeight":996,"originalWidth":2633,"focusPercentX":null,"focusPercentY":null,"alt":"Android 15"},"Paragraph:cb74eab3fe13_8":{"__typename":"Paragraph","id":"cb74eab3fe13_8","name":"5bc3","type":"IMG","href":null,"layout":"INSET_CENTER","metadata":{"__ref":"ImageMetadata:1*-b_VBwmqYCNltLlmUpBuQQ.png"},"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_9":{"__typename":"Paragraph","id":"cb74eab3fe13_9","name":"9ab7","type":"P","href":null,"layout":null,"metadata":null,"text":"Android 15 Beta 4, the final update in the beta release cycle, is now available. This release brings stability and final APIs for developers to test and integrate into their apps.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_10":{"__typename":"Paragraph","id":"cb74eab3fe13_10","name":"ded9","type":"P","href":null,"layout":null,"metadata":null,"text":"The blog covers the removal of the legacy PNG-based emoji font, which means some devices will only have the vector-based COLRv1 file. Android 15 also introduces several new features that you can take advantage of, including predictive back animations, Low Light Boost for improved low-light photography, a variable font for CJK languages, insights into app startup, screen recording detection, partial screen sharing, linking specific views with Credential Manager requests, edge-to-edge drawing by default, and generated previews for app widget providers.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":8,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fthe-fourth-beta-of-android-15.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_11":{"__typename":"Paragraph","id":"cb74eab3fe13_11","name":"f706","type":"P","href":null,"layout":null,"metadata":null,"text":"You are encouraged to test your apps, libraries, tools, and game engines for compatibility with Android 15 and update any necessary SDKs.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_12":{"__typename":"Paragraph","id":"cb74eab3fe13_12","name":"abe8","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"The Fourth Beta of Android 15\nAndroid 15 Beta 4 is the last scheduled update in the Android 15 beta program. Test your apps and send us your feedback…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":183,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fthe-fourth-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":150,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fthe-fourth-beta-of-android-15.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*hcDB3ChbW6wolcCS"}},"Paragraph:cb74eab3fe13_13":{"__typename":"Paragraph","id":"cb74eab3fe13_13","name":"d557","type":"H3","href":null,"layout":null,"metadata":null,"text":"Android Developers blog 📝","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_14":{"__typename":"Paragraph","id":"cb74eab3fe13_14","name":"5f20","type":"P","href":null,"layout":null,"metadata":null,"text":"Samsung’s Galaxy Unpacked event unveiled the latest foldables, wearables, and more, including the Galaxy Z Fold6, Z Flip6, Galaxy Watch7, and Watch Ultra. Maru shares how to get your apps ready for the latest Android devices, how you can prepare your app for Wear OS 5, and how to build adaptive apps that scale across mobile, tablets, foldables and more!","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":25,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fupdates-samsung-galaxy-unpacked.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_15":{"__typename":"Paragraph","id":"cb74eab3fe13_15","name":"67d1","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Prepare your app for the new Samsung Galaxy foldables and watches!\nThe Galaxy Unpacked event from Samsung debuted the latest in foldables, wearables - and more. Get started building for…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":219,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fupdates-samsung-galaxy-unpacked.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":66,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":67,"end":186,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fupdates-samsung-galaxy-unpacked.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*kSvijuATSGhvRFu1"}},"Paragraph:cb74eab3fe13_16":{"__typename":"Paragraph","id":"cb74eab3fe13_16","name":"1e61","type":"P","href":null,"layout":null,"metadata":null,"text":"Google announced Android Device Streaming in open beta at Google I\u002FO 2024, enabling you to test your apps on physical devices in Google data centers. Grant & Adarsh share that Android Device Streaming is now expanding its partnership with device manufacturers like Samsung, Xiaomi, and Oppo, allowing you to access even more physical devices directly in Android Studio using OmniLab for secure connections.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":176,"end":233,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F08\u002Fandroid-device-streaming-announcing-early-access.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_17":{"__typename":"Paragraph","id":"cb74eab3fe13_17","name":"7d2f","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Android Device Streaming: Announcing Early Access to Samsung, Xiaomi, and Oppo Device Labs\nAndroid Device Streaming is expanding its service to include devices from OEMs such as Samsung, Xiaomi, and Oppo.android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":237,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F08\u002Fandroid-device-streaming-announcing-early-access.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":90,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":91,"end":204,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F08\u002Fandroid-device-streaming-announcing-early-access.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*eGxCM9mPMGAgYaEa"}},"Paragraph:cb74eab3fe13_18":{"__typename":"Paragraph","id":"cb74eab3fe13_18","name":"d1d5","type":"P","href":null,"layout":null,"metadata":null,"text":"Cullen discusses how Google Play’s new Collections feature organizes app content into categories, allowing users to access it from a Play Store widget. You can use the Engage SDK to push personalized content to Collections, requiring minimal effort. Top apps like Amazon Prime Video and Spotify have already integrated with the Engage SDK.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":21,"end":58,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fintroducing-collections-powered-by-engage-sdk.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":168,"end":178,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fguide\u002Fplaycore\u002Fengage","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_19":{"__typename":"Paragraph","id":"cb74eab3fe13_19","name":"f2ce","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Introducing Collections, a new on-device surface for your content\nGoogle Play is introducing Collections, a new on-device surface powered by Engage SDK that expands the discovery of app…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":219,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fintroducing-collections-powered-by-engage-sdk.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":65,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":66,"end":186,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fintroducing-collections-powered-by-engage-sdk.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*H8Q_5v4V6y4_GARs"}},"Paragraph:cb74eab3fe13_20":{"__typename":"Paragraph","id":"cb74eab3fe13_20","name":"3651","type":"P","href":null,"layout":null,"metadata":null,"text":"Bessie and Chris introduce the Android Application Security Knowledge Base (AAKB) — a repository of common code issues, with remediation examples and explanations for implementing specific code patterns. Android Studio has updated its security lint checks to include links to relevant articles from AAKB, providing context for vulnerable code snippets.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":31,"end":81,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fmaking-security-easy-vuln-remediation.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_21":{"__typename":"Paragraph","id":"cb74eab3fe13_21","name":"bdd3","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Making security easy: How we are helping you fix vulnerabilities in your Android apps\nThe Android Application Security Knowledge Base (AAKB) is a new developer resource, providing guidance via a homepage…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":237,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fmaking-security-easy-vuln-remediation.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":85,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":86,"end":204,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fmaking-security-easy-vuln-remediation.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*QKUaxMj-B09lZmxD"}},"Paragraph:cb74eab3fe13_22":{"__typename":"Paragraph","id":"cb74eab3fe13_22","name":"dea9","type":"P","href":null,"layout":null,"metadata":null,"text":"Robbie shares stories from people creating apps and games in the U.S, highlighting additional emerging businesses on Google Play. These stories demonstrate the diverse and innovative nature of the app and game industry in the United States.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":14,"end":68,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fweareplay-stories-from-people-creating-apps-and-games-in-the-us.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_23":{"__typename":"Paragraph","id":"cb74eab3fe13_23","name":"b248","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"#WeArePlay | 153 new stories from people creating apps and games in the U.S.\nWeArePlay showcases Google Play developer stories. Meet Bernard, Pinkey, Bria, Alina, and Samara, creating apps and…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":226,"href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fweareplay-stories-from-people-creating-apps-and-games-in-the-us.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":76,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":77,"end":193,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"https:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F07\u002Fweareplay-stories-from-people-creating-apps-and-games-in-the-us.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*svvkJXmx2vZ2CUTw"}},"Paragraph:cb74eab3fe13_24":{"__typename":"Paragraph","id":"cb74eab3fe13_24","name":"1532","type":"P","href":null,"layout":null,"metadata":null,"text":"Robbie also highlights Amanita Design, founded by Jakub in Prague, that creates visually stunning and narratively rich games inspired by Czech landscapes and folklore. Their unique approach has earned worldwide recognition.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":23,"end":65,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F08\u002Fweareplay-how-jakub-is-infusing-czech-mythology-into-his-games.html","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_25":{"__typename":"Paragraph","id":"cb74eab3fe13_25","name":"0889","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"#WeArePlay | How Jakub is infusing Czech mythology into his games\nWeArePlay showcases Google Play developer stories. Learn how Jakub, founder of Amanita Design, is infusing Czech…android-developers.googleblog.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":212,"href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F08\u002Fweareplay-how-jakub-is-infusing-czech-mythology-into-his-games.html","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":65,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":66,"end":179,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"http:\u002F\u002Fandroid-developers.googleblog.com\u002F2024\u002F08\u002Fweareplay-how-jakub-is-infusing-czech-mythology-into-his-games.html","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*dCaXSnelg_nmmkOM"}},"Paragraph:cb74eab3fe13_26":{"__typename":"Paragraph","id":"cb74eab3fe13_26","name":"b3d4","type":"H4","href":null,"layout":null,"metadata":null,"text":"Android Developers Backstage🎙️","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":28,"href":"https:\u002F\u002Fadbackstage.libsyn.com\u002Fepisode-208-micro-optimizations","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":31,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_27":{"__typename":"Paragraph","id":"cb74eab3fe13_27","name":"3807","type":"P","href":null,"layout":null,"metadata":null,"text":"On Android Developers Backstage Episode 208: “Micro optimizations”, Tor and Romain chat about micro optimizations and writing custom tools such as Kotlin Explorer that can help detect code inefficiencies. They also discuss the cost of using Companion objects, making Hash maps more performant and many more tips to optimize your app. Listen to it in podcast or youtube format.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":3,"end":66,"href":"https:\u002F\u002Fadbackstage.libsyn.com\u002Fepisode-208-micro-optimizations","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":350,"end":357,"href":"https:\u002F\u002Fadbackstage.libsyn.com\u002Fepisode-208-micro-optimizations","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":361,"end":368,"href":"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=Z9-Z16glXRU","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:68d36497423f057557e803a0d2a42531":{"__typename":"MediaResource","id":"68d36497423f057557e803a0d2a42531","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=%2F%2Fhtml5-player.libsyn.com%2Fembed%2Fepisode%2Fid%2F32205897%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-208-micro-optimizations&image=https%3A%2F%2Fassets.libsyn.com%2Fsecure%2Fitem%2F32205897&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=libsyn","iframeHeight":90,"iframeWidth":600,"title":"Episode 208: Micro optimizations"},"Paragraph:cb74eab3fe13_28":{"__typename":"Paragraph","id":"cb74eab3fe13_28","name":"3283","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:68d36497423f057557e803a0d2a42531"}},"mixtapeMetadata":null},"MediaResource:367047b20ae8b72440b46ed5f37c2bc1":{"__typename":"MediaResource","id":"367047b20ae8b72440b46ed5f37c2bc1","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FZ9-Z16glXRU&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DZ9-Z16glXRU&image=http%3A%2F%2Fi.ytimg.com%2Fvi%2FZ9-Z16glXRU%2Fhqdefault.jpg&key=d04bfffea46d4aeda930ec88cc64b87c&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":""},"Paragraph:cb74eab3fe13_29":{"__typename":"Paragraph","id":"cb74eab3fe13_29","name":"1279","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:367047b20ae8b72440b46ed5f37c2bc1"}},"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_30":{"__typename":"Paragraph","id":"cb74eab3fe13_30","name":"3c16","type":"H3","href":null,"layout":null,"metadata":null,"text":"Videos💡","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_31":{"__typename":"Paragraph","id":"cb74eab3fe13_31","name":"1468","type":"P","href":null,"layout":null,"metadata":null,"text":"How to use nested scrolling in Compose, for a seemingly complex coordination between multiple components on a single scroll.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:761bb1b29876faaa518579c668f42d34":{"__typename":"MediaResource","id":"761bb1b29876faaa518579c668f42d34","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FJfYBCKRjFA0%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DJfYBCKRjFA0&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FJfYBCKRjFA0%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":"Nested scrolling | Jetpack Compose Tips"},"Paragraph:cb74eab3fe13_32":{"__typename":"Paragraph","id":"cb74eab3fe13_32","name":"eb66","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:761bb1b29876faaa518579c668f42d34"}},"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_33":{"__typename":"Paragraph","id":"cb74eab3fe13_33","name":"5673","type":"P","href":null,"layout":null,"metadata":null,"text":"How to use the Pager composable, configuration parameters such as controlling the fling distance, and tying into the PagerState to create animations.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:223284451d04d942ec62d1dcca9a1b61":{"__typename":"MediaResource","id":"223284451d04d942ec62d1dcca9a1b61","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FV2Ke-JJDnrU%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DV2Ke-JJDnrU&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FV2Ke-JJDnrU%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":"Pager | Compose Tips"},"Paragraph:cb74eab3fe13_34":{"__typename":"Paragraph","id":"cb74eab3fe13_34","name":"852b","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:223284451d04d942ec62d1dcca9a1b61"}},"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_35":{"__typename":"Paragraph","id":"cb74eab3fe13_35","name":"8e76","type":"P","href":null,"layout":null,"metadata":null,"text":"Learn about Lookahead layout system — a new powerful feature of Compose. Using this new layouting mechanism, we can create powerful layouts that animate fluidly.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:e00d9227505dd2af49faafe0ba897f61":{"__typename":"MediaResource","id":"e00d9227505dd2af49faafe0ba897f61","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FPR6rz1QUkAM%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DPR6rz1QUkAM&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FPR6rz1QUkAM%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":"Advanced layout animations in Compose (Shared elements)"},"Paragraph:cb74eab3fe13_36":{"__typename":"Paragraph","id":"cb74eab3fe13_36","name":"cc91","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:e00d9227505dd2af49faafe0ba897f61"}},"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_37":{"__typename":"Paragraph","id":"cb74eab3fe13_37","name":"0234","type":"P","href":null,"layout":null,"metadata":null,"text":"Learn how AndroidX Lifecycle libraries (ViewModel, Lifecycle Runtime, and Compose support) were converted to Kotlin multi-platform (KMP), the API challenges and the process.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"MediaResource:0f282e0162d9d02d5d17ebcb13866740":{"__typename":"MediaResource","id":"0f282e0162d9d02d5d17ebcb13866740","iframeSrc":"https:\u002F\u002Fcdn.embedly.com\u002Fwidgets\u002Fmedia.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fk1PIzEIO6jo%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dk1PIzEIO6jo&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fk1PIzEIO6jo%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube","iframeHeight":480,"iframeWidth":854,"title":"Lifecycle path to Multiplatform"},"Paragraph:cb74eab3fe13_38":{"__typename":"Paragraph","id":"cb74eab3fe13_38","name":"cf72","type":"IFRAME","href":null,"layout":"INSET_CENTER","metadata":null,"text":"","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":{"__typename":"Iframe","mediaResource":{"__ref":"MediaResource:0f282e0162d9d02d5d17ebcb13866740"}},"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_39":{"__typename":"Paragraph","id":"cb74eab3fe13_39","name":"afcb","type":"H3","href":null,"layout":null,"metadata":null,"text":"AndroidX Releases 🚀","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":17,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Fversions\u002Fall-channel","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_40":{"__typename":"Paragraph","id":"cb74eab3fe13_40","name":"8853","type":"P","href":null,"layout":null,"metadata":null,"text":"There were a lot of stable releases.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_41":{"__typename":"Paragraph","id":"cb74eab3fe13_41","name":"28a4","type":"P","href":null,"layout":null,"metadata":null,"text":"For Wear apps check out stable Wear ProtoLayout 1.2.0 and Wear Tiles 1.4.0.","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":31,"end":53,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fwear-protolayout#1.2.0","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":58,"end":74,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fwear-tiles#1.4.0","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_42":{"__typename":"Paragraph","id":"cb74eab3fe13_42","name":"da1b","type":"P","href":null,"layout":null,"metadata":null,"text":"For Games apps there are several releases including Games-Activity 3.0.5, Games-Text-Input 3.0.4, Games-Performance-Tuner 2.0.0 and Games-Frame-Pacing 2.1.2","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":52,"end":72,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fgames#games-activity-3.0.5","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":74,"end":96,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fgames#games-text-input-3.0.4","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":98,"end":127,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fgames#games-performance-tuner-2.0.0","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":132,"end":156,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fgames#games-frame-pacing-2.1.2","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_43":{"__typename":"Paragraph","id":"cb74eab3fe13_43","name":"a9d7","type":"P","href":null,"layout":null,"metadata":null,"text":"Several libraries include additional Kotlin Multiplatform targets: Paging Version 3.3.2, Annotation 1.8.2","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":67,"end":87,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fpaging#3.3.2","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":89,"end":105,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fannotation#1.8.2","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_44":{"__typename":"Paragraph","id":"cb74eab3fe13_44","name":"3cd9","type":"P","href":null,"layout":null,"metadata":null,"text":"And a lot of other stable releases dropped: Media 1.4.0, Collection 1.4.3, Transition 1.5.1, Lifecycle 2.8.4, Fragment 1.8.2, Annotation 1.8.2, Activity 1.9.1, WorkManager Version 2.9.1, Compose Compiler 1.5.15","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":44,"end":55,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fmedia3#1.4.0","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":57,"end":73,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fcollection#1.4.3","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":75,"end":91,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Ftransition#1.5.1","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":93,"end":108,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Flifecycle#2.8.4","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":110,"end":124,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Ffragment#1.8.2","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":126,"end":142,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fannotation#1.8.2","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":144,"end":158,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Factivity#1.9.1","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":160,"end":185,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fwork#2.9.1","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"A","start":187,"end":210,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fcompose-compiler#1.5.15","anchorType":"LINK","userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_45":{"__typename":"Paragraph","id":"cb74eab3fe13_45","name":"3045","type":"MIXTAPE_EMBED","href":null,"layout":null,"metadata":null,"text":"Recent Release Notes | Android Developers\nthe Jetpack team started signing Jetpack libraries in June 2023. For more information, see Each version of an AndroidX…developer.android.com","hasDropCap":null,"dropCapImage":null,"markups":[{"__typename":"Markup","type":"A","start":0,"end":182,"href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Fversions\u002Fall-channel","anchorType":"LINK","userId":null,"linkMetadata":null},{"__typename":"Markup","type":"STRONG","start":0,"end":41,"href":null,"anchorType":null,"userId":null,"linkMetadata":null},{"__typename":"Markup","type":"EM","start":42,"end":161,"href":null,"anchorType":null,"userId":null,"linkMetadata":null}],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":{"__typename":"MixtapeMetadata","href":"https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Fversions\u002Fall-channel","mediaResource":{"__typename":"MediaResource","mediumCatalog":null},"thumbnailImageId":"0*FWrpKuugXCL-l4_O"}},"Paragraph:cb74eab3fe13_46":{"__typename":"Paragraph","id":"cb74eab3fe13_46","name":"0c69","type":"H3","href":null,"layout":null,"metadata":null,"text":"Now then… 👋","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_47":{"__typename":"Paragraph","id":"cb74eab3fe13_47","name":"50d0","type":"P","href":null,"layout":null,"metadata":null,"text":"That’s it for this week with Android 15 Beta 4, Samsung’s Galaxy Unpacked event, Google Play’s new Collections feature and security enhancements, inspirational stories from #WeArePlay series and lots of stable AndroidX releases.","hasDropCap":null,"dropCapImage":null,"markups":[],"codeBlockMetadata":null,"iframe":null,"mixtapeMetadata":null},"Paragraph:cb74eab3fe13_48":{"__typename":"Paragraph","id":"cb74eab3fe13_48","name":"e678","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_6ef7598878bc":{"__typename":"CollectionViewerEdge","id":"collectionId:95b274b437c2-viewerId:lo_6ef7598878bc","isEditor":false,"isMuting":false},"ImageMetadata:1*5pMw_nx55x_66tk77kutPQ.png":{"__typename":"ImageMetadata","id":"1*5pMw_nx55x_66tk77kutPQ.png","originalWidth":600,"originalHeight":72},"PostViewerEdge:postId:1dbf4e81b127-viewerId:lo_6ef7598878bc":{"__typename":"PostViewerEdge","shouldIndexPostForExternalSearch":true,"id":"postId:1dbf4e81b127-viewerId:lo_6ef7598878bc"},"Tag:android-15":{"__typename":"Tag","id":"android-15","displayTitle":"Android 15","normalizedTagSlug":"android-15"},"Tag:google-play":{"__typename":"Tag","id":"google-play","displayTitle":"Google Play","normalizedTagSlug":"google-play"},"Tag:featured":{"__typename":"Tag","id":"featured","displayTitle":"Featured","normalizedTagSlug":"featured"},"Tag:now-in-android":{"__typename":"Tag","id":"now-in-android","displayTitle":"Now In Android","normalizedTagSlug":"now-in-android"},"Tag:androidx":{"__typename":"Tag","id":"androidx","displayTitle":"Androidx","normalizedTagSlug":"androidx"},"Post:1dbf4e81b127":{"__typename":"Post","id":"1dbf4e81b127","collection":{"__ref":"Collection:95b274b437c2"},"content({\"postMeteringOptions\":{}})":{"__typename":"PostContent","isLockedPreviewOnly":false,"bodyModel":{"__typename":"RichText","sections":[{"__typename":"Section","name":"9d78","startIndex":0,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null},{"__typename":"Section","name":"9b7f","startIndex":7,"textLayout":null,"imageLayout":null,"backgroundImage":null,"videoLayout":null,"backgroundVideo":null}],"paragraphs":[{"__ref":"Paragraph:cb74eab3fe13_0"},{"__ref":"Paragraph:cb74eab3fe13_1"},{"__ref":"Paragraph:cb74eab3fe13_2"},{"__ref":"Paragraph:cb74eab3fe13_3"},{"__ref":"Paragraph:cb74eab3fe13_4"},{"__ref":"Paragraph:cb74eab3fe13_5"},{"__ref":"Paragraph:cb74eab3fe13_6"},{"__ref":"Paragraph:cb74eab3fe13_7"},{"__ref":"Paragraph:cb74eab3fe13_8"},{"__ref":"Paragraph:cb74eab3fe13_9"},{"__ref":"Paragraph:cb74eab3fe13_10"},{"__ref":"Paragraph:cb74eab3fe13_11"},{"__ref":"Paragraph:cb74eab3fe13_12"},{"__ref":"Paragraph:cb74eab3fe13_13"},{"__ref":"Paragraph:cb74eab3fe13_14"},{"__ref":"Paragraph:cb74eab3fe13_15"},{"__ref":"Paragraph:cb74eab3fe13_16"},{"__ref":"Paragraph:cb74eab3fe13_17"},{"__ref":"Paragraph:cb74eab3fe13_18"},{"__ref":"Paragraph:cb74eab3fe13_19"},{"__ref":"Paragraph:cb74eab3fe13_20"},{"__ref":"Paragraph:cb74eab3fe13_21"},{"__ref":"Paragraph:cb74eab3fe13_22"},{"__ref":"Paragraph:cb74eab3fe13_23"},{"__ref":"Paragraph:cb74eab3fe13_24"},{"__ref":"Paragraph:cb74eab3fe13_25"},{"__ref":"Paragraph:cb74eab3fe13_26"},{"__ref":"Paragraph:cb74eab3fe13_27"},{"__ref":"Paragraph:cb74eab3fe13_28"},{"__ref":"Paragraph:cb74eab3fe13_29"},{"__ref":"Paragraph:cb74eab3fe13_30"},{"__ref":"Paragraph:cb74eab3fe13_31"},{"__ref":"Paragraph:cb74eab3fe13_32"},{"__ref":"Paragraph:cb74eab3fe13_33"},{"__ref":"Paragraph:cb74eab3fe13_34"},{"__ref":"Paragraph:cb74eab3fe13_35"},{"__ref":"Paragraph:cb74eab3fe13_36"},{"__ref":"Paragraph:cb74eab3fe13_37"},{"__ref":"Paragraph:cb74eab3fe13_38"},{"__ref":"Paragraph:cb74eab3fe13_39"},{"__ref":"Paragraph:cb74eab3fe13_40"},{"__ref":"Paragraph:cb74eab3fe13_41"},{"__ref":"Paragraph:cb74eab3fe13_42"},{"__ref":"Paragraph:cb74eab3fe13_43"},{"__ref":"Paragraph:cb74eab3fe13_44"},{"__ref":"Paragraph:cb74eab3fe13_45"},{"__ref":"Paragraph:cb74eab3fe13_46"},{"__ref":"Paragraph:cb74eab3fe13_47"},{"__ref":"Paragraph:cb74eab3fe13_48"}]},"validatedShareKey":"","shareKeyCreator":null},"creator":{"__ref":"User:b85a51f012d7"},"inResponseToEntityType":null,"isLocked":false,"isMarkedPaywallOnly":false,"lockedSource":"LOCKED_POST_SOURCE_NONE","mediumUrl":"https:\u002F\u002Fmedium.com\u002Fandroiddevelopers\u002Fnow-in-android-109-1dbf4e81b127","primaryTopic":null,"topics":[{"__typename":"Topic","slug":"android-development"}],"isPublished":true,"latestPublishedVersion":"cb74eab3fe13","visibility":"PUBLIC","postResponses":{"__typename":"PostResponses","count":0},"clapCount":142,"allowResponses":true,"isLimitedState":false,"title":"Now in Android #109","isSeries":false,"sequence":null,"uniqueSlug":"now-in-android-109-1dbf4e81b127","socialTitle":"","socialDek":"","canonicalUrl":"","metaDescription":"","latestPublishedAt":1724793355089,"readingTime":4.428616352201258,"previewContent":{"__typename":"PreviewContent","subtitle":"The Fourth Beta of Android 15, Samsung’s Galaxy Unpacked event, Google Play’s new Collections feature and more."},"previewImage":{"__ref":"ImageMetadata:1*Sy3ea40KCd6LSmU6QFUgDA.png"},"isShortform":false,"seoTitle":"","firstPublishedAt":1724793355089,"updatedAt":1731862590675,"shortformType":"SHORTFORM_TYPE_LINK","seoDescription":"","viewerEdge":{"__ref":"PostViewerEdge:postId:1dbf4e81b127-viewerId:lo_6ef7598878bc"},"isSuspended":false,"license":"ALL_RIGHTS_RESERVED","tags":[{"__ref":"Tag:android-15"},{"__ref":"Tag:google-play"},{"__ref":"Tag:featured"},{"__ref":"Tag:now-in-android"},{"__ref":"Tag:androidx"}],"isNewsletter":false,"statusForCollection":"APPROVED","pendingCollection":null,"detectedLanguage":"en","wordCount":1072,"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.b2314f6d.js"></script><script src="https://cdn-client.medium.com/lite/static/js/9865.1496d74a.js"></script><script src="https://cdn-client.medium.com/lite/static/js/main.24534aeb.js"></script><script src="https://cdn-client.medium.com/lite/static/js/instrumentation.d9108df7.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/reporting.ff22a7a5.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9120.5df29668.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5049.d1ead72d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4810.6318add7.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6618.db187378.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2707.b0942613.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9977.5b3eb23a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8599.1ab63137.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5250.9f9e01d2.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6349.b071a958.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2648.26563adf.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8393.826a25fb.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7079.67349d50.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3735.afb7e926.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5642.a2d9f6a1.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6546.cd03f950.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6834.08de95de.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7346.72622eb9.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2420.2a5e2d95.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/839.ca7937c2.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7975.d195c6f1.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2106.21ff89d3.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7394.3d049572.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2961.00a48598.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8204.c4082863.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4391.59acaed3.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostPage.MainContent.c8a11795.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8414.6565ad5f.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3974.8d3e0217.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2527.a0afad8a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/PostResponsesContent.36c2ecf4.chunk.js"></script><script>window.main();</script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8e72fadafdfa3e62',t:'MTczMjM4NDAwMS4wMDAwMDA='};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>