<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>Android Weekly</title>
    <description>Android Weekly is a free newsletter that helps you to stay cutting-edge with your Android Development</description>
    <link>https://androidweekly.net/</link>
      <item>
    <title>Android Weekly Issue #733</title>
    <link>https://androidweekly.net/issues/issue-733/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.runway.team/whitepapers/2026-decision-guide-modern-mrm-for-em?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=june-28-26" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a4036/d53c93bc5a900149e9/square_square_runway.jpeg">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.runway.team/whitepapers/2026-decision-guide-modern-mrm-for-em?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=june-28-26" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Does your mobile release process block the roadmap? 
</a></div><div>83% of mobile EMs say fixing the release process would accelerate their roadmap. The 2026 Decision Guide for EMs breaks down the five calls that turn release management from a bottleneck into a competitive edge, and where to focus first. Free read.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://composables.com/blog/introducing-composables-ui" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Introducing Composables UI
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A ready-to-use, fully-accessible component library for Compose Multiplatform with customisable components and built-in dark mode.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.revenuecat.com/blog/engineering/play-billing-choice/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Understanding Google Play's Billing Choice
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>RevenueCat's engineering blog walks through all four Billing Choice integration scenarios, the external transaction token, and UX compliance rules.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://kt.academy/article/LLVM" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
LLVM: The tool that shaped modern programming and no one talks about
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Marcin Moskala explains what LLVM is and how it enables modern languages like Kotlin Native and Rust.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://ak1.io/blog/2026/06/23/drawbox-goes-multiplatform/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
DrawBox Goes Multiplatform
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Akshay Nandwana walks through porting the DrawBox drawing library from Android-only to Compose Multiplatform, including a full MVI rewrite.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/p/c134ffc9bfc2" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Design a screen, get a Clean Architecture feature
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Ali Sadeghi presents KMPilot, a spec-driven workflow that enforces Clean Architecture across AI-generated Kotlin Multiplatform features.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://dev.to/juan_hurtado/how-we-made-ktor-json-parsing-66-faster-with-50-less-memory-on-kmp-2pca" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How We Made Ktor JSON Parsing 66% Faster with 50% Less Memory on KMP
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Juan Hurtado introduces Ghost Serializer, a byte-first KMP JSON library delivering 66% faster Ktor performance with 50% less memory.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/p/f6a983db0e45" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Building a 3D Game in Compose Multiplatform
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Gabor Berenyi shows how to run 3D chess across Android, iOS, desktop, and web in pure Kotlin using Compose Multiplatform and Filament.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://dev.to/d_v_/shipping-gemini-nano-on-device-in-a-real-app-the-constraints-nobody-warns-you-about-2pdi" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Shipping Gemini Nano on-device in a real app: the constraints nobody warns you about
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Dennis Vorobyov walks through three hard production constraints of running Gemini Nano on-device in an Android app.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.zacsweers.dev/introducing-kempt/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Introducing Kempt
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Zac Sweers introduces Kempt, a CLI tool that unifies Kotlin, Java, and Rust formatting with git hook integration.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a3f6a/5b3c93bc5a90011bef/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Jobs</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://jobs.chordify.net/android-developer-labs/en" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Developer (Labs), Utrecht / Groningen
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Join Chordify as an Android Developer in our Labs team and build innovative music-learning features used by musicians worldwide. Work with Kotlin, Jetpack Compose, audio tech, and product experiments while helping modernize our Android app.

</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://composables.com/ui" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a406c/923c93bc5a90015272/square_Bildschirmfoto_2026-06-28_um_13.49.11.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://composables.com/ui" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Composables UI
</a></div><div>A modern, fully-accessible component library for Compose Multiplatform with copy-paste components and dark mode support.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/samirmoukhliss-dev/cookieprime_android_sdk" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
CookiePrime Android SDK
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>An Android SDK that blocks third-party tracking SDKs at runtime initialization based on user consent preferences.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/akshay2211/DrawBox" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
DrawBox
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Kotlin Multiplatform drawing SDK for Compose Multiplatform supporting freehand, shapes, annotations, and SVG/JSON/bitmap export.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/iamjosephmj/Poseidon" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Poseidon
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A library that enforces manifest-declared network allow-lists across all SDK layers, blocking or auditing third-party outbound connections without a VPN or root.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/zacsweers/kempt" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
kempt
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A pre-commit-friendly source formatting pipeline supporting Kotlin, Java, and Rust with license header insertion.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/amper/2026/06/kotlin-toolchain-0-11/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin Toolchain 0.11: The Next Step for Amper
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains rebrands Amper as Kotlin Toolchain, now in Alpha, adding JVM library publishing and a global CLI installer.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/06/play-expanded-billing.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Google Play Expands Billing Flexibility with Lower, Separated Fees
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google Play announces alternative billing options and a new separated service fee structure launching June 30 in the US, EEA, and UK.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.youtube.com/watch?v=DlINwm22V8A" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a406c/933c93bc5a90015275/square_Bildschirmfoto_2026-06-28_um_13.49.49.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=DlINwm22V8A" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Emu with Iñaki Villar
</a></div><div>Anton Malinski demos Emu, a standalone Android device management tool covering emulator control, debugging, network inspection, and AI-driven testing.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=hcvvo6Sag0Q" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to understand Play's expanded billing options and lower fees
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers channel explains Google Play's new billing flexibility options and updated lower fee programs for app developers.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=ShwsRM4THAY" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Is THIS How Android Apps Communicate In Future? - Exploring the NEW AppFunctions
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner explores Android's new AppFunctions API for cross-app communication and natural language command integration.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=A8zq0xfXlvY" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Tap to verify: No SMS, no Friction with Firebase Phone Number Verification
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Firebase shows how to replace SMS OTPs with Phone Number Verification for frictionless, secure Kotlin Android onboarding.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 28 Jun 2026 11:50:56 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-733</guid>
  </item>
  <item>
    <title>Android Weekly Issue #732</title>
    <link>https://androidweekly.net/issues/issue-732/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.runway.team/whitepapers/2026-decision-guide-modern-mrm-for-em?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=june-21-26" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a37ec/e53c93bc1d71008874/square_square_runway.jpeg">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.runway.team/whitepapers/2026-decision-guide-modern-mrm-for-em?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=june-21-26" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Who ships the release if your lead quits? 
</a></div><div>Only 7% of mobile EMs are confident anyone on their team could run a release end to end. The rest are one resignation away from a stall. Our 2026 Decision Guide shows where release knowledge actually sits and how the fastest teams move it out of a few people's heads. Free read.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.marcogomiero.com/posts/2026/rss-parser-ten-years/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
RSS-Parser: Ten Years
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Marco Gomiero reflects on ten years of his RSS-Parser library, tracing its evolution from Java to Kotlin Multiplatform.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.maiatoday.net/p/antigravity-tagspotter-kotlinmultiplatform-evolve/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Antigravity TagSpotter - KotlinMultiPlatform evolve
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Maia walks through migrating her Android TagSpotter app to KMP across iOS, Desktop, and Android in a weekend using Antigravity and parallel subagents.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://bitdrift.io/signup?utm_campaign=sp&utm_medium=newsletter&utm_source=android-weekly" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a37ed/463c93bc1d71008882/square_Bildschirmfoto_2026-06-21_um_15.55.36.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://bitdrift.io/signup?utm_campaign=sp&utm_medium=newsletter&utm_source=android-weekly" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Mobile observability shouldn't suck 
</a></div><div>Mobile reflects reality, and it’s messy: Intermittent connections, mid-onboarding drop-offs, force quits, and more. bitdrift captures 100% of real-time data, unsampled across 1B+ installs, so you and your agents can query reality. Try bitdrift: mobile observability for the real world.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@mrdarkavenger/i-was-tired-of-testing-agsl-shaders-through-a-sample-app-so-i-built-an-android-studio-plugin-b069057c9597" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
I Was Tired of Testing AGSL Shaders Through a Sample App, So I Built an Android Studio Plugin
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Ivan Mikhailuts explains how he built an Android Studio plugin offering live AGSL shader preview, uniform controls, and full editor support.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/gitconnected/preview-driven-screenshot-testing-for-locales-keys-and-font-scale-21a73fd95e03" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Preview-Driven Screenshot Testing for Locales, Keys, and Font Scale
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>James Cullimore shows how to use Compose Previews as the source of truth for screenshot testing across locales, font scales, and string-key display mode.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.howcomposeworks.com/en" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How Compose Works
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum explains Jetpack Compose internals — compiler transformations, the SlotTable, snapshot state, and the single-pass layout pipeline — traced through AOSP source.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.rea-group.com/about-us/news-and-insights/blog/android-journey-tests-with-gemini-ci-setup-11-week-review/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Journey Tests with Gemini: CI Setup & 11-Week Review
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Swapnil Gupta shares an honest 11-week review of Android Journeys powered by Gemini, covering CI setup challenges, test writing lessons, and production results.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://kt.academy/article/why_phenix" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Why phenix is the logo of kt.academy?
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Marcin Moskała explains why truly learning Kotlin requires letting go of Java preconceptions rather than treating it as syntactic sugar.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@kmpbits/warm-tyres-image-loading-and-caching-in-compose-multiplatform-with-coil-3-kmp-bits-9c7463c2659a" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Warm Tyres: Image Loading and Caching in Compose Multiplatform with Coil 3
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>KMP Bits shows how Coil 3 simplifies cross-platform image loading and caching in Compose Multiplatform for Android and iOS.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://hotswan.dev/blog/compose-hotswan-v2-beta" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Compose HotSwan v2 Beta
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum introduces Compose HotSwan v2, which enables full-screen structural hot reloads in native Jetpack Compose without app restarts.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a37ec/bf3c93bc1d71008868/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Jobs</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://jobs.chordify.net/android-developer-monetization/en" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Developer (Monetization) - Utrecht / Groningen
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Join Chordify as an Android Developer in our Monetization team and build Premium, payment, subscription, and conversion features for musicians worldwide. Work with Kotlin, data, A/B tests, and product impact while improving our Android app.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/kabirnayeem99/kVinInfo" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
kVinInfo
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Kotlin Multiplatform library for VIN decoding, validation, and NHTSA API integration, targeting Android, iOS, and JVM.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/iamjosephmj/hydra" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
hydra
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Gradle plugin that bakes runtime self-protection into your APK, detecting root, hooks, clones, and tampering entirely on-device.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/06/what-is-new-android-xr.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
What's new in Android XR
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces Android XR Developer Preview 4 with new tooling, Unreal Engine and Godot support, and glasses-focused APIs.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/06/Android-17.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android 17
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google releases Android 17, introducing adaptive-first large-screen requirements, on-device AI via AppFunctions, and next-generation privacy and performance.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/06/android-developer-verification.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Developer Verification
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces Android developer verification launches September 2026 in four countries, with new bulk-registration APIs and a 2027 global rollout.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/06/android-xr-geospatial-api-gemini.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android XR Geospatial API and Gemini Tour Guide Demo
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google previews the Geospatial API in ARCore for Jetpack XR, demonstrating a Gemini-powered immersive walking tour app.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://commonsware.com/blog/2026/06/20/is-maven-central-too-central.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Is Maven Central Too Central?
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Mark Murphy considers whether Maven Central's dominance over artifact distribution creates unhealthy ecosystem centralization.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://jakewharton.com/the-lysine-contingency/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Lysine Contingency
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jake Wharton announces Retrofit, OkHttp, Okio, and SQLDelight are moving to the Commonhaus Foundation under the new lysine.dev organisation.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.youtube.com/watch?v=cXg4ijiK-Ko" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a36e8/333c93bc1d71005cee/square_Bildschirmfoto_2026-06-21_um_15.58.12.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=cXg4ijiK-Ko" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
We've Been Looking Forward to This One...
</a></div><div>Dave Leeds covers Kotlin 2.4's new Collection Literals, letting you declare collections with bracket syntax.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=otzSN5pSNZk" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The latest in Android XR
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers rounds up the latest Android XR development updates, tools, and resources for building immersive apps.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=saRE0t11KJY" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to build apps for Android XR without hardware
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers shows how to build and test Android XR apps without any physical hardware.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=4Qey8yExPNg" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Kotlin Effect in Real Life
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Kotlin by JetBrains marks 15 years of Kotlin by showing how its principles of conciseness and efficiency play out in everyday situations.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=nmbBWSX8l54" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Build for Android XR with your preferred 3D engine
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers covers building Android XR apps with Unity, Unreal Engine, and Godot using the new XR Engine Hub and Interaction Framework.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=rcoONGJiGx0" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Why AI Will Likely Make Your Codebase BETTER
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner discusses why AI tooling is likely to improve rather than degrade overall codebase quality.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=vT5zQ0qpvQY" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to Fix ANRs and Slow Screens in Android. Live with the Kotzilla MCP Server.
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Kotzilla demonstrates diagnosing and fixing Android ANRs and slow screens using their MCP server with session data.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=WDoxljZc5QM" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
What's new in Android XR development
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers summarizes the latest updates and tools for building Android XR apps in 2026.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=70k9MHPvDgw" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Building androidskills.dev - Episode 2
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Code with the Italians live-streams building an Android app and learning Jetpack Compose from scratch.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=8rbub6oDBtg" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android 17 AOSP is here
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers covers the five key AOSP updates landing with Android 17, from adaptive layouts to granular privacy pickers.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 21 Jun 2026 13:58:37 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-732</guid>
  </item>
  <item>
    <title>Android Weekly Issue #731</title>
    <link>https://androidweekly.net/issues/issue-731/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a2e47/d03c93bc2634005b54/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/06/datadog-profilingmanager-performance-insights.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How Datadog Uses Android's ProfilingManager for Production Performance Insights
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Learn how Datadog integrated Android 15's ProfilingManager API to surface code-level performance insights from production apps at scale.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@kmpbits/through-the-lens-barcode-scanning-in-compose-multiplatform-kmp-bits-3d04a107fa97" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Through the Lens: Barcode Scanning in Compose Multiplatform
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>KMP Bits demonstrates how to implement shared barcode scanning in Compose Multiplatform using expect/actual at the Composable level with CameraX/MLKit and AVFoundation.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://proandroiddev.com/the-task-shapes-the-strategy-kotlin-select-expressions-in-practice-b98bc53b5f15" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Task Shapes the Strategy: Kotlin Select Expressions in Practice
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Daniil Chernyaev explores how Kotlin select expressions adapt to changing async data-handling requirements across three evolving task formulations.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@navczydev/ditch-read-contacts-forever-android-17s-secure-contact-picker-24c5c69b3b51" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Ditch READ_CONTACTS Forever: Android 17's Secure Contact Picker
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Nav Singh walks through implementing Android 17's new Contact Picker, a privacy-first alternative to the READ_CONTACTS permission.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.insert-koin.io/how-to-use-koin-compiler-in-a-multimodule-project-6bd8e57d5e4b" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to use Koin Compiler in a Multimodule Project?
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Gabriel Bronzatti Moro walks through migrating a multimodule Compose Multiplatform project from KSP-based Koin Annotations to the new Koin Compiler plugin.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://doveletter.dev/articles/compose-stability-analyzer-doctor" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Compose Stability Analyzer 0.10.0: Stability Doctor and Trace-All Mode
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum explores the new Stability Doctor and trace-all mode in Compose Stability Analyzer 0.10.0, offering ranked fix prescriptions backed by static and runtime data.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.revenuecat.com/blog/engineering/android-codegen/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Introducing the RevenueCat Codegen Gradle Plugin
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum walks through a new Gradle plugin that generates type-safe Kotlin accessors for RevenueCat dashboard entitlements and offerings at build time.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@merrickcr/my-ai-said-the-feature-was-done-it-didnt-exist-98ea1e385dd4" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
My AI Said the Feature Was Done. It Didn't Exist.
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Chris Merrick explains how repeated AI completion failures on Android apps led him to build a multi-agent verification framework with role separation and file-based state.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://touchlab.co/the-future-of-kmps-ios-interop" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Future of KMP's iOS Interop
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Daniel Bertoldi compares KMP's two iOS interop approaches — SKIE and Swift Export — by examining their compiled Swift output across real-world scenarios.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://github.com/skydoves/compose-nav-graph" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a2dbc/8a3c93bc26340043c6/square_Bildschirmfoto_2026-06-14_um_08.19.17.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/skydoves/compose-nav-graph" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Compose Navigation Graph
</a></div><div>A Gradle plugin and IDE extension that visualizes your entire Compose app's navigation flow as an interactive, thumbnail-rich map.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/dev-vikas-soni/leak-lens" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
LeakLens
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>An Android Studio plugin that integrates LeakCanary's heap analysis engine with AI-powered fix suggestions directly inside the IDE.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://commonsware.com/blog/2026/06/08/cw-json-0-4-0.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
cw-json 0.4.0
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A KMP JSON Pointer library adds unofficial-but-popular dot notation support alongside standard JSON Pointer and URI fragment identifier syntaxes.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/kabirnayeem99/Ktor2Curl" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Ktor2Curl
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Ktor plugin that converts HTTP client requests into runnable curl commands, with header masking and KMP support.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/06/android-developer-productivity-updates.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Developer Productivity Updates
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google summarizes top Android I/O productivity announcements, including Android CLI 1.0 stable and new Android skills.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.youtube.com/watch?v=L-sr_I8NXDI" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a2dbc/933c93bc26340043ed/square_Bildschirmfoto_2026-06-14_um_08.19.58.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=L-sr_I8NXDI" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Do not Start from Scratch — KMP Template
</a></div><div>Stevdza-San walks through a KMP starter template to jumpstart multiplatform projects without boilerplate setup.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=Gkmhg9bQziE" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How AI Changed the Way I Build Android Apps
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developer Tips shares a 17-minute deep dive on how AI tools have changed the Android app-building workflow.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=7fQhKxQGy5A" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
What's new for Android developer productivity at I/O
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers summarizes the key Android developer productivity announcements from Google I/O.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=qZLQVlLgTDU" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
What are Android skills and how to use them with AI tools?
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers explains what Android skills are and how to expose them to AI assistants and tools.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=jfUebS9gzio" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Navigating Google Play Policies & Publishing Best Practices
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers hosts a 66-minute Office Hours session covering Google Play policy review, enforcement, and publishing best practices.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=Kj_HHLKQD80" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Android CLI Silently Shipped a CRAZY Update
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner covers the latest Android CLI update, exploring new commands that streamline device management and project setup.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=ULrA2eNakVU" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to make your Android UI adaptive
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers explains how to build adaptive Android UIs that respond to screen size, orientation, and input changes.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=eoeJ7kwwXG0" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to connect Gemini to Google Maps using Firebase AI Logic
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Firebase shows how to connect Gemini to Google Maps in an Android app using Firebase AI Logic.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=4ST9OzN0elg" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to optimize prompts for faster on-device AI
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers shows how to choose and tune prompts for faster AI inference on Android devices.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=_LYYySmgyWk" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Learn more about the new Styles API and its performance benefits
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers introduces the new Styles API and explains its Compose performance benefits.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=vnWF8Hqs55U" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Top 3 Android developer productivity updates
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers covers the top three productivity announcements from Google I/O, including Android CLI stable release and new AI tools.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=lo8uh-HU1HI" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Migrating 25-year-old legacy code to Kotlin
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Kotlin by JetBrains interviews a Verifone architect on migrating legacy financial software to Kotlin safely.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=fzzja0uYeeI" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to make code review easier with AI
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers shows how a new AI-powered tool summarizes, organizes, and proposes improvements during code review.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 14 Jun 2026 06:20:55 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-731</guid>
  </item>
  <item>
    <title>Android Weekly Issue #730</title>
    <link>https://androidweekly.net/issues/issue-730/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.runway.team/whitepapers/2026-decision-guide-modern-mrm-for-em?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=june-07-26" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a2587/593c93bc3f890030ef/square_square_runway.jpeg">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.runway.team/whitepapers/2026-decision-guide-modern-mrm-for-em?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=june-07-26" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Why do mobile releases land on the EM?
</a></div><div>"What's the status of the release?" takes 30 seconds to ask. But EMs spend 8 minutes checking 4 different places to answer it, 12x a week. 94% lose 3+ hours a cycle this way. 83% say better visibility would speed up their roadmap. We asked 300 EMs what works. Read our new report, for free.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@narendraanjana09/adaptivenavbar-a-compose-multiplatform-library-for-platform-native-navigation-c7ecef00865f" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
AdaptiveNavBar: A Compose Multiplatform Library for Platform-Native Navigation
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Compose Multiplatform library that renders a platform-native navigation bar — Material 3 on Android, glassy floating bar on iOS — from a single shared API.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/booking-com-development/kotlin-multiplatform-in-production-two-real-world-use-cases-from-booking-com-46ffe13a773d" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin Multiplatform in Production: Two Real-World Use Cases
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Diego Gómez Olvera explores how Booking.com used KMP to unify a shared experimentation library and host their design system in a browser.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@andrew.malitchuk/foldable-hinge-as-a-design-element-not-just-a-layout-trigger-47d3ac3dcf29" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Foldable Hinge as a Design Element, Not Just a Layout Trigger
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Andrew Malitchuk shows how to use the foldable hinge angle as a continuous animation input rather than a binary layout switch.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://kt.academy/article/future_of_mobile" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The future of mobile development
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Marcin Moskała argues Jetpack Compose has revitalized mobile development and may eventually challenge web frameworks.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://urjalabs.in/blog/nativelm-p2p-sync/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
AirDrop for your LLM: building cloudless peer-to-peer sync without Google Play Services
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Sagar Gupta walks through building local device-to-device sync for a KMP Android app using mDNS and TCP sockets, avoiding Google Play Services entirely.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://navczydev.medium.com/kotlin-2-4-brings-swift-style-collection-syntax-0ab7097aa166" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin 2.4 Brings Swift-Style Collection Syntax
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Nav Singh explores Kotlin 2.4's experimental collection literals, replacing listOf() with concise bracket syntax.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@barbossa.fama.dev/ai-is-changing-android-architecture-more-than-most-developers-realize-605881ab3f40" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
AI Is Changing Android Architecture More Than Most Developers Realize
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Farhad Ranjbar explores how on-device AI is pushing Android toward hybrid execution environments requiring orchestration, fallback strategies, and lifecycle-aware inference.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/proandroiddev/resolving-savedstatehandle-crashes-with-hilt-assisted-injection-in-jetpack-navigation-3-63ebd50b88af" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Why SavedStateHandle Crashes in Jetpack Navigation 3
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Ahmed Tikiwa explains why SavedStateHandle deserialization fails in Navigation 3 and how Hilt Assisted Injection resolves it.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@kmpbits/homologated-publishing-your-kotlin-multiplatform-library-to-maven-central-kmp-bits-4930d63e0de1" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Homologated: Publishing Your Kotlin Multiplatform Library to Maven Central
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>KMP Bits walks through the full setup for publishing a Kotlin Multiplatform library to Maven Central, covering signing, POM requirements, and CI automation.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://typealias.com/articles/prevent-race-conditions-in-coroutines/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to Prevent Race Conditions in Coroutines
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Dave Leeds explores several Kotlin tools — atomics, StateFlow, Mutex, and confinement — for safely sharing mutable state across coroutines.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://funkymuse.github.io/posts/car-sample-with-hilt/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Hilt in Android Auto: From Manual Factories to a Cleaner Screen Provider
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>FunkyMuse explores how to wire Hilt dependency injection into Android Auto Car App screens using multi-map bindings and a ScreenProvider pattern.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a2587/6b3c93bc3f890030f7/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/RevenueCat/play-billing-skills" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
play-billing-skills
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A collection of 45 agent-ready skill recipes for integrating Google Play Billing and the RevenueCat Android SDK.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/andrew-malitchuk/axiom-sdk" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
axiom-sdk
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>An Android library for foldable device hinge angle sensing using Kotlin Flow and Compose primitives.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/AndroidPoet/kmpxmpp" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
kmpxmpp
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Kotlin Multiplatform XMPP SDK for Android, iOS, and JVM with modular RFC/XEP support.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.insert-koin.io/koin-compiler-1-0-dsl-and-annotations-koin-now-compile-safe-06905a2b04ad" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Koin Compiler 1.0: DSL and Annotations, Now Compile-Safe
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Arnaud Giuliani announces Koin Compiler 1.0, bringing compile-safe dependency injection with both DSL and annotation support.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/06/building-premium-android-experiences-google-io-26.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Building Premium Android Experiences at Google I/O '26
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google recaps Google I/O '26 highlights for Android developers, covering R8 Configuration Analyzer, unified Jetpack Glance widgets, and media pipeline updates.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/06/prioritizing-memory-efficiency-steps-for-android-17.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Prioritizing Memory Efficiency: Steps for Android 17
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google outlines Android 17's new app memory limits and recommends optimization strategies to avoid forced terminations.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/06/kotlin-2-4-0-released/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin 2.4.0 Released
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains releases Kotlin 2.4.0 with stable context parameters, UUID API, Java 26 support, and Gradle 9.5 compatibility.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://kotlinlang.org/docs/whatsnew24.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
What's New in Kotlin 2.4.0
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains releases Kotlin 2.4.0 with stable context parameters, explicit backing fields, UUID API, and Gradle 9.5 compatibility.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.youtube.com/watch?v=u3bzgvHtgKA" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a24a6/733c93bc3f890006ab/square_Bildschirmfoto_2026-06-07_um_17.00.42.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=u3bzgvHtgKA" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Learn Kotlin Hot Flows in Just 15 Minutes
</a></div><div>Dave Leeds covers the two kinds of hot flows in Kotlin's Flow API, SharedFlow and StateFlow.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=efT95__W_oU" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
What Nobody Told Us About KMP on iOS | KotlinConfersations'26
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A KotlinConf'26 conversation uncovering the hidden challenges and lessons learned from shipping KMP code on iOS.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=s6YD8HOBf1U" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
We are building androidskills.dev with Claude Design
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Code with the Italians live-streams building an Android learning platform using Claude Design and Claude Code.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://youtu.be/kF-ELWJk9uM" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
When MediaProjection Isn't Enough
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>István Juhos from Spoke presents Android screen capture alternatives for cases when MediaProjection doesn't meet your needs.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 07 Jun 2026 15:01:20 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-730</guid>
  </item>
  <item>
    <title>Android Weekly Issue #729</title>
    <link>https://androidweekly.net/issues/issue-729/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a1b4d/643c93bc7e14016857/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers! 
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://gradle.com/blog/duckduckgo-build-cache-optimization/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How DuckDuckGo Optimized Their Android Build with Gradle Build Cache
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Gradle and DuckDuckGo walk through how remote build caching cut their Android CI build times significantly.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@nimit.raja/automated-ai-log-reviewer-for-android-apps-source-on-google-cloud-vertex-ai-with-gemini-81e6356ce875" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Automated AI Log Reviewer for Android Apps on Google Cloud Vertex AI with Gemini
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Nimit Raja shows how to use Gemini and GitHub Actions to automatically analyze Android build failures and post solutions directly on pull requests.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@anandgaur2207/deploying-custom-ai-models-across-android-ios-cross-platform-apps-with-melange-a30d0bc5a9d5" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Deploying Custom AI Models Across Android, iOS & Cross-Platform Apps with Melange
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Anand Gaur walks through deploying custom AI models on Android and iOS using Melange, a platform that automates NPU optimization across devices.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidengineers.substack.com/p/announcing-adk-for-kotlin-and-adk" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Announcing ADK for Kotlin and ADK for Android
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Akshay Nandwana explains Google's new ADK for Kotlin and ADK for Android, enabling on-device and cloud AI agent orchestration.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/proandroiddev/migrating-to-agp-9-2-1-kotlin-build-errors-i-hit-and-how-i-fixed-them-1565bb36b96f" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Migrating to AGP 9.2.1 — Kotlin Build Errors I Hit and How I Fixed Them
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Nav Singh walks through Kotlin build errors encountered when upgrading an Android project to AGP 9.2.1 and how to fix each.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://kt.academy/article/kotlin_in_3_minutes" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin in 3 minutes
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Marcin Moskała gives a rapid overview of Kotlin's key features for developers new to the language.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@santimattius/compose-performance-2026-stability-as-the-key-lever-against-jank-dc9e5b946e64" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Compose Performance 2026: Stability as the Key Lever Against Jank
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Santiago Mattiauda explains how type instability causes unnecessary recompositions and outlines a systematic approach to eliminating jank in Compose UIs.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@JeanTuffier/reverse-engineering-the-bluetooth-protocol-on-android-680275f129e0" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Reverse Engineering the Bluetooth Protocol on Android
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jean Tuffier walks through diagnosing a Bluetooth connectivity failure caused by MAC address randomization changes in Android 12.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@kmpbits/the-pit-crew-advanced-ktor-client-configuration-for-kmp-kmp-bits-4b69fdab0cd9" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Pit Crew: Advanced Ktor Client Configuration for KMP
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>KMP Bits walks through advanced Ktor HttpClient configuration covering authentication, logging, and retry logic for KMP projects.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/google-developer-experts/flutter-at-google-i-o-2026-a02cc82097ae" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Flutter at Google I/O 2026
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Abhishek Doshi recaps everything Flutter-related announced at Google I/O 2026.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://johnoreilly.dev/posts/confetti-koog-rag/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Adding Semantic Search to a Compose Multiplatform App with Koog RAG
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>John O'Reilly walks through adding semantic session search to a Compose Multiplatform conference app using Koog embeddings and RAG.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://thoughtbot.com/blog/biometrics-authentication-for-your-mobile-app" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Biometrics authentication for your mobile app
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Rakesh Arunachalam compares three React Native biometric authentication approaches, from simple prompt to hardware-backed cryptographic key pairs.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://eevis.codes/blog/2026-05-29/autofilling-in-the-blanks/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Autofilling in the Blanks
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Eevis explores how to support Android autofill in Jetpack Compose using the new semantics-based API.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.linkedin.com/pulse/koin-di-170-viewmodel-codebase-what-scales-doesnt-seiji-fukuoka-0hkqf/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Koin DI in a 170-ViewModel Codebase: What Scales and What Doesn't
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Seiji Fukuoka shares hard-won lessons from running Koin with 740+ declarations in production, covering module structure, runtime risks, and the new compiler plugin.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://github.com/callstackincubator/agent-device" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a1b67/d43c93bc7e14016f21/square_Bildschirmfoto_2026-05-31_um_13.51.40.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/callstackincubator/agent-device" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
agent-device
</a></div><div>A device automation CLI that lets AI agents inspect, interact with, and capture evidence from real Android, iOS, and React Native apps.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/ArisGuimera/MobiAI-Core" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
MobiAI-Core
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>An open-source CLI ecosystem that adds AI skills, semantic code graph, and project memory to Android, KMP, Flutter, and React Native workflows.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/ardakazanci/JetpackCompose-New-Style-API" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
JetpackCompose-New-Style-API
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A focused sample app demonstrating Jetpack Compose Foundation Style API with reusable, theme-aware component styles.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/MarcinMoskala/kotlin-coroutines-recipes/blob/master/src/commonMain/kotlin/onEachBatch.kt" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
kotlin-coroutines-recipes/onEachBatch.kt
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Kotlin Flow extension that buffers stream elements into batches and invokes an action when each batch fills.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="http://android-developers.googleblog.com/2026/05/android-ai-intelligence-system.html" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a1b67/c83c93bc7e14016ee5/square_Bildschirmfoto_2026-05-31_um_13.53.42.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/android-ai-intelligence-system.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android AI Intelligence System
</a></div><div>Google recaps Android's shift to an intelligence system, covering AppFunctions, Gemini Nano 4, hybrid inference, and ADK for Android.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/ai/2026/05/koog-1-0-is-out-stable-core-better-interop-and-multiplatform-observability/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Koog 1.0 Is Out: Stable Core, Better Interop, and Multiplatform Observability
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains releases Koog 1.0, their Kotlin AI agent framework, with stable APIs, Android on-device AI, and OpenTelemetry support.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.youtube.com/watch?v=vTNEs3EUSJo" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a1b67/d53c93bc7e14016f27/square_Bildschirmfoto_2026-05-31_um_13.54.24.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=vTNEs3EUSJo" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Dan Kim | KotlinConfersations'26
</a></div><div>Dan Kim discusses building full-stack web apps in Kotlin using Ktor, Compose, and WebAssembly, and whether Android developers can skip JavaScript.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=yY428I0iw_A" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
This Android News Is INSANE - Google IO 2026 Special
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner covers the biggest Android announcements from Google I/O 2026, including Compose-first UI and new AI tools.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=IpdOheudcZ4" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Jake Wharton | KotlinConfersations'26
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Kotlin by JetBrains interviews Jake Wharton on Kotlin's past, present, and future at KotlinConf'26.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://youtu.be/ybZGhqAE4pI" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Are We the Last Generation of Developers? KotlinConf 2026 Unfiltered AI Survey
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developer Tips surveys KotlinConf 2026 attendees on AI's impact on the future of software engineering.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=TZNu9u9TfN4" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Top 3 AI on Android updates for building intelligent experiences (Google I/O 2026)
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers covers the top three AI on Android updates announced at Google I/O 2026.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=ukNDSyha0EU" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Firebase After Hours #24: Firestore Full Text Search & Geoqueries built with Antigravity
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>The Firebase team covers full-text search, geoqueries, and joins coming to Firestore via the new pipeline queries engine.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=2K7VVAMUYPw" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Connect to the intelligence system
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers introduces App Functions, a new API letting apps expose capabilities to on-device AI agents like Gemini.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=JZLSWqSSojo" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Breaking down tasks (without breaking the app) | Code, Commit, Deploy, Repeat (S1E8)
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Firebase shows how to break down development tasks incrementally without destabilising a running app.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=az_oOrfJSK4" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin CLI, Kotlin 2.4, KMP Changes & More - KotlinConf 2026 News Special
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner covers the biggest Kotlin and KMP announcements from KotlinConf 2026.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=zm5OrurmKwg" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotzilla Platform Demo May 2026
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Kotzilla demonstrates its AI performance monitoring platform for Koin-based Android apps.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 31 May 2026 11:55:10 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-729</guid>
  </item>
  <item>
    <title>Android Weekly Issue #728</title>
    <link>https://androidweekly.net/issues/issue-728/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.runway.team/webinar/build-vs-buy-mobile-release-tooling?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=may-24-26" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a1324/f93c93bc7e14000028/square_square_runway.jpeg">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.runway.team/webinar/build-vs-buy-mobile-release-tooling?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=may-24-26" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Is your mobile release tooling keeping up with AI? 
</a></div><div>Your mobile release tooling is doing more work than it did a year ago. AI is driving up code volume, and the math on build vs. buy is shifting under it. Hear how engineers from Monzo, Spotify, Etsy, and Tuist are recalculating. May 28, 10am PT/1pm ET.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidengineers.substack.com/p/voice-ai-on-android-beyond-speech" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Voice AI on Android: Beyond Speech 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Akshay Nandwana explores building a full Voice AI pipeline on Android, covering streaming audio capture, endpointing, and state management.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://dev.to/tkuenneth/adaptable-apps-on-chromeos-a-post-mortem-2gl1" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Adaptable Apps on ChromeOS: A Post-Mortem 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Thomas Künneth documents a week-long investigation into suppressing ChromeOS resize warnings for Android apps on ARC.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://doc.kotzilla.io/docs/discover/mcpServer/?utm_campaign=393084112-MCP%20Server&utm_source=ppc&utm_medium=Android%20Weekly&utm_content=Android%20Weekly%20MCP" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a1324/d13c93bc230900300e/square_square_kotlin.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://doc.kotzilla.io/docs/discover/mcpServer/?utm_campaign=393084112-MCP%20Server&utm_source=ppc&utm_medium=Android%20Weekly&utm_content=Android%20Weekly%20MCP" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
MCP Server for accurate AI fixes for KMP
</a></div><div>Ship accurate fixes, fast. Connect your AI coding assistant to your production app, right in your terminal. Tell it to pull live issues, compare performance across releases, or dig into crashes. Watch it work with Claude Code, Cursor, Windsurf, Copilot & Android Studio MCP panel. Free to try.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@kmpbits/kmp-splash-how-i-stopped-opening-xcode-for-splash-screens-kmp-bits-448c82bf03b1" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
KMP Splash: How I Stopped Opening Xcode for Splash Screens
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>KMP Bits walks through building a Gradle plugin that handles splash screen setup for both Android and iOS from a single Kotlin config block.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidessence.com/leave-me-behind/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Leave Me Behind
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Adam McNeilly reflects on his Android career and why he's choosing human connection over AI-assisted development.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/gitconnected/dejavu-compose-and-the-difference-between-performance-wins-and-guardrails-294c6bd78e7d" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Déjà vu, Compose, and the Difference Between Performance Wins and Guardrails
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>James Cullimore explores using Déjà vu to add recomposition assertions to a real Compose app, uncovering a tooling bug along the way.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@anandgaur2207/google-i-o-2026-for-android-developers-3866ae50ddb1" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Google I/O 2026 for Android Developers
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Anand Gaur summarises every Google I/O 2026 announcement that matters to Android developers, from Android CLI to Compose-first tooling and Android 17.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://doveletter.dev/release-notes/google-io-2026-android" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Everything About Google I/O 2026 for Android Developers
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum distills Google I/O 2026 into what changes daily Android work: Compose as the standard, Views in maintenance mode, Android CLI 1.0, and Play Billing 9.0.0 breaking changes.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/proandroiddev/android-beyond-the-phone-lessons-from-building-for-tv-auto-and-wear-f03154a8e4b9" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Beyond the Phone: Lessons from Building for TV, Auto, and Wear
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Siarhei Krupenich explores how to adapt Android apps for TV, Auto, and Wear OS without falling into mobile-first assumptions.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/proandroiddev/accelerate-android-room-queries-with-database-indices-1471f3fee672" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Accelerate Android Room Queries with Database Indices
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Oğuzhan Aslan explains how Room database indices work under the hood and walks through single-column, composite, and unique index strategies.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.paleblueapps.com/rockandnull/app-promo-code-distribution-system/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Promies Code Distribution: A hassle-free way to manage app giveaways
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Mike Yerou walks through Promies, a revamped promo code distribution system for Android app giveaways.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/proandroiddev/whats-new-in-android-at-google-i-o-2026-8a83ffde3427" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
What's New in Android at Google I/O 2026
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Akshay Nandwana highlights the 17 biggest Android announcements from Google I/O 2026, from AI-native experiences to Android 17 and AppFunctions.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a1325/313c93bc2309003025/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/Kotlin/kotlin-agent-skills" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
kotlin-agent-skills
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A collection of AI agent skills for Kotlin projects, installable into coding agents like Claude Code or Codex.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://composables.com/blog/compose-unstyled-2.0" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Compose Unstyled 2.0
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A modular, fully unstyled Compose component library designed for building custom design systems.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/vinaywadhwa/Strictly" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Strictly
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A debug-only Android library that upgrades StrictMode with a live notification, Compose detail UI, and MCP server for AI agents.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/MessiasLima/Some" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Some
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Kotlin JVM library that generates fully populated instances of any class for testing, with zero configuration.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/jeziellago/beautycat" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
beautycat
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A web-based adb logcat viewer that streams Android device logs to your browser, with filters, regex search, and no IDE required.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://eboudrant.github.io/papa-stud/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Papa Stud.io
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A macOS desktop app for reviewing Android screenshot test failures side-by-side, with one-click baseline acceptance.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/elliotgao2/handsets" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
handsets
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A CLI tool that drives Android devices from the shell via ADB, with millisecond latency and CSS-like selectors.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="http://android-developers.googleblog.com/2026/05/whats-new-wear-os-7.html" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a122b/e33c93bc6bac006def/square_Bildschirmfoto_2026-05-24_um_18.20.50.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/whats-new-wear-os-7.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
What's new in Wear OS 7
</a></div><div>Google announces Wear OS 7 with up to 10% better battery life, Wear Widgets, Live Updates, and Gemini Intelligence on select watches.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/05/official-kotlin-support-for-visual-studio-code-is-now-available-in-alpha/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Official Kotlin Support for Visual Studio Code Is Now Available in Alpha
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains launches an official Kotlin extension for VS Code in alpha, powered by the Kotlin Language Server.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/05/built-for-productivity-what-the-data-shows-about-kotlin/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Built for Productivity: What the Data Finally Shows About Kotlin
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains Research shows Kotlin developers complete tasks 15–20% faster than Java, with Kotlin codebases barely slowing over time.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/05/security-support-policy-for-the-kotlin-standard-library/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Introducing a Security Support Policy for the Kotlin Standard Library
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains introduces an 18-month security support policy for the Kotlin Standard Library's JVM runtime artifact.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/05/kotlinconf26-keynote-highlights/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
KotlinConf'26 Keynote Highlights
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains previews Kotlin 2.4.0, a unified Kotlin Toolchain, Language Server Alpha, and official VS Code support.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/android-for-cars-unifying-platforms-premium-experiences.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android for Cars: Unifying Platforms and Premium Experiences
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces Android for Cars updates at I/O 2026, unifying Android Auto and Automotive OS with new Car App Library templates and components.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/io-2026-whats-new-in-google-play.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
IO 2026: What's New in Google Play
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces Play updates from I/O 2026, including app discovery in Gemini, Engage SDK expansions, and Play Shorts.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/android-ui-development-is-compose-first.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android UI Development is Compose-First
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google declares Compose the standard for all Android UI, placing View components and related Jetpack libraries in maintenance mode.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/introducing-android-performance-analyzer.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Introducing Android Performance Analyzer
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google launches Android Performance Analyzer, a new open-beta profiler for CPU, GPU, memory, and power analysis on Android devices.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/whats-new-android-developer-tools.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
What's New in Android Developer Tools
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces agentic Android Studio features at I/O, including Agent Skills, Firebase integration in Agent Mode, and Android CLI.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/android-adaptive-development-ecosystem.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Adaptive Development Ecosystem
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces Android 17's adaptive-first standard, requiring apps to support diverse screen sizes across phones, foldables, tablets, and new Googlebook devices.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/android-cli-stable-1-0-agent-development.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android CLI Stable 1.0 for Agent Development
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces Android CLI 1.0 stable, bringing agent access to Android Studio capabilities and Antigravity 2.0 integration.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/apply-android-xr-developer-catalyst.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Apply for the Android XR Developer Catalyst Program
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google opens applications for the Android XR Developer Catalyst Program, offering hardware kits, technical support, and grants to developers building XR apps.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/build-android-apps-google-ai-studio.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Build Android Apps with Google AI Studio
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces AI Studio can generate full native Kotlin/Compose Android apps from a prompt, with browser-based emulator, device install, and Play publishing.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/increase-google-tv-app-discovery.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Increase Google TV App Discovery
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces new Google TV developer tools for app discoverability, Gemini integration, and pointer remote support.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/17-things-android-developers-google-io.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
17 Things Android Developers Should Know from Google I/O
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google recaps 17 key Google I/O announcements for Android developers, covering agentic workflows, tooling, and ecosystem updates.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/proandroiddev/announcing-adk-for-kotlin-adk-for-android-0-1-0-building-ai-agents-on-android-and-beyond-3fb8c9ea7300" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Announcing ADK for Kotlin & ADK for Android 0.1.0: Building AI Agents on Android and Beyond
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces ADK for Kotlin and ADK for Android 0.1.0, enabling multi-agent AI systems on-device and in the cloud.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.youtube.com/playlist?list=PLWz5rJ2EKKc-vRD1wCyEuPlkpLJhXhxJd" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a122b/e43c93bc6bac006df2/square_Bildschirmfoto_2026-05-24_um_18.21.15.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/playlist?list=PLWz5rJ2EKKc-vRD1wCyEuPlkpLJhXhxJd" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android at Google I/O 2026
</a></div><div>Android Developers playlist covers all 24 Google I/O 2026 Android sessions, from platform updates to AI and Compose.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://youtu.be/J2oklv8z6BY" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin Duration API
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Marcin Moskała explains how to use the Kotlin Duration API, how it works, and why it's useful.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 24 May 2026 16:21:48 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-728</guid>
  </item>
  <item>
    <title>Android Weekly Issue #727</title>
    <link>https://androidweekly.net/issues/issue-727/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.runway.team/webinar/build-vs-buy-mobile-release-tooling?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=may-17-26" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a09da/173c93bc552e012e20/square_square_runway.jpeg">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.runway.team/webinar/build-vs-buy-mobile-release-tooling?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=may-17-26" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Is your mobile release tooling keeping up with AI?
</a></div><div>Your mobile release tooling is doing more work than it did a year ago. AI is driving up code volume, and the math on build vs. buy is shifting under it. Hear how engineers from Monzo, Spotify, Etsy, and Tuist are recalculating. May 28, 10am PT/1pm ET.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/fotmob-wear-os-adoption-cross-device-discovery.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How FotMob used cross-device discovery to score record Wear OS adoption
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Garan Jenkin walks through how FotMob used Wearable APIs to prompt phone users to install the Wear OS app, tripling daily installs.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/05/the-road-to-name-based-destructuring/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Road to Name-Based Destructuring
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains explains the move to name-based destructuring in Kotlin, outlining new syntax, rationale, and migration path.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@kmpbits/drop-the-clutch-three-metro-di-patterns-every-kmp-developer-should-know-kmp-bits-0ae2f8329797" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Drop the Clutch: Three Metro DI Patterns Every KMP Developer Should Know
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>KMP Bits explores three dependency injection patterns using Metro's compile-time-safe DI framework in Kotlin Multiplatform projects.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.danielebonaldo.com/compose-automotive-dashboard/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Compose Automotive Dashboard
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Daniele Bonaldo builds a morphing instrument dial in Compose Multiplatform, covering Canvas drawing, polar coordinates, and synchronized state transitions.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://funkymuse.github.io/posts/encrypt-kmp-database-with-firebase-in-project/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
SQLCipher + Firebase in KMP: When SPM import Symbol Conflicts Break Your Encryption
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>FunkyMuse walks through diagnosing and fixing silent SQLCipher encryption failures in KMP caused by Firebase's transitive sqlite3 linker dependency on iOS.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://victorbrandalise.com/building-adaptive-layouts-in-jetpack-compose/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Building Adaptive Layouts in Jetpack Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Victor Brandalise walks through building an adaptive list-detail screen in Jetpack Compose using WindowSizeClass.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://ryanharter.com/blog/2026/05/incremental-maintenance/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Incremental Maintenance
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Ryan Harter recommends small, incremental refactoring steps to improve legacy Android codebases without big rewrites.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://dev.to/tkuenneth/building-a-custom-launcher-for-chromeos-4fb7" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Building a custom launcher for ChromeOS
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Thomas Künneth walks through adapting an Android launcher app to run on ChromeOS, covering platform detection, split-screen quirks, and wallpaper handling.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://hotswan.dev/blog/compose-side-effects-hot-reload" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
From ViewModel to Pixels: Hot Reloading Compose Side Effects in One Loop
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum demonstrates how Compose hot reload keeps side effects live-editable without restarting the app.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@valentinerutto/effective-search-in-room-fts-vs-like-f2225f1d528b" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Effective Search in Room: FTS vs LIKE
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Valentine Rutto compares Room's FTS4 full-text search against LIKE queries for efficient offline search in large Android databases.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://hotswan.dev/blog/compose-agsl-shader-tuning" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Hot Reloading AGSL Shaders Without a Rebuild: A Compose Walkthrough
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum walks through live-tuning AGSL shaders in Compose using RuntimeShader and remember keying, with no process restart.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://dev.to/tkuenneth/bubble-up-android-17s-new-multitasking-feature-explained-l58" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Bubble Up: Android 17's New Multitasking Feature Explained
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Thomas Künneth explains how Android 17's new Bubbles feature works and what developers need to do to support it.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://kt.academy/article/compose_new_challenger" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Compose: A New Challenger
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Marcin Moskała explores how Compose Multiplatform is positioning itself as a serious competitor to React and other frontend frameworks.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://hotswan.dev/blog/compose-preview-screenshots-ci" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Screenshot testing Compose previews in CI
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum walks through capturing every Compose preview on a real device and publishing the results via GitHub Actions.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://engineering.grab.com/how-we-improved-android-studio-in-large-monorepo" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Scaling developer experience: How we improved Android Studio in a large monorepo
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Rifqi Fahmi and Arun Sampathkumar explain how Grab built a custom Focus plugin that cut Android Studio sync times from 35 minutes to under 2 minutes in a 2,000-module monorepo.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.thedroidsonroids.com/blog/bypassing-user-isolation-on-android-with-a-screen-reader" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Bypassing User Isolation on Android with a Screen Reader
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Karol Wrótniak explains how a missing user check in Android's notification service let screen readers leak private notifications across user accounts.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://saurabharora.dev/posts/per-item-viewmodels-in-compose/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Per-Item ViewModels in Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Saurabh Arora shows how to scope ViewModels to individual list items in Compose using new Lifecycle 2.11 APIs.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.tunjid.com/articles/embracing-compose-snapshot-state-for-ui-layer-state-production-6a078c7d64469a118e42eecf" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Embracing Compose Snapshot State for UI Layer State Production
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>TJ Dahunsi argues why Compose snapshot State should replace StateFlow as the observable primitive in the Android UI layer.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a09da/553c93bc552e012e32/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://github.com/megh-lath-1012/switchboard" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a08fa/e93c93bc552e010479/square_Bildschirmfoto_2026-05-17_um_17.10.59.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/megh-lath-1012/switchboard" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Switchboard
</a></div><div>A type-safe feature flagging engine for Android using KSP, with a reactive Compose debug UI and Firebase Remote Config support.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/chrisbanes/skills" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
chrisbanes/skills
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A collection of Claude Code skills covering Jetpack Compose state, performance, testing, and Kotlin coroutines best practices.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/dev-vikas-soni/gradle-lighthouse" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
gradle-lighthouse
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Gradle plugin that audits Android and KMP builds across 20+ architectural checks and scores them like Google Lighthouse.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/hossain-khan/android-compose-highlight" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
android-compose-highlight
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Jetpack Compose library for syntax highlighting, using Highlight.js via a hidden WebView to render 190+ languages as native AnnotatedString.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://infix-de.github.io/testBalloon/latest/blog/2026/05/14/testballoon-reaches-flight-level-100/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
TestBalloon Reaches Flight Level 1.0.0
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Kotlin-first test framework reaching 1.0 stable, supporting JVM, Android, JS, Wasm, and all Native targets.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/skydoves/android-testing-skills" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
android-testing-skills
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A catalog of 54 AI agent skills covering Android testing from unit tests to ADB-driven E2E.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/the-android-show-developers-cut-2026.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Android Show: Developer's Cut 2026
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces Gemini Intelligence, AppFunctions, and expanded widget support as Android transitions toward an intelligence system.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/voip-native-visibility-telecom-alpha.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Bring Native Visibility to Your VoIP App Experience with Telecom's Latest Alpha
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces Jetpack Telecom v1.1.0 alpha, adding unified call history, native callbacks, and call log exclusion for VoIP apps.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/05/kodees-kotlin-roundup-golden-kodee-finalists-kotlin-2-4-0-beta2-and-new-learning-resources/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kodee's Kotlin Roundup: Golden Kodee Finalists, Kotlin 2.4.0-Beta2, and New Learning Resources
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains rounds up April Kotlin news including Golden Kodee finalists, Kotlin 2.4.0-Beta2, and a new LinkedIn Learning certificate.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/05/help-shape-the-future-of-kotlin-in-the-age-of-ai/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Help Shape the Future of Kotlin in the Age of AI
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains launches a community survey on AI-assisted Kotlin development, with prizes for participants.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/05/compose-multiplatform-1-11-0/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Compose Multiplatform 1.11.0 Is Now Available
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains releases Compose Multiplatform 1.11.0 with native iOS text input, upgraded UI testing APIs, and smoother web scrolling.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/05/new-kmp-default-structure/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
A New Default Project Structure for Kotlin Multiplatform
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains updates the default KMP project structure, separating shared library code from platform-specific application modules.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.youtube.com/watch?v=FV9hjuIeR8o" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6a08fb/2f3c93bc552e0104d0/square_Bildschirmfoto_2026-05-17_um_17.12.00.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=FV9hjuIeR8o" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Our most requested Firestore feature is now here!
</a></div><div>Firebase channel announces the arrival of Firestore's most requested feature in this short overview.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=Atvl0l7fm1Y" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
A New Default Project Structure for Kotlin Multiplatform
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Kotlin by JetBrains covers the new default project structure introduced for Kotlin Multiplatform projects.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=3ztfLrbg3x8" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The future of mobile development by Marcin Moskała
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Marcin Moskała discusses his perspective on where mobile development is headed.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://youtu.be/fAmKIjVaUfg" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Why Phoenix? Burn limiting preconceptions!
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>kt.academy's Marcin Moskała challenges developers to rethink limiting assumptions when choosing frameworks and tools.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Events</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://kotl.in/mdghqc" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Watch the KotlinConf Keynote Live
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Join the KotlinConf livestream to catch the latest Kotlin announcements, product updates, and future plans live from the stage. Be the first to hear what’s next for the Kotlin ecosystem.

</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 17 May 2026 15:12:24 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-727</guid>
  </item>
  <item>
    <title>Android Weekly Issue #726</title>
    <link>https://androidweekly.net/issues/issue-726/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://doc.kotzilla.io/docs/discover/mcpServer/?utm_campaign=393084112-MCP%20Server&utm_source=ppc&utm_medium=Android%20Weekly&utm_content=Android%20Weekly%20MCP" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69ff99/df3c93bc5956003e6a/square_kotlin.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://doc.kotzilla.io/docs/discover/mcpServer/?utm_campaign=393084112-MCP%20Server&utm_source=ppc&utm_medium=Android%20Weekly&utm_content=Android%20Weekly%20MCP" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
MCP Server for accurate AI fixes for KMP 
</a></div><div>Ship accurate fixes, fast. Connect your AI coding assistant to your production app, right in your terminal. Tell it to pull live issues, compare performance across releases, or dig into crashes. Watch it work with Claude Code, Cursor, Windsurf, Copilot & Android Studio MCP panel. Free to try.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.revenuecat.com/blog/engineering/play-billing-8-migration/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
A complete guide to migrating from Google Play Billing v7 to v8 (and preparing for v9) 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum walks through the full Play Billing Library v7-to-v8 migration, covering removed APIs, updated flows, and new v8 behaviors.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://dev.to/aleyn_patten/adding-cross-module-routing-to-navigation-3-with-ksp-nav3-helper-design-and-usage-13a2" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Adding Cross-Module Routing to Navigation 3 with KSP: nav3-helper Design and Usage 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Aleyn Patten walks through nav3-helper, a KSP-powered library for type-safe cross-module routing in Compose Navigation 3.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.runway.team/webinar/build-vs-buy-mobile-release-tooling?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=may-10-26" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69ff99/a13c93bc5956003e5e/square_square_runway.jpeg">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.runway.team/webinar/build-vs-buy-mobile-release-tooling?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=may-10-26" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Build or buy: Mobile release tooling 
</a></div><div>84% of mobile leaders plan to invest in release tooling this year. But AI is rapidly changing the math. Code volume is climbing and release processes have to absorb that. Hear how engineers from Monzo, Spotify, Etsy & Tuist approached the build vs. buy decision. May 28, 10am PT/1pm ET.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.insert-koin.io/migrating-from-koin-dsl-to-koin-annotations-in-a-multimodule-project-a-step-by-step-guide-a38a82f56e17" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Migrating from Koin DSL to Koin Annotations in a Multimodule Project: A Step-by-Step Guide
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Gabriel Bronzatti Moro walks through migrating a Compose Multiplatform multi-module project from Koin DSL to Koin Annotations, covering KSP setup, convention plugins, and gradual module-by-module adoption.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/how-karrot-increased-sales-with-gemini-firebase-ai-translation.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How Karrot Increased Sales with Gemini & Firebase AI Translation
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Thomas Ezan and Tracy Agyemang show how Karrot used Firebase AI Logic and Gemini Flash Lite to add real-time translation, boosting buyer conversion 2.4x.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@kmpbits/the-clean-line-swift-export-for-kmp-kmp-bits-deecb811fe9f" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Clean Line: Swift Export for KMP
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>KMP Bits demonstrates Kotlin 2.3.0's Swift Export, showing how Kotlin enums arrive as real Swift enums, eliminating ObjC bridge adapters.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidpoet.medium.com/i-built-a-leaner-supabase-sdk-for-kotlin-multiplatform-heres-why-it-s-architecturally-better-d7bb2b8b6c2b" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
I Built a Leaner Supabase SDK for Kotlin Multiplatform
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Poet replaces the official 19,000-line Supabase SDK with a 3,600-line KMP alternative using Result types, explicit error handling, and DI-friendly design.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://kt.academy/article/collection-literals" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Collection Literals in Kotlin
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Marcin Moskała explores the new experimental collection literals syntax in Kotlin 2.4, allowing list and set creation with box brackets.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://doveletter.dev/docs/compose-animations" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Jetpack Compose Animations: Worked Examples
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum walks through a growing catalog of self-contained Jetpack Compose animation examples, each with tweakable constants and motion explanations.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.paleblueapps.com/rockandnull/promies-feedback-board-android-user-feedback-management/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Promies Feedback Board: A simple way to collect user feedback in your apps
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Mike Yerou introduces Promies Feedback Board, a simple hub for collecting, voting on, and managing in-app user feedback.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://hotswan.dev/blog/compose-palette-mcp" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Tuning Compose Themes Live: A Visual Feedback Loop for UI Design
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum demonstrates live Compose theme variant exploration using an MCP tool and hot reload, eliminating rebuild cycles.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://technotalkative.com/android-app-security-practical-steps-every-developer-must-follow/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android App Security: Practical Steps Every Developer Must Follow
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Paresh Mayani outlines practical Android security steps covering encrypted storage, certificate pinning, biometric auth, and Play Integrity.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/how-gratitude-widgets-boosted-user-retention-25-percent.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How Gratitude Widgets Boosted User Retention 25%
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Ash Nohe and Amrit Sanjeev show how migrating Android widgets from XML to Jetpack Glance boosted retention 25% for the Gratitude app.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/gitconnected/verifying-hardware-backed-keystore-on-a-custom-android-build-b029c72477fd" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Verifying Hardware-Backed Keystore on a Custom Android Build
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>James Cullimore proves TEE-backed keystore support on a custom Android device and explores the Binder service trust boundary for secure key operations.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69ff99/4e3c93bc5956003e46/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Jobs</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.yazio.com/de/open-positions?ashby_jid=e73a1b14-08a5-4691-8def-29d2480a0635" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Senior Mobile Engineer - KMP
<span class="main-url" style="color: #333333; font-size: 10px;">
(Remote (Spain/Portugal/Germany/UK))
</span>
</a></div><div>At Yazio, our product squads drive our mission to help people live healthier lives. We’re looking for a product-minded Senior Mobile Engineer to build impactful features for millions. You’ll work closely with Product, Engineering, and Design, using Kotlin Multiplatform to deliver for iOS & Android.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://commonsware.com/blog/2026/05/03/cw-json-0-3-0.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
cw-json 0.3.0
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Kotlin Multiplatform library adding Relative JSON Pointer support for navigating and comparing JSON structures.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/skydoves/compose-animations" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
compose-animations
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A collection of Jetpack Compose animation playgrounds with live hot-reload editing via Compose HotSwan.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="http://android-developers.googleblog.com/2026/05/making-it-easier-to-build-publish-safer-apps.html" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69ffbd/673c93bc49b8000003/square_Bildschirmfoto_2026-05-10_um_12.16.35.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/05/making-it-easier-to-build-publish-safer-apps.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Making it easier to build, publish safer apps
</a></div><div>Google announces Play Policy Insights in Android Studio, post-quantum app signing support, and faster parallel publishing for test tracks.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/05/kotlin-ecosystem-mentorship-program/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin Ecosystem Mentorship Program: Results and Winners
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains announces the results of the Kotlin Ecosystem Mentorship Program pilot, selecting a grand prize pair for KotlinConf 2026.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=OP6JHa21We8" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Beginner's Guide to Mobile App System Design (+ Tips for Interviews!)
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner walks through the key components of mobile app system design, with tips for technical interviews.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=v5ioEFQqZeo" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
April 2026: Firestore search and joins, SQL Connect realtime, Dart Functions, and more!
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Firebase covers April 2026 updates including Firestore search, SQL Connect realtime, and experimental Dart Functions support.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=UiJXe5ipSYA" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How Google made their Android app start faster
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers covers how the Google app team diagnosed and improved Android startup performance.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=0dmVWxpVaeQ" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotzilla MCP Server Introduction
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>The Kotzilla channel introduces their new MCP Server for AI-assisted Koin performance monitoring.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=NdssJ99qwys" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Firestore Enterprise: Mastering pipeline operations
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Firebase's Morgan Chen goes under the hood of the Firestore query engine, demonstrating pipeline operations for sorting and aggregation.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://youtu.be/fBBAYDLIaq0" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Effective Kotlin Item 32: Consider factory functions instead of secondary constructors
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>kt.academy covers why factory functions are often preferable to secondary constructors in Kotlin.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 10 May 2026 10:16:51 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-726</guid>
  </item>
  <item>
    <title>Android Weekly Issue #725</title>
    <link>https://androidweekly.net/issues/issue-725/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.runway.team/webinar/build-vs-buy-mobile-release-tooling?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=may-03-26" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69f640/093c93bc1f430080f6/square_square_runway.jpeg">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.runway.team/webinar/build-vs-buy-mobile-release-tooling?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=may-03-26" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Should you build your own mobile release tooling? 
</a></div><div>Your team built mobile release tooling. But what’s it actually costing you? AI makes it easier than ever to spin up internal tools, yet many teams switch to purpose-built tools. Engineers from Monzo, Spotify, Etsy and Tuist share what they learned the hard way. May 28 at 10 am PT/1pm ET.


</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://dev.to/samuvelp/i-built-a-langgraph-agent-that-audits-android-projects-heres-the-architecture-53jh" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
I Built a LangGraph Agent That Audits Android Projects — Here's the Architecture
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Samuvel Pandian walks through DroidDoctor, a Python CLI using a 7-node LangGraph state machine to audit Android Gradle configs, manifests, deprecated APIs, and Compose adoption.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://hossain.dev/posts/syntax-highlighting-on-android-bringing-shiki-engine-to-compose/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Syntax Highlighting on Android: Bringing Shiki Engine to Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Hossain Khan explores two approaches to Compose-native syntax highlighting: a Shiki microservice and on-device TextMate grammars.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/proandroiddev/when-text-input-becomes-document-editing-in-jetpack-compose-fa90be6ff013" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
When Text Input Becomes Document Editing in Jetpack Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Sergey Drymchenko explores the architecture needed when Compose text fields must behave as a full block document editor.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@chdanilr/gradle-plugin-to-catch-version-conflicts-and-their-sources-early-bcc75f509766" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Gradle plugin to catch version conflicts and their sources early
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Daniil Chernyaev builds a Gradle plugin that automatically surfaces dependency version conflicts and their full resolution paths on every sync.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/04/next-level-observability-with-opentelemetry/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Next-Level Observability with OpenTelemetry
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Kevin Kimani shows how to instrument a Kotlin/Spring Boot service with OpenTelemetry tracing to go beyond basic logging in distributed systems.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://simtop.medium.com/compose-styling-is-changing-heres-what-google-s-new-style-api-gets-right-9cb52f5065ef" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Compose Styling Is Changing — Here's What Google's New Style API Gets Right (and What It Still Needs)
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Simon Topchyan assesses Google's experimental Foundation Style API and what it means for Compose design systems at scale.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://eevis.codes/blog/2026-04-30/more-accessible-focus-indicators-with-compose/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
More Accessible Focus Indicators with Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Eevis Jonna shows how to build custom, accessible keyboard focus indicators in Jetpack Compose using the Indication API.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/proandroiddev/the-modern-guide-to-android-sdk-development-testing-distribution-part-2-of-3-f48503ca7536" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Modern Guide to Android SDK Development: Testing & Distribution (Part 2 of 3)
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Dmytro Petrenko walks through SDK testing strategies, binary compatibility validation, and Maven Central publishing.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://hotswan.dev/blog/compose-animation-hot-reload" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Tuning Compose Animations Without Rebuilding: Hot Reload for Dynamic Design
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum demonstrates how Compose hot reload enables real-time animation parameter tuning without app rebuilds.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69f640/213c93bc1f430080ff/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Jobs</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.yazio.com/de/open-positions?ashby_jid=e73a1b14-08a5-4691-8def-29d2480a0635" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Senior Mobile Engineer - KMP
<span class="main-url" style="color: #333333; font-size: 10px;">
(Remote (Spain/Portugal/Germany/UK))
</span>
</a></div><div>At Yazio, our product squads drive our mission to help people live healthier lives. We’re looking for a product-minded Senior Mobile Engineer to build impactful features for millions. You’ll work closely with Product, Engineering, and Design, using Kotlin Multiplatform to deliver for iOS & Android.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/CompassMB/MBCompass" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
MBCompass
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A free, open-source Android compass and navigation app built with Jetpack Compose, supporting track recording, GPX export, and OpenStreetMap integration.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/Mygod/librootkotlinx/releases/tag/v2.0.0-alpha01" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
librootkotlinx v2.0.0-alpha01
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Kotlin coroutines library for executing Android root commands, now rewritten with Flow-based streaming and libsu backend.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/PiotrPrus/ParticleEmitter" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
ParticleEmitter
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Jetpack Compose library for physics-based particle animations, with Canvas and layout-based rendering engines.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/Solneo/dependency-conflict-analyzer" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
dependency-conflict-analyzer
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Gradle plugin that automatically detects major-version dependency conflicts during sync and shows full resolution paths.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/yschimke/compose-ai-tools" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
compose-ai-tools
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Gradle plugin that renders Jetpack Compose @Preview composables to PNG so AI coding agents can see what they're changing.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/iamjosephmj/DeviceIntelligence" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
DeviceIntelligence
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>An open-source Android telemetry SDK that collects device integrity signals — root, hooking, bootloader, and emulator detection — as structured JSON.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/skydoves/compose-performance-skills" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
compose-performance-skills
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A curated library of agent skills for diagnosing and fixing Jetpack Compose performance issues.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.zacsweers.dev/metro-is-stable/" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69f675/403c93bc1f43008c6b/square_Bildschirmfoto_2026-05-03_um_15.09.45.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.zacsweers.dev/metro-is-stable/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Metro is Stable
</a></div><div>Zac Sweers announces Metro 1.0.0, a compile-time Kotlin DI framework offering 50–80% build time improvements over source-generation tools.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=nF4l7VnlxuY" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Developers Office Hours - Modern Android App Performance
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers team hosts an office hours session on optimizing and scaling app performance across the Android ecosystem.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=MLDkhDyvTVI" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Got a New CLI Tool! (Game Changer For AI-First Setups!)
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner demonstrates the new Android CLI tool and its most important commands for AI-first development setups.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=5k-jh24CDZw" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Exposed 1.0 and Beyond | Talking Kotlin
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Talking Kotlin covers the Exposed SQL framework reaching 1.0 and what comes next.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=QViURZf9x1s" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Insane Compose Changes, New Android Studio Panda & More
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner covers the latest Android dev news including major Compose API changes and the new Android Studio Panda release.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://youtu.be/jG_8xSPPxqY" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Effective Kotlin Item 36: Prefer Composition over Inheritance
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>kt.academy covers why composition is preferred over inheritance in Kotlin and when each approach makes sense.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 03 May 2026 13:14:41 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-725</guid>
  </item>
  <item>
    <title>Android Weekly Issue #724</title>
    <link>https://androidweekly.net/issues/issue-724/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.runway.team/webinar/build-vs-buy-mobile-release-tooling?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=apr-26-26" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69ece6/f23c93bc38ee00de56/square_square_runway.jpeg">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.runway.team/webinar/build-vs-buy-mobile-release-tooling?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=apr-26-26" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
[Live panel] Build vs. buy: mobile release tooling 
</a></div><div>Should you build your own mobile release tooling? Engineers from Monzo, Spotify, Etsy, and Tuist share how they made the call, what it actually cost, and whether AI changes the math. Live discussion, May 28 at 10 am PT/1pm ET. Hosted by Runway.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://doveletter.dev/articles/strong-skipping-mode-misconceptions#conclusion" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Compose Strong Skipping Mode Does Not Make Your Types Stable 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum clarifies how Compose Strong Skipping Mode works at the compiler level and when type stability still matters.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidessence.com/multi-table-inserts/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Multi-Table Inserts in Room 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Adam McNeilly shows how to use Room DAO interface inheritance to share multi-table insert logic across DAOs.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://hubs.la/Q049VQS20" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69ece6/bb3c93bc38ee00de46/square_GS-logo_85x85.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://hubs.la/Q049VQS20" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Lessons Learned: Mobile Apps Security Incidents 
</a></div><div>Join Security Researcher and Pentester, Jan Seredynski, on May 12 as he dissects real-world security incidents in banking, food delivery, and e-commerce. From face verification bypass to location spoofing, we’re breaking down the anatomy of a breach and what teams can do differently to address them.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/04/helping-decision-makers-say-yes-to-kmp/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Helping Decision-Makers Say Yes to Kotlin Multiplatform (KMP)
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Justin Mancinelli and Samuel Hill from Touchlab outline the business case for KMP adoption with code reduction and velocity metrics.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@kmpbits/clean-lap-ui-testing-in-compose-multiplatform-68820cda1aa4" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Clean Lap: UI Testing in Compose Multiplatform
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>KMP Bits walks through setting up and writing cross-platform UI tests in Compose Multiplatform 1.11.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://technotalkative.com/copilot-cursor-claude-code-ai-coding-tools-mobile-developers/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Which AI Coding Tool Actually Works for Mobile Developers?
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Paresh Mayani compares GitHub Copilot, Cursor, and Claude Code for Android developers, covering strengths, pricing, and workflow fit.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://levelup.gitconnected.com/how-i-used-perfetto-to-separate-real-startup-improvements-from-plausible-ones-d5497b25544c" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How I Used Perfetto to Separate Real Startup Improvements From Plausible Ones
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>James Cullimore explains how Perfetto traces helped validate which Android startup optimizations were genuinely beneficial.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.maiatoday.net/p/android-cli-meet-gemini-cli/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android CLI meet Gemini CLI
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Maia Grotepass explores combining Android CLI with Gemini CLI to build Android apps using AI agents outside the IDE.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/google-developer-experts/bringing-multimodal-gemma-4-e2b-to-the-edge-a-deep-dive-into-litert-lm-and-qualcomm-qnn-4e1e06f3030c" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Bringing Multimodal Gemma 4 E2B to the Edge: LiteRT-LM and Qualcomm QNN
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Kartikey Rawat walks through deploying multimodal Gemma 4 on Android using LiteRT-LM with NPU acceleration via Qualcomm QNN.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://kt.academy/article/compose_modifier_order" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Modifier Order in Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Marcin Moskała explains how Compose modifier ordering works across the layout and drawing phases using a decorator mental model.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.insert-koin.io/introducing-the-koin-migration-skills-0b4be9c819cc" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Introducing the Koin Migration Skills
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Arnaud Giuliani introduces a Claude Code skill that automates DI migrations from Hilt, Dagger, or older Koin to Koin 4.x.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.danielebonaldo.com/compose-automotive-dashboard/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Building a Ferrari-inspired morphing dial with Compose Multiplatform
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Daniele Bonaldo builds a Ferrari-inspired animated dial component using Compose Multiplatform for an automotive dashboard UI.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@kmpbits/kmp-modularization-from-layers-to-features-92eb3299d8e0" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
KMP Modularization: From Layers to Features
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>KMP Bits walks through migrating a Kotlin Multiplatform project from layer-based to feature-based modularization.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://proandroiddev.com/the-modern-guide-to-android-sdk-development-architecture-api-design-part-1-of-3-dfa8db19d55b" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Modern Guide to Android SDK Development: Architecture & API Design (Part 1 of 3)
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Dmytro Petrenko outlines seven principles for building consumer-grade Android SDKs, covering API design, thread safety, reactive state, and dependency isolation.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69ece7/063c93bc38ee00de5e/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Jobs</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.yazio.com/de/open-positions?ashby_jid=e73a1b14-08a5-4691-8def-29d2480a0635" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Senior Mobile Engineer - KMP
<span class="main-url" style="color: #333333; font-size: 10px;">
(Remote (Spain/Portugal/Germany/UK))
</span>
</a></div><div>At Yazio, our product squads drive our mission to help people live healthier lives. We’re looking for a product-minded Senior Mobile Engineer to build impactful features for millions. You’ll work closely with Product, Engineering, and Design, using Kotlin Multiplatform to deliver for iOS & Android.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://docs.swmansion.com/pulsar/" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69ed4d/613c93bc38ee00f52b/square_Bildschirmfoto_2026-04-26_um_09.57.56.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://docs.swmansion.com/pulsar/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Pulsar
</a></div><div>A haptic feedback SDK for Android, iOS, and React Native with presets, pattern composer, and realtime gesture-driven feedback.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://commonsware.com/blog/2026/04/25/cw-json-0-2-0.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
cw-json 0.2.0
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A KMP library for JSON Pointer operations adds URI fragment encoding support in version 0.2.0.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/04/kotlin-professional-certificate-by-jetbrains-now-on-linkedin-learning/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin Professional Certificate by JetBrains – Now on LinkedIn Learning
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains launches a Kotlin Professional Certificate on LinkedIn Learning covering Kotlin essentials through multiplatform and Ktor.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/04/android-studio-panda-4-planning-mode-next-edit-prediction.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Studio Panda 4: Planning Mode and Next Edit Prediction
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google releases Android Studio Panda 4 stable with Planning Mode, Next Edit Prediction, and enhanced agent capabilities.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/04/jetpack-compose-april-2026-updates.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Jetpack Compose April 2026 Updates
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google releases Compose 1.11 stable with updated test coroutine APIs, shared element debug tooling, and improved trackpad support.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/04/streamline-auth-credential-manager-verified-email.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Streamline Auth with Credential Manager Verified Email
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces verified email via Credential Manager, replacing OTP-based email verification with one-tap consent.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.youtube.com/watch?v=rHYlUGC109I" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69ed4d/603c93bc38ee00f522/square_Bildschirmfoto_2026-04-26_um_09.58.40.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=rHYlUGC109I" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin Flows: Buffer, Conflate, and Debounce
</a></div><div>Dave Leeds covers how Buffer, Conflate, and Debounce operators affect Kotlin Flow behaviour.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=QSELS0H6aMg" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Beginner Course for AI-Assisted Android Development
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner demonstrates building an Android habit tracker app using Claude Code agent-assisted development.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=ThfXy_Cx4gg" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to Build Apps Faster with Android Studio Panda
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers covers AI-powered features in Android Studio Panda including project assistant, agent skills, and planning mode.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=i0OMw6yoktI" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
AI-Driven AGP 9 Migration using Android Skills and Firebender
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Stevdza-San demonstrates migrating a KMP project to AGP 9 using Android Skills and Firebender AI tools.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=vC78NGwuzb4" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Refactoring with Gemini in Android Studio (Part 2) – Planning Code Changes with Checkpoints
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Sergio Sastre demonstrates planning Gemini-assisted refactoring with checkpoints in Android Studio.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 26 Apr 2026 07:59:21 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-724</guid>
  </item>
  <item>
    <title>Android Weekly Issue #723</title>
    <link>https://androidweekly.net/issues/issue-723/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69de04/063c93bc3ae2003244/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers! 
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/kotzilla/kotlin-multiplatform-observability-with-kotzilla-sdk-and-the-kotlinconf-app-170fcdc80845" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin Multiplatform Observability with Kotzilla SDK
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Miguel Valdes Faura shows how to add unified crash reporting and app vitals across Android, iOS, Desktop and Web in a CMP project using Kotzilla SDK.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.insert-koin.io/unlocking-koin-compile-safety-6278840ab171" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Unlocking Koin Compile Safety
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Arnaud Giuliani released the new Koin Compiler Plugin and also wrote an article going over in depth all the new possible features.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@Y4583L/supercharge-your-android-app-with-on-device-ai-a-practical-guide-to-gemini-nano-d9f6cccb39e6" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
A Practical Guide to Gemini Nano On-Device AI
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Yassine Beldi walks through integrating Gemini Nano via ML Kit and shows a coordinator pattern for routing between on-device and cloud inference.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@domen.lanisnik/scope-of-viewmodels-in-compose-navigation-3-fb0de3aa84e5" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Scope of ViewModels in Compose Navigation 3
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Domen Lanišnik explains how ViewModel scoping differs in Navigation 3 vs Navigation 2, and how to restore per-entry scoping with a lifecycle add-on library.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.measure.sh/p/mobile-breaks-differently" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Mobile Breaks Differently
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Anup Cowkur examines how mobile observability fundamentally differs from backend.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.sinasamaki.com/made-in-compose-airbnb-month-picker-dial/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Made in Compose: Airbnb Month Picker Dial
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>sinasamaki walks through recreating Airbnb's delightful month picker dial using the ChromaDial library in Jetpack Compose.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Jobs</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.yazio.com/de/open-positions?ashby_jid=e73a1b14-08a5-4691-8def-29d2480a0635" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Senior Mobile Engineer - KMP
<span class="main-url" style="color: #333333; font-size: 10px;">
(Remote (Spain/Portugal/Germany/UK))
</span>
</a></div><div>At Yazio, our product squads drive our mission to help people live healthier lives. We’re looking for a product-minded Senior Mobile Engineer to build impactful features for millions. You’ll work closely with Product, Engineering, and Design, using Kotlin Multiplatform to deliver for iOS & Android.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://github.com/himattm/halogen" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69e43a/ff3c93bc3ae2013aca/square_halogen-icon.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/himattm/halogen" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Halogen
</a></div><div>A Compose Multiplatform library that generates complete Material 3 themes at runtime from natural language prompts.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/skydoves/android-skills-mcp" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Skills MCP
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>An MCP server that wraps Google's android/skills, letting any MCP-capable AI coding assistant access Android development guidance without copy-pasting.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/final-run/finalrun-agent" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
FinalRun Agent
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>An AI-driven CLI that tests Android and iOS apps using plain-English YAML specs, controlling the emulator like an AI agent and producing pass/fail reports with video logs.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/measure-sh/holo" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
holo
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A terminal UI for Android that lets developers manage app data, browse logs, run SQL queries, record Perfetto traces, and control devices without leaving the terminal.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/abhishekdubey331/google-play-screenshot-skill" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
App Screenshot Generator Skill
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A reusable agent skill that automates creating polished Google Play screenshot sets and feature graphics without manual design work.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/Coding-Meet/Shader-Animation-CMP" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Shader Animation CMP
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Compose Multiplatform demo with 24 shader effects across Android, iOS, desktop, and web using a Kotlin expect/actual abstraction.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/android/skills" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Skills
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Official Google repository of AI-optimised, modular Android development instructions and resources for LLM-based agents.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/hamen/material-3-skill" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Material 3 Skill
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Claude Code skill for implementing Google's Material Design 3 system, covering 30+ Compose components, theming, and an MD3 compliance audit mode.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="http://android-developers.googleblog.com/2026/04/the-fourth-beta-of-android-17.html" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69e43a/e13c93bc3ae2013a9e/square_Android_17_Beta-3_Banner__1_.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/04/the-fourth-beta-of-android-17.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Fourth Beta of Android 17
</a></div><div>Google releases Android 17 Beta 4, the last scheduled beta, marking a critical milestone for app compatibility and platform stability testing.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/04/Test-Multi-Device-Interactions-with-the-Android-Emulator.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Test Multi-Device Interactions with the Android Emulator
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces a new Android Emulator networking stack enabling zero-configuration peer-to-peer connectivity between AVDs without complex port forwarding.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/04/get-ready-for-google-io-livestream-schedule-revealed.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Get Ready for Google I/O: Livestream Schedule Revealed
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces the Google I/O 2026 schedule for May 19–20, with keynotes covering AI, Android, Chrome, and Cloud development.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/04/build-android-apps-3x-faster-using-any-agent.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android CLI and Skills: Build Android apps 3x faster using any agent
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google introduces Android CLI, Android skills, and the Android Knowledge Base to improve agentic Android development workflows outside of Android Studio.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/04/giving-users-clearer-choice-and-everyone-a-safer-more-trusted-app-ecosystem.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Boosting user privacy and business protection with updated Play policies
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces new Play policy updates including a privacy-friendly Contact Picker API and location permission changes, with October 2026 enforcement deadlines.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/04/Hybrid-inference-and-new-AI-models-are-coming-to-Android.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Experimental hybrid inference and new Gemini models for Android
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces experimental hybrid inference for Android, routing between on-device Gemini Nano and cloud-hosted Gemini models via a unified Firebase API.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=gM9qyerFyhs" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The key tool of 10x developers isn't what you think
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Marcin Moskała covers the IntelliJ/Android Studio productivity tool that dramatically speeds up development workflows.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Events</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://ti.to/mdevcamp/2026/with/ijb-ms5y83a" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
mDevCamp: Top Android devs coming to Prague
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>KMP, Compose, custom UI, shaders & more. Hear Márton Braun (JetBrains), Arkadii Ivanov (xAI), Sinasamaki & others. June 3 workshops, June 4 conference. Festival vibe all day. Get your limited Community Ticket for June 4 (179 € + VAT).
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://kotl.in/v70u66" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
15 Things to Do at KotlinConf’26
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Getting ready for KotlinConf’26? Check out this practical guide with 15 tips for before, during, and after the conference to make the most of your experience.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 19 Apr 2026 09:06:42 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-723</guid>
  </item>
  <item>
    <title>Android Weekly Issue #722</title>
    <link>https://androidweekly.net/issues/issue-722/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://maestro.dev/?utm_source=android_weekly#maestro-studio" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69dbe1/c73c93bc6afe006202/square_Maestro_85x85px.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://maestro.dev/?utm_source=android_weekly#maestro-studio" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The only mobile test framework in YAML 
</a></div><div>Microsoft, Meta, Amazon, and DoorDash trust Maestro. So do hundreds of Android teams who got tired of flaky, hard-to-maintain UI tests. Find elements, build and run tests visually with Maestro Studio. And yeah, it's free.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://hotswan.dev/blog/compose-hot-reload" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Compose Hot Reload
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum explains how Compose hot reload works on real devices, covering its pipeline, supported changes, and instant literal patching.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://navczydev.medium.com/simplify-sorted-order-validation-with-kotlin-2-4-0s-new-extensions-b48b1ac10521" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Simplify Sorted-Order Validation with Kotlin 2.4.0's New Extensions
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Nav Singh explores Kotlin 2.4.0's new collection sorting-validation extensions that efficiently check ordering without resorting.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.runway.team/use-case/white-label?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=feb-8-26" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69dbe1/a43c93bc6afe0061f6/square_square_runway.jpeg">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.runway.team/use-case/white-label?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=feb-8-26" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Release white-label apps with a single click 
</a></div><div>Shipping white-label apps used to mean repeating the same steps and signing in and out of Google Play Console dozens of times per release. With Runway, ship everything in one place, just once.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@tezov.app/koin-annotations-make-expect-actual-obsolete-in-kmp-5f1445e2055e" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Koin Annotations Make expect/actual Obsolete in KMP
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Tezov show how with Koin annotations and the Koin compiler, you can completely bypass expect/actual.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://dev.to/tkuenneth/agentic-interaction-using-appfunctions-m8k" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Agentic Interaction Using AppFunctions
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Thomas Künneth explores Android's AppFunctions API for making app capabilities discoverable and executable by AI agents.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69dbe2/243c93bc6afe006231/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://commonsware.com/blog/2026/04/07/announcing-cw-json.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
cw-json
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Kotlin Multiplatform library providing JSON Pointer implementation and integration with Kotlin Serialization JSON.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/dinoy-raj/gemini-nano-playground" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Gemini Nano Playground
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A sample Android app for experimenting with on-device Gemini Nano via the ML Kit Prompt API.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.youtube.com/watch?v=aCG2qrjs2eo" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69dad2/d13c93bc6afe0033ac/square_Bildschirmfoto_2026-04-12_um_20.19.29.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=aCG2qrjs2eo" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Local Database on the Web - Kotlin Multiplatform Tutorial
</a></div><div>Stevdza-San demonstrates how to set up and use a local database on the web target in Kotlin Multiplatform.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=WHfmXHqEmnM" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Why Your In-App Purchases Can Likely Be Hacked (+ What to Do About It)
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner demonstrates how attackers can hack Android in-app purchases and how to protect against it.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=OL5zbI1Ctyc" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
March 2026: Firebase in AI Studio, Hybrid AI Inference for Android apps and more!
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Firebase covers the March highlights including AI Studio integration and hybrid AI inference for Android.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=3v2l796e80M" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Refactoring with Gemini in Android Studio (Part 1) – Using Behavior Tests as Guardrails
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Sergio Sastre demonstrates using behavior tests as guardrails when refactoring Android code with Gemini in Android Studio.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=9d8vTHzOvxE" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Context Preservation and Multi-Coroutine Flows
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Dave Leeds explores how coroutine context is preserved across multi-coroutine flows in Kotlin.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 12 Apr 2026 18:19:44 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-722</guid>
  </item>
  <item>
    <title>Android Weekly Issue #721</title>
    <link>https://androidweekly.net/issues/issue-721/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.runway.team/use-case/white-label?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=feb-8-26" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69d231/d83c93bc7da30021b3/square_square_runway.jpeg">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.runway.team/use-case/white-label?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=feb-8-26" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Release white-label apps with a single click
</a></div><div>Shipping white-label apps used to mean repeating the same steps and signing in and out of Google Play Console dozens of times per release. With Runway, ship everything in one place, just once.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.insert-koin.io/mastering-koin-annotations-with-the-koin-compiler-through-unit-tests-f5d169dad8f3" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Mastering Koin Annotations with the Koin Compiler Through Unit Tests
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Tezov shows how to use Koin with the Koin Compiler and annotations to generate the dependency graph, and we validate everything through unit tests.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.revenuecat.com/blog/engineering/kotlin-coroutine-bridge/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin Coroutine bridges: converting any callback-based Android API to suspend functions
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum explains the suspendCoroutine bridge pattern for converting callback-based Android APIs into clean suspend functions.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.shreyaspatil.dev/the-future-of-android-apps-with-appfunctions" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Future of Android Apps with AppFunctions
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Shreyas Patil explains Android AppFunctions, the new API that exposes app functionality to AI agents and assistants.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://composeinternals.com/composeloaders" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Compose Loaders – Mathematical Loading Animations
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jorge Castillo shares a set of animated loaders based on mathematics.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://hackernoon.com/a-hidden-problem-in-jetpack-compose-textfield-max-length" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
A Hidden Problem in Jetpack Compose TextField Max Length
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>inDrive.Tech explains how Jetpack Compose's built-in maxLength filter skips programmatic text changes, causing TextField to become completely unusable.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@kmpbits/the-white-lines-enforcing-design-system-rules-with-detekt-kmp-bits-835bec7a6efe" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The White Lines: Enforcing Design System Rules with Detekt
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>KMP Bits shows how to write custom Detekt rules that enforce design system constraints like banning hardcoded colors in Compose.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://kt.academy/article/intellij-coroutines-new-warnings" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
IntelliJ IDEA Introduces New Coroutine Warnings
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Marcin Moskala walks through new IntelliJ IDEA warnings for common Kotlin coroutines misuses, including awaitAll, currentCoroutineContext, and more.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/google-developer-experts/how-to-implement-drag-and-drop-in-kotlin-multiplatform-5f00937545de" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to Implement Drag and Drop in Kotlin Multiplatform
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Nick Skelton walks through implementing drag and drop in Kotlin Multiplatform with Compose, navigating experimental API documentation gaps.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/proandroiddev/biometric-auth-in-compose-made-easy-the-new-library-you-need-29814270506d" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Biometric Auth in Compose Made Easy: The New Library You Need
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Nav Singh demonstrates the new biometric-compose library for integrating biometric authentication directly in Jetpack Compose.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://skydoves.medium.com/jetpack-compose-hot-reload-on-real-android-devices-with-compose-hotswan-2f5dfccd55bf" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Jetpack Compose Hot Reload on Real Android Devices with Compose HotSwan
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum demonstrates hot-reloading Jetpack Compose UI on real Android devices using Compose HotSwan.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69d232/113c93bc7da30021c3/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/skymansandy/wiretapKMP" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
wiretapKMP
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Kotlin Multiplatform network inspection SDK that intercepts HTTP and WebSocket traffic, mocks API responses, and throttles requests without a proxy.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/linreal/cascade-editor" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
cascade-editor
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A native block-based rich text editor for Compose Multiplatform with drag-and-drop, slash commands, and custom block types.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="http://android-developers.googleblog.com/2026/03/media3-110-is-out.html" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69d185/103c93bc7da3000737/square_Bildschirmfoto_2026-04-05_um_11.57.52.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/03/media3-110-is-out.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Media3 1.10 is out
</a></div><div>Google releases Media3 1.10 with Material 3 Compose playback widgets, a new Player composable, and improved Transformer export speed adjustment.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/04/Increase-Guidance-and-Control-over-Agent-Mode-with-Android-Studio-Panda-3.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Increase Guidance and Control over Agent Mode with Android Studio Panda 3
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google releases Android Studio Panda 3 with agent skills for custom AI workflows, granular Agent Mode permissions, and updated car development support.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/04/get-your-wear-os-apps-ready-for-64-bit-requirement.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Get your Wear OS apps ready for the 64-bit requirement
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces a 64-bit native code requirement for Wear OS apps starting September 15, 2026, with guidance on how to prepare.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/04/AI-Core-Developer-Preview.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Announcing Gemma 4 in the AICore Developer Preview
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces Gemma 4 is available via the AICore Developer Preview, the foundation for the next-generation Gemini Nano 4 on-device AI.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/04/gemma-4-new-standard-for-local-agentic-intelligence.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Gemma 4: The new standard for local agentic intelligence on Android
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces Gemma 4 for Android, enabling local AI for both Android Studio coding assistance and on-device app development.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/04/android-studio-supports-gemma-4-local.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Studio supports Gemma 4: our most capable local model for agentic coding
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces Gemma 4 is now available in Android Studio for local AI coding assistance, offering privacy and cost efficiency.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://jakewharton.com/an-update-on-android-ktx/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
An update on Android KTX
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jake Wharton announces the Android KTX libraries are being retired, as Kotlin extensions have been merged into their respective AndroidX libraries.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.youtube.com/watch?v=iB5POKmXfWY" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69d185/153c93bc7da3000752/square_Bildschirmfoto_2026-04-05_um_11.58.45.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=iB5POKmXfWY" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to build on-device AI with Gemma 4
</a></div><div>Android Developers demonstrates building on-device AI experiences in Android apps with the new Gemma 4 model.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=4iPn1qRVsNY" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Building android apps with Gemma 4 for AI coding assistance
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers shows how to build AI-powered Android apps using Gemma 4 for local coding assistance.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 05 Apr 2026 09:59:09 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-721</guid>
  </item>
  <item>
    <title>Android Weekly Issue #720</title>
    <link>https://androidweekly.net/issues/issue-720/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.runway.team/use-case/white-label?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=feb-8-26" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69c8ec/7f3c93bc6c940043a4/square_square_runway.jpeg">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.runway.team/use-case/white-label?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=feb-8-26" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Release white-label apps with a single click 
</a></div><div>Shipping white-label apps used to mean repeating the same steps and signing in and out of Google Play Console dozens of times per release. With Runway, ship everything in one place, just once.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://doveletter.dev/preview/articles/landscapist-image-plugin" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Build Your Own Landscapist Image Plugin in Jetpack Compose 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum (skydoves) explores the ImagePlugin architecture in Landscapist, showing how to build custom plugins for the image loading lifecycle.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://navczydev.medium.com/meet-flexbox-the-powerful-new-layout-system-for-compose-446b1f65cc62" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Meet Flexbox: The Powerful New Layout System for Compose 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>navczydev introduces Flexbox, the powerful new layout system for Jetpack Compose inspired by CSS flexbox concepts.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.luciq.ai/events/mobile-observability-day?utm_source=thirdparty&utm_medium=androidweekly &utm_campaign=701PP00001S4oAVYAZ" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69c8ec/b93c93bc6c940043ad/square_Android_Weekly.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.luciq.ai/events/mobile-observability-day?utm_source=thirdparty&utm_medium=androidweekly &utm_campaign=701PP00001S4oAVYAZ" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Mobile Observability: It’s About Time (and Latency)
</a></div><div>Join Luciq on a new event series exploring how agentic AI is redefining what it means to truly observe, understand, and act on mobile app performance. Through candid
conversations, real customer stories, you’ll understand what modern mobile observability looks like and how your team benefits.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@kmpbits/crossing-the-finish-line-stateflow-sharedflow-in-kotlin-multiplatform-2ccf847b5feb" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Crossing the Finish Line: StateFlow & SharedFlow in Kotlin Multiplatform
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>KMP Bits explores how to share ViewModels with StateFlow and SharedFlow in Kotlin Multiplatform, bridging Android Compose and SwiftUI.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://commonsware.com/blog/2026/03/27/random-musings-android-17-beta-3.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Random Musings on the Android 17 Beta 3
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Mark Murphy (CommonsWare) shares observations on Android 17 Beta 3's surprisingly large API changes and undocumented additions.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://le0nidas.gr/2026/03/22/leveraging-requireoptin-to-create-composables-that-can-be-used-only-in-previews/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Leveraging @RequireOptIn to create composables that can be used only in previews
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Leonidas Partsas shows how to use @RequiresOptIn to enforce that certain composables are restricted to Compose Preview usage only.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/p/0f4c1e8e830f" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Rich Content in Text Input in Jetpack Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Oğuzhan Aslan demonstrates how to handle rich content in Compose text inputs using the contentReceiver modifier.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/gitconnected/why-https-alone-is-not-enough-for-sensitive-android-payloads-9ce0bfb99279" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Why HTTPS Alone Is Not Enough for Sensitive Android Payloads
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>James Cullimore explains why TLS is necessary but not sufficient for protecting sensitive payloads in Android apps.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://proandroiddev.com/87-results-in-find-usages-fixing-navigation-hell-in-jetpack-compose-326567cd3807" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
87 Results in Find Usages: Fixing Navigation Hell in Jetpack Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Andrew Malitchuk builds YACT, an IDE plugin that gives CompositionLocal values one-click navigation, visualization, and usage insights in Compose.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://yamsergey.medium.com/debugging-android-apps-with-ai-how-i-replaced-android-studios-inspector-with-an-mcp-server-848d17cbc989" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Debug, Fix and Verify Android Apps with a Coding Agent
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Sergey Yamshchikov walks through DTA, an MCP-based CLI toolkit that gives AI assistants direct access to Android devices for debugging.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/gitconnected/turning-a-wear-os-complication-into-a-launcher-shortcut-581620d9de1c" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Turning a Wear OS Complication Into a Launcher Shortcut
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>James Cullimore shows how to implement a Wear OS complication that acts as a direct app launcher shortcut on the watch face.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69c8ed/1e3c93bc6c940043c8/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/Oremif/kstats" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
kstats
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Kotlin Multiplatform statistics toolkit covering distributions, hypothesis testing, correlation, descriptive stats, and sampling.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/szijpeter/webauthn-kotlin-multiplatform" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
webauthn-kotlin-multiplatform
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Kotlin Multiplatform library providing standards-first building blocks for WebAuthn and passkey integrations.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="http://android-developers.googleblog.com/2026/03/the-third-beta-of-android-17.html" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69c860/ba3c93bc6c94002aa2/square_Bildschirmfoto_2026-03-29_um_11.13.46.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/03/the-third-beta-of-android-17.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Third Beta of Android 17
</a></div><div>Google announces Android 17 Beta 3 reaching platform stability with locked APIs, plus new behavior changes around large screens and security.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/03/Beyond-Infotainment-Extending-Android-Automotive-OS-for-Software-defined-Vehicles.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Beyond Infotainment: Extending Android Automotive OS for Software-defined Vehicles
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces AAOS SDV, an open-source expansion of Android Automotive OS beyond infotainment targeting software-defined vehicle platforms.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/03/contact-picker-privacy-first-contact.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Contact Picker: Privacy-First Contact Sharing
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google introduces the Android 17 Contact Picker, letting users grant apps access to only specific contacts instead of the broad READ_CONTACTS permission.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/03/location-privacy.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Redefining Location Privacy: New Tools and Improvements for Android 17
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google introduces a new location button and privacy improvements in Android 17, giving users easier one-time precise location access controls.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://commonsware.com/blog/2026/03/25/jetpack-artifact-wave.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
25 March 2026 Artifact Wave
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>CommonsWare highlights the March 25 Jetpack artifact wave, including new Room3 multiplatform targets and a new Wear Compose Remote artifact.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://youtu.be/ddTkt4aEgEI" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69c860/b53c93bc6c94002a8a/square_Bildschirmfoto_2026-03-29_um_11.14.19.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://youtu.be/ddTkt4aEgEI" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
In what order are Compose modifiers applied?
</a></div><div>Marcin Moskała explains the order in which Jetpack Compose modifiers are applied.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=j5ArH74E38Q" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin 2.3.20, Android Bench, and more - TypeAlias Show #10
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Dave Leeds covers the latest Kotlin and Android news including the Kotlin 2.3.20 release and Android Bench.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/shorts/-ICdDmgCWUc" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Firebase AI Logic KSP (Android)
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Firebase shows how to get started with Kotlin Symbol Processing (KSP) for the Firebase AI Logic SDK on Android.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=zGWbTIArNyk" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Studio has entered the agentic era
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers demonstrates Android Studio's new agentic AI capabilities for building high-quality Android apps.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/shorts/QddeILCKvZo" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Top 8 Android developer verification questions answered
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Developers answers the top questions about the new Android developer verification program, including ADB installs and unregistered app flows.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=PU-VdH8HhVA" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Explicit Backing Fields are experimental in Kotlin 2.3
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Kotlin by JetBrains covers the new explicit backing fields syntax introduced as experimental in Kotlin 2.3.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 29 Mar 2026 09:14:47 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-720</guid>
  </item>
  <item>
    <title>Android Weekly Issue #719</title>
    <link>https://androidweekly.net/issues/issue-719/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69bfde/c13c93bc6a8800017f/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://doveletter.dev/preview/articles/compose-preview-internals" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How Compose Preview Works Under the Hood
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum traces the full pipeline from @Preview annotation to rendered pixels inside Android Studio.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/gitconnected/how-i-found-a-34-startup-win-in-a-modern-compose-app-84953f77ae52" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How I Found a 34% Startup Win in a Modern Compose App
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>James Cullimore's guide to improving your startup speed.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/proandroiddev/beyond-positions-kotlins-new-name-based-destructuring-eee347d1bb5c" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Beyond Positions: Kotlin's New Name-Based Destructuring
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Nav Singh takes a quick look at name-based destructuring declarations.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://stefma.medium.com/compositionlocal-in-jetpack-compose-96c4052874eb" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
CompositionLocal in Jetpack Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Stefan examines how to use CompositionLocal.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://juliensalvi.medium.com/monitoring-android-vitals-with-the-play-developer-reporting-api-85edabb772a9" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Monitoring Android Vitals with the Play Developer Reporting API
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Julien Salvi shows how to automate Android Vitals monitoring using the Play Developer Reporting API and a Gradle task.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://programminghard.dev/dont-learn-coroutine-testing-with-turbine/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Don't Learn Coroutine Testing with Turbine
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Tim Malseed argues for learning coroutine testing fundamentals before reaching for Turbine, to avoid flaky, over-specified tests.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://saurabharora.dev/posts/syncing-your-ai-guidelines-across-workflows/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Syncing Your AI Guidelines Across Workflows
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Saurabh Arora shows how to keep AI coding guidelines consistent across Android Studio, CLI tools, and CI bots using a git pre-commit hook.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://github.com/hi-manshu/tracey/" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69bf58/a03c93bc684400b4ba/square_Bildschirmfoto_2026-03-22_um_13.21.36.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/hi-manshu/tracey/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Tracey
</a></div><div>A Kotlin Multiplatform flight recorder for Compose apps that captures gestures, screen views, breadcrumbs, and crashes for replay and reporting.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/3xcool/Kompass" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kompass
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Compose Multiplatform navigation library built around pure reducers and immutable state for predictable, testable navigation on Android, iOS, and Desktop.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/mrmike/android-source-explorer-mcp" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Source Explorer MCP Server
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>An MCP server that gives AI tools on-demand access to AOSP and AndroidX source code for accurate framework understanding.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/Kotlin/kotlin-agent-skills" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
kotlin-agent-skills
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A collection of AI agent skills for Kotlin projects, installable via the Agent Skills standard.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://android-developers.googleblog.com/2026/03/Get-inspired-and-take-your-apps-to-desktop.html" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69bf58/a13c93bc684400b4bd/square_Bildschirmfoto_2026-03-22_um_13.22.15.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/03/Get-inspired-and-take-your-apps-to-desktop.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Get Inspired and Take Your Apps to Desktop
</a></div><div>Google launches desktop experience design guidance and the Android Design Gallery for adaptive app development.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/03/kotlin-2-3-20-released/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin 2.3.20 Released
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains releases Kotlin 2.3.20 with Gradle 9.3 compatibility, name-based destructuring, and new C/Objective-C interop.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/03/gsoc-2026-contribute-to-kotlin/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Google Summer of Code 2026 Is Here: Contribute to Kotlin
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>The Kotlin Foundation announces participation in GSoC 2026, with four projects open for contributor applications until March 31.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/03/android-developer-verification.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android developer verification: Balancing openness and choice with safety
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces an advanced sideloading flow and free limited-distribution accounts as part of upcoming Android developer verification requirements.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/03/kotlinconf-2026-talks-schedule/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
KotlinConf 2026: Talks to Help You Navigate the Schedule
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains highlights selected talks from the full KotlinConf 2026 schedule, spanning language design, multiplatform, server-side, and AI.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=u6zVotJ4m-0" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
6 Ways to Make Your Gradle Builds Super Fast
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner covers six practical techniques for speeding up Gradle builds in Android projects.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=El-aCoFSqcQ" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
We Don't Need Designers Anymore.
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner tests the Figma MCP server to vibe-code Android UI designs using Claude Code.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 22 Mar 2026 12:22:35 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-719</guid>
  </item>
  <item>
    <title>Android Weekly Issue #718</title>
    <link>https://androidweekly.net/issues/issue-718/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://firebender.com/" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69b33b/993c93bc063100100c/square_firebender.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://firebender.com/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
🔥 Most powerful AI in Android Studio 👊 
</a></div><div>Code 10x faster. Tell Firebender to create full screens, ship features, or fix bugs - and watch it do the work for you. It's been battle tested by the best android teams at companies like Tinder, Adobe, and Instacart.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://victorbrandalise.com/embedded-android-photo-picker-in-jetpack-compose/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Embedded Android Photo Picker in Jetpack Compose 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Victor Brandalise demonstrates how to integrate the embedded system photo picker into a Compose UI using the photopicker-compose artifact.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/03/BoostingAndroid%20PerformanceIntroducingAutoFDO.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Boosting Android Performance: Introducing AutoFDO for the Kernel 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Yabin Cui explains how the Android LLVM team applies AutoFDO to the kernel using real-world workload profiles for measurable performance gains.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://tuist.dev/tuist/android" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69b33b/7a3c93bc0631001006/square_icon_512x512_2x.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://tuist.dev/tuist/android" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Velocity for Every Gradle Team 
</a></div><div>Level up your Android projects with Tuist-powered Gradle cache, build and test insights, and previews. Runs anywhere: local, CI, or agentic workflows. No servers to host. No infrastructure to manage. Set up in minutes and start shipping faster.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://lopez-manas.com/articles/2026-03-10_distributing-multi-module-android-libraries-making-peace-with-the-bill-of-materials-bom/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Distributing Multi-Module Android Libraries: Making Peace with the Bill of Materials (BoM)
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Enrique Lopez Manas explains how to use the java-platform Gradle plugin to create a BoM that simplifies version management for multi-module Android libraries.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.shreyaspatil.dev/exploring-compositionlocal-api-internals-in-jetpack-compose" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Exploring CompositionLocal API internals in Jetpack Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Shreyas Patil dives deep into how Jetpack Compose's CompositionLocal API works internally, tracing value holders, persistent scope maps, and snapshot-based recomposition tracking.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.mmckenna.me/introducing-dejavu" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Introducing Dejavu: Recomposition Testing for Jetpack Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Matt McKenna introduces Dejavu, a test library that turns Jetpack Compose recomposition counts into assertable CI contracts without any production code changes.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://aditlal.dev/compose-rebound/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Introducing Rebound: context-aware recomposition budgets for Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Adit Lal introduces Rebound, a Kotlin compiler plugin that monitors Jetpack Compose recomposition rates against role-based budgets and surfaces violations in an IDE plugin.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://proandroiddev.com/one-await-to-rule-them-all-a-unified-webview-bridge-for-android-and-ios-6e4aa9f9f683" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
One await to Rule Them All: A Unified WebView Bridge for Android and iOS
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jan Rabe explains how to build a unified, promise-based WebView bridge that works identically on Android and iOS, eliminating platform-specific callback spaghetti.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/proandroiddev/localmaterialtheme-from-prop-hell-to-theme-nirvana-material3-38b3c01ab7d4" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
LocalMaterialTheme: From Prop Hell to Theme Nirvana
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Nav Singh walks through Material3 1.5.0-alpha15's unified LocalMaterialTheme CompositionLocal and how custom Modifier nodes can now read theme data directly.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/proandroiddev/viewmodel-is-deprecated-77a4caa9b359" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
ViewModel is deprecated* *not really
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Costa Fotiadis explores replacing ViewModel with Compose's retain API to create a composition-scoped, DI-friendly state holder without the pre-Compose baggage.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.maiatoday.net/p/android-%EF%B8%8F-gemini-cli-tech-debt-detection-code-maat-skill/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android ❤️ Gemini CLI - tech debt detection Code Maat skill
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Maia Grotepass demonstrates building a Gemini CLI skill that automates Code Maat analysis to detect hotspots and logical coupling in an Android codebase.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://engineering.grab.com/reclaiming-tetabytes-optimizing-android-image-caching-with-tlru" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Reclaiming Terabytes: Optimizing Android Image Caching with TLRU
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Nguyen Van Minh and Rifqi Fahmi explain how Grab evolved their Android disk cache from LRU to a time-aware variant to reclaim device storage at scale.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://engineering.grab.com/r8-optimization-at-scale-with-ai-assisted-debugging" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Enabling R8 Optimization at Scale with AI-Assisted Debugging
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Nguyen Van Minh walks through how Grab enabled full R8 optimization across a 9-million-line Android app using AI-assisted debugging techniques.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@chatikyan/remote-compose-back-to-the-future-454b8e824fad" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Remote Compose: Back to the Future
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Arman Chatikyan explores Remote Compose, showing how to define and render Android UI from a server without WebViews or custom JSON schemas.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://touchlab.co/kotlinconf-2026" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The KotlinConf 2026 talks that we're excited about
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Kevin Schildhorn from Touchlab highlights standout KotlinConf 2026 sessions covering KMP, Compose Multiplatform, iOS integration, and Kotlin/JS.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://dev.to/tkuenneth/refuelling-your-jetpack-d8i" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Refuelling your Jetpack
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Thomas Künneth explores how the familiar Jetpack library stack maps onto Kotlin Multiplatform for cross-platform development.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://marcellogalhardo.dev/posts/scoping-viewmodels-in-compose/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Scoping ViewModels in Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Marcello Galhardo walks through new Lifecycle ViewModel APIs that allow scoping ViewModels to arbitrary parts of the Compose UI hierarchy.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69b33b/393c93bc0631000ff7/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://aldefy.github.io/compose-rebound/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
compose-rebound
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Budget-based recomposition monitoring for Jetpack Compose. A Screen at 3/s. An Animation at 120/s. Zero config. Debug builds only.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/himattm/dejavu" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
dejavu
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A test-only library that turns Jetpack Compose recomposition behavior into assertable, automatable test expectations.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/KlassenKonstantin/SnappySwipe" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
SnappySwipe
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Compose component that implements a snappy swipe-to-delete interaction inspired by Material 3 Expressive notifications.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/03/building-a-bigger-stage.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Expanding our stage for PC and paid titles
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces cross-platform PC discovery, Game Trials, buy-once-play-anywhere pricing, and Play Pass updates for game developers.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/03/level-up-your-game.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Level Up: Test Sidekick and prepare for upcoming program milestones
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces Play Games Sidekick testing, new Play Console updates, and 2026 Level Up program milestones for game developers.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/03/room-30-modernizing-room.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Room 3.0 - Modernizing the Room
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google releases the first alpha of Room 3.0, a major update adding Kotlin Multiplatform support, dropping Java codegen, and going coroutines-first.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=LJ79KNJYS6o" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Why we remember snapshot state in Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>kt.academy explains how and why Jetpack Compose's snapshot state system uses remember under the hood.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=SfS4KOfjc4E" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin Flow Operators: You Can't Do THAT with Collections...
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Dave Leeds demonstrates what Kotlin Flow operators can do that standard collections cannot.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=ARsCAil6W9M" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
My #1 Tip When ViewModels Grow Too Big
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner shares his top strategy for managing and splitting oversized ViewModels.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 15 Mar 2026 18:05:49 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-718</guid>
  </item>
  <item>
    <title>Android Weekly Issue #717</title>
    <link>https://androidweekly.net/issues/issue-717/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://firebender.com/" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69ad36/0c3c93bc4ac3003b55/square_firebender.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://firebender.com/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
🔥 Most powerful AI in Android Studio 👊
</a></div><div>Code 10x faster. Tell Firebender to create full screens, ship features, or fix bugs - and watch it do the work for you. It's been battle tested by the best android teams at companies like Tinder, Adobe, and Instacart.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://proandroiddev.com/jetpack-compose-why-you-shouldnt-use-localcontext-for-strings-4d4c372b14ab" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Jetpack Compose: Why you shouldn't use LocalContext for Strings
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Katie Barnett explains why LocalResources.current should be used over LocalContext.current when accessing resources in Compose, to correctly handle configuration changes.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@heoderer/physicsbox-adding-physics-to-compose-driven-projects-bc7926fe3b23" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
PhysicsBox. Adding physics to compose driven projects
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Alexey Zinchenko shows how to add JBox2-powered physics simulations to Jetpack Compose and Compose Multiplatform projects using PhysicsBox.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://proandroiddev.com/motion-blur-for-a-spinning-wheel-in-jetpack-compose-368c1647224d" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Motion Blur for a Spinning Wheel in Jetpack Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Piotr Prus shows how to implement velocity-driven rotational motion blur on a spinning Compose canvas, using an AGSL RuntimeShader on API 33+ with a ghost-layer fallback for older versions.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://dela.dev/2026/03/generating-timeline-hover-previews-with-android-media3" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Generating Timeline Hover Previews with Android Media3
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Kirk Agbenyegah demonstrates how to implement timeline hover preview thumbnails in a media player using Jetpack Media3.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.insert-koin.io/detekt-rules-koin-c0b6330fc37b" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Detekt rules for Koin
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Kirill Rozov introduces a set of Detekt static analysis rules for enforcing best practices when using the Koin dependency injection framework.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/03/how-whoop-decreased-excessive-partial.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How WHOOP decreased excessive partial wake lock sessions by over 90%
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>The WHOOP engineering team shares how they reduced excessive wake lock sessions by over 90% using WorkManager and Android Vitals.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="http://android-developers.googleblog.com/2026/03/supercharge-your-android-development.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Supercharge your Android development with 6 expert tips for Gemini in Android Studio
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Trevor Johns shares expert tips from Google engineers and GDEs for getting the most out of Gemini in Android Studio, including Agent Mode and the New Project Assistant.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/03/elevating-ai-assisted-androi.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Elevating AI-assisted Android development and improving LLMs with Android Bench
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google introduces Android Bench, a new benchmark suite for evaluating the quality of AI-assisted Android development tools.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/03/instagram-and-facebook-deliver-instant.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Instagram and Facebook deliver instant playback and boost user engagement with Media3 PreloadManager
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Mayuri Khinvasara Khabya walks through how Meta integrated Jetpack Media3's PreloadManager to achieve true instant video playback in Facebook and Instagram.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://touchlab.co/kmp-view-models" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Is AndroidX ViewModel the best choice for KMP projects?
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Gustavo Fão Valvassori examines the trade-offs of using AndroidX ViewModel in Kotlin Multiplatform projects.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69ad36/1f3c93bc4ac3003b60/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/aouledissa/deep-match" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
deep-match
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Gradle plugin that simplifies deeplink routing by matching URLs to Android navigation destinations.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/alexstyl/avdbuddy" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
AVD Buddy
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A macOS menu bar app for quickly launching and managing Android Virtual Devices without opening Android Studio.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/solrudev/Ackpine" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Ackpine
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A library providing a consistent and reliable API for installing and uninstalling APKs on Android.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/iamjosephmj/OpenPAD" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
OpenPAD
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>An open-source on-device face liveness detection library for Android.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://simonmarquis.github.io/Lint-Playground/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Lint Playground
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A browser-based playground for writing, testing, and sharing custom Android Lint rules with live SARIF output.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/wayfair-incubator/compose-lazy-adaptive-layout" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
compose-lazy-adaptive-layout
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Jetpack Compose library providing a lazy adaptive grid layout for building responsive UIs across different screen sizes.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/03/battery-technical-quality-enforcement.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Battery Technical Quality Enforcement is Here: How to Optimize Common Wake Lock Use Cases
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google details the Google Play wake lock enforcement rollout and best practices for reducing excessive partial wake lock usage.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/03/a-new-era-for-choice-and-openness.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
A new era for choice and openness
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces expanded billing choice, a Registered App Stores program, and reduced service fees on Google Play.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/05/go-from-prompt-to-working-prototype.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Go from prompt to working prototype with Android Studio Panda 2
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google releases Android Studio Panda 2 stable, with an AI-powered New Project flow that generates a working app from a single prompt.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/03/android-devices-extend-seamlessly-to.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android devices extend seamlessly to connected displays
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google announces connected display support is generally available in Android 16 QPR3, enabling desktop windowing on external monitors.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=BhUf_Sv_Bv0" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Tracing 2.0 - Performance on Android has never been easier - with Rahul Ravikumar
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Coding with the Italians explores Android's Tracing 2.0 API for simplified performance tracing with guest Rahul Ravikumar.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=m0Cq6J-V_RY" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Everything new in AGP 9.0 for Kotlin projects
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Kotlin by JetBrains covers the key AGP 9.0 changes for Kotlin projects, including built-in Kotlin support and migration to the new Android KMP library plugin.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 08 Mar 2026 17:31:11 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-717</guid>
  </item>
  <item>
    <title>Android Weekly Issue #716</title>
    <link>https://androidweekly.net/issues/issue-716/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.runway.team/use-case/white-label?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=feb-8-26" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69a407/133c93bc078a00fb73/square_runway.jpeg">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.runway.team/use-case/white-label?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=feb-8-26" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Release white-label apps with a single click 
</a></div><div>Shipping white-label apps used to mean repeating the same steps and signing in and out of Google Play Console dozens of times per release. With Runway, ship everything in one place, just once.

</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://doveletter.dev/preview/articles/compose-styles" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Introducing the Experimental Styles API in Jetpack Compose 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum examines the experimental Compose Styles API for declarative, interaction-aware styling with automatic animations and efficient modifier invalidation.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://itnext.io/understanding-dependencies-injection-with-unit-tests-and-koin-04f4032f6bea" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Understanding Dependencies injection with unit-tests and Koin 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Tezov explores how Koin actually works by observing what happens when dependencies are resolved at runtime.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://firebender.com/" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69a407/233c93bc078a00fb7c/square_firebender.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://firebender.com/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
🔥 Most powerful AI in Android Studio 👊
</a></div><div>Code 10x faster. Tell Firebender to create full screens, ship features, or fix bugs - and watch it do the work for you. It's been battle tested by the best android teams at companies like Tinder, Adobe, and Instacart.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@fredosuala/kmp-architecture-the-case-for-pure-kotlin-viewmodels-c85ce95499ee" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
KMP Architecture: The Case for Pure Kotlin ViewModels
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Fredrick Chibuzor Osuala recommends pure Kotlin ViewModels with platform-owned scope and lifecycle wrappers to keep commonMain independent and interop predictable.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/google-developer-experts/on-device-rag-for-app-developers-embeddings-vector-search-and-beyond-47127e954c24" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
On-Device RAG for App Developers: Embeddings, Vector Search, and Beyond
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Sasha Denisov outlines on-device RAG using local embeddings plus vector search.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://aditlal.dev/play-store-heisenbug-art-verify/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Hunting the Play Store Heisenbug: R8, ART Verify Mode, and Firebase Init Races
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Adit Lal shows Play Store ART verify mode plus R8 full mode can trigger a Firebase init race.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://annycedavis.com/2026/02/jetpack-compose-and-the-speed-of-thinking.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Jetpack Compose and the Speed of Thinking
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Annyce Davis considers how Compose removes cognitive drag, speeding up debugging, previews, and testing.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://eevis.codes/blog/2026-02-28/adding-navigation-support-to-large-content-viewer-with-compose/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Adding Navigation support to Large Content Viewer with Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Eevis Panula adds accessible navigation to a Compose large-content viewer.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://aditlal.dev/compose-styles/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Compose Styles API: Building 8 Labs to Master Declarative Styling
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Adit Lal highlights Compose’s new Styles API as a declarative styling layer that cuts boilerplate.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69a407/383c93bc078a00fb84/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/rubensousa/ProjectGuard" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
ProjectGuard
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A Gradle plugin that acts as a powerful gatekeeper for your project's dependencies.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://android-developers.googleblog.com/2026/02/the-second-beta-of-android-17.html" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69a39a/c83c93bc078a00ebbd/square_Bildschirmfoto_2026-03-01_um_10.31.13.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/02/the-second-beta-of-android-17.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Second Beta of Android 17
</a></div><div>Google previews Android 17 Beta 2, centered on new system pickers, cross-device handoff, and privacy tightening.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/02/the-intelligent-os-making-ai-agents.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Intelligent OS: Making AI agents more helpful for Android apps
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google introduces AppFunctions and an AI-driven UI automation framework so Gemini and other agents can discover, invoke, and complete Android app tasks.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=6dOXCV_8nEI" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Intro to Kotlin's Flow API
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Dave Leeds shows how your experience with collections and sequences can make it easy for you to start working with Flows.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=V8iaROVm-eU" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How To Navigate Back With Results In Nav3
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jov Mit shows how to navigate back sending results using Navigation 3.

</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=Zwmcr6duzhY" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Senior Developer Ranks Jetpack Compose State Management Approaches
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner goes over the 5 most common state management approaches for Jetpack Compose and rank them from S-tier to F-tier.


</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Events</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://kotl.in/d2sgll" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/699dca/803c93bc55e8004af2/square_KC_icon_85x85__x2.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://kotl.in/d2sgll" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
KotlinConf'26: Full Schedule and Speaker List
</a></div><div>Discover the complete agenda and full speaker lineup for KotlinConf’26. Explore the keynote, workshops, and hands-on sessions led by industry experts. Plan your experience, bookmark must-see talks, and get ready for an inspiring Kotlin journey!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table>]]></description>
    <pubDate>Sun, 01 Mar 2026 09:33:10 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-716</guid>
  </item>
  <item>
    <title>Android Weekly Issue #715</title>
    <link>https://androidweekly.net/issues/issue-715/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://firebender.com/" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/699877/903c93bc779000e852/square_firebender.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://firebender.com/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
🔥 Most powerful AI in Android Studio 👊 
</a></div><div>Code 10x faster. Tell Firebender to create full screens, ship features, or fix bugs - and watch it do the work for you. It's been battle tested by the best android teams at companies like Tinder, Adobe, and Instacart.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.zacsweers.dev/re-dependency-injection-vs-service-locators/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Re: Dependency Injection vs. Service Locators 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Zac Sweers reframes the DI debate as compile-time graph construction versus runtime service lookup, arguing the real tradeoff is explicitness and build cost versus runtime risk, testing friction, and scaling pain.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://publicobject.com/2026/02/21/keep-android-open/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Keep Android Open 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jesse Wilson urges folks to oppose Google’s ID and fee based Android developer verification as an anti-competitive lock that enables software blocking.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://fandf.co/4rUqKlL" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/699877/783c93bc779000e848/square_developer_avatar_85x85__1_.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://fandf.co/4rUqKlL" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Get Started with React Native for Vega
</a></div><div>React Native for Vega delivers native performance across Fire TV devices. Ship faster with hot reloading and built-in focus management. Access SDKs, testing tools, libraries and distribution resources to launch your app on Vega OS-powered devices. 

</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://vinted.engineering/2026/02/12/from-dagger-to-metro/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
From Dagger to Metro
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Andrius Semionovas and Heorhii Popov explain how migrating a huge codebase from Dagger and Anvil to Metro unlocked K2 and improved build times despite significant tooling and legacy hurdles.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://aditlal.dev/building-stickerexplode-part-1-gestures-physics-and-making-stickers-feel-real/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Building StickerExplode: Gestures, physics, and making stickers feel real
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Adit Lal demonstrates making stickers feel physical in Compose Multiplatform through custom gestures, springy peel interactions, and die cut visuals backed by persistent state.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/02/under-hood-android-17s-lock-free.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Under the hood: Android 17’s lock-free MessageQueue
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>In Android 17, apps targeting SDK 37 or higher will receive a new implementation of MessageQueue where the implementation is lock-free.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/699877/a23c93bc779000e857/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/azikar24/WormaCeptor" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
WormaCeptor
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A modular Android debugging toolkit and network inspector built with Clean Architecture and Jetpack Compose — designed for zero-impact production builds.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/androidbroadcast/Koin-Detekt" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Koin-Detekt
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Detekt rules for Koin DI
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/AndroidPoet/playconsole-cli" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
playconsole-cli
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Fast, lightweight, and scriptable CLI for Google Play Console
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/02/java-to-kotlin-conversion-comes-to-visual-studio-code/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Java to Kotlin Conversion Comes to Visual Studio Code
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>To help streamline the transition from Java to Kotlin for VS Code users, Jetbrains introduces the Java to Kotlin (J2K) converter extension.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/02/get-ready-for-google-io-may-19-20.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Get ready for Google I/O May 19-20
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google I/O streams May 19-20 with Gemini and agentic coding highlights alongside major Android and broader product updates.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://keepandroidopen.org/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Keep Android Open
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Keep Android Open argues Google’s 2026 verification mandate will centralize app installation behind paid, identity-verified registration, undermining Android’s openness.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.youtube.com/watch?v=FF01B6urN0A" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/699a38/033c93bc7790013420/square_Bildschirmfoto_2026-02-22_um_18.10.05.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=FF01B6urN0A" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Top 5 Jetpack Compose Performance Killers
</a></div><div>Philipp Lackner showcase 5 different issues that can break performance in your Compose app. Make sure to look at these first when running into performance problems.

</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=nEocynqm3ZA" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Generate Android Code from Pull Request Comments with GitHub MCP + Gemini
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Sergio Sastre teaches how to read pull request review comments and use GitHub MCP with Gemini to automatically generate the corresponding Android code.


</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=0B07A_c45_o" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
What’s so great about R8?
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Join hosts Tor and Romain as they sit down with Søren Gjesse, Chris Craik, and Shai Barack to dive into R8.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=u9VdJyILNYk" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
You won't believe how we created an Android Lint rule using AI - with Tor Norbye
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>In this episode of Code With The Italians, try something a little different: Let's build a custom Android Lint rule using Gemini inside Android Studio.

</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=Wze7qsDl4BM" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How Major Metros Run on Kotlin Multiplatform
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Sit down with Paweł Kwieciński from Masabi to explore how they brought a decade-old Java codebase to Kotlin Multiplatform, powering ticket validation across mobile apps, embedded devices, and backend systems
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=9caMeFQYCLk" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Talking about Gemini in Android Studio
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>This fireside chat explores Gemini's unique integration, its ability to build entire apps, and strategies for managing AI-generated code.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Specials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.kotzilla.io/the-next-software-crisis-wont-be-about-writing-code" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Next Software Crisis Won't Be About Writing Code
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Arnaud Giuliani says AI will accelerate technical debt unless teams design for meaning and architecture before prompting.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 22 Feb 2026 17:10:51 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-715</guid>
  </item>
  <item>
    <title>Android Weekly Issue #714</title>
    <link>https://androidweekly.net/issues/issue-714/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://fandf.co/4aIHRkR" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/699101/ab3c93bc63190117c3/square_developer_avatar_orange_85x85.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://fandf.co/4aIHRkR" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Build Fire TV Apps with React Native for Vega
</a></div><div>Vega OS delivers cross-device development with native performance, hot reloading, and built-in focus management. Vega Developer Tools provides you with the resources you need to develop, test, and distribute apps on Vega OS-powered devices.  

</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.revenuecat.com/blog/engineering/kotlinx-serialization/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How kotlinx.serialization generates code: a compiler plugin deep dive 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum dives deep into the internal mechanisms of the kotlinx.serialization compiler plugin.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://avatsav.dev/hello-retain/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Goodbye ViewModel. Hello retain! 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Abhi says Compose "retain" lets you drop ViewModel ceremony by retaining simple injectable presenters and cleaning them up via RetainObserver.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://firebender.com/" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/699101/c93c93bc63190117ce/square_firebender.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://firebender.com/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
🔥 Most powerful AI in Android Studio 👊
</a></div><div>Code 10x faster. Tell Firebender to create full screens, ship features, or fix bugs - and watch it do the work for you. It's been battle tested by the best android teams at companies like Tinder, Adobe, and Instacart.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://proandroiddev.com/mastering-the-new-embedded-photo-picker-in-androidx-4cd151870757" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Mastering the New Embedded Photo Picker in AndroidX
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Oğuzhan Aslan takes a closer look at the new Embedded Photo Picker.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/02/prepare-your-app-for-resizability-and.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Prepare your app for the resizability and orientation changes in Android 17
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Miguel Montemayor says Android 17 targeting forces large screen resizability and orientation support, pushing apps to adopt adaptive layouts, resilient camera previews, and robust state handling.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://le0nidas.gr/2026/02/08/handle-recyclerviews-scroll-events-in-custom-topappbarscrollbehavior/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Handle RecyclerView’s scroll events in custom TopAppBarScrollBehavior
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Leonidas Partsas implements a custom TopAppBarScrollBehavior that translates RecyclerView scroll into smooth collapse and expansion without partial rendering.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.pamelaahill.com/post/do-i-need-an-umbrella-framework" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Do I need an umbrella framework for my Kotlin Multiplatform app?
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Pamela Hill says iOS-targeted multi-module KMP apps need an umbrella framework to prevent stdlib duplication and incompatible binaries across modules.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://commonsware.com/blog/2026/02/14/random-musings-android-17-beta-1.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Random Musings on the Android 17 Beta 1
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Mark Murphy warns that Android 17 Beta 1 mainly adds behavior hardening that can break apps using a small set of rare features.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/699101/db3c93bc63190117d4/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/02/the-first-beta-of-android-17.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The First Beta of Android 17
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google says Android 17 Beta 1 mostly advances adaptability and media, connectivity, and companion device tooling alongside ongoing privacy, security, and performance work.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.youtube.com/watch?v=Y8huP6eFbZY" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6990ff/003c93bc6319011736/square_Bildschirmfoto_2026-02-15_um_17.36.22.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=Y8huP6eFbZY" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Return... in Expression Bodies?!
</a></div><div>Dave Leeds explores a Kotlin feature change allowing return keywords in expression bodies.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=-6m2D2KTIpE" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Retrofit vs OkHttp
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Amit Shekhar provides a detailed comparison of Retrofit and OkHttp, two popular libraries used by Android developers for networking.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=6Wh1CXzRF2k" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Custom Video Player In Jetpack Compose On Android (Media3 Library)
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner explores the Media3 library along with its Jetpack Compose toolkit to build a custom-styled video player with our own UI letting you control media playback.

</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=HdlAlN_u_-Q" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
API Design at Google: Building Android Libraries
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Alan Viverette and Aurimas Liutikas discuss the challenges and evolution of API design, particularly within the Android ecosystem.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=yD182S7m7Fs" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
No more get() calls in your Koin Module!
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Stevdza-San examines the new Koin Kotlin compiler plugin, which brings auto-detect constructor parameter features and compile-time code transformation, catching errors during the build process
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=7gR7WRHsvSs" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Can we Make It So on Android?
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Peter Friese and Marina Coelho attempting to port their "Make It So" to-do list app from iOS to Android using AI-powered coding agents, specifically Antigravity and Stitch
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=7UMd-XmrQYw" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Exact AI Workflow I Use to Build Apps SOLO (step by step / no fluff)
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Daniel Atitienei presents a detailed AI-powered workflow for developing and launching profitable apps as a solo developer
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=Of6cqKjEBGw" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
What Really Is Structured Concurrency In Kotlin?
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner explains structured concurrency in Kotlin coroutines, using a cooking analogy to illustrate concurrency concepts.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 15 Feb 2026 16:36:53 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-714</guid>
  </item>
  <item>
    <title>Android Weekly Issue #713</title>
    <link>https://androidweekly.net/issues/issue-713/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.runway.team/use-case/white-label?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=feb-8-26" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6985a9/fc3c93bc0a6a010c53/square_square_runway_team_logo.jpeg">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.runway.team/use-case/white-label?utm_source=androidweekly&utm_medium=newsletter&utm_campaign=feb-8-26" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Release white-label apps with a single click 
</a></div><div>Shipping white-label apps used to mean repeating the same steps and signing in and out of Google Play Console dozens of times per release. With Runway, ship everything in one place, just once.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@yassine.sayah/default-vs-buffered-sharedflow-in-kotlin-a-practical-guide-6abe92aad7d7" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Default vs buffered SharedFlow in Kotlin: a practical guide 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Yassine Sayah shows that adding extraBufferCapacity is essential when using tryEmit on SharedFlow to avoid silently dropped events with active collectors.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.insert-koin.io/koin-powered-by-kotlin-compiler-0722f1cc96a4" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Koin Powered by Kotlin Compiler 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Arnaud Giuliani announces a native Kotlin Compiler Plugin that brings compile-time safety and auto-wiring to your dependency injection.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://firebender.com/" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6985aa/223c93bc0a6a010c64/square_firebender.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://firebender.com/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
🔥 Most powerful AI in Android Studio 👊 
</a></div><div>Code 10x faster. Tell Firebender to create full screens, ship features, or fix bugs - and watch it do the work for you. It's been battle tested by the best android teams at companies like Tinder, Adobe, and Instacart.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://sonique6784.medium.com/android-modularization-for-large-teams-part-2-technical-deep-dive-d30a3bfdc08e" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Modularization for Large Teams — Part 2: Technical Deep Dive
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Cedric Ferry shows how ServiceLoader plus Koin module providers enable runtime wiring of feature implementations while the app depends only on API modules for compile-time decoupling.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://dev.to/bansalayush/visualizing-compositionlocal-in-the-composition-tree-2jkg" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Visualizing CompositionLocal in the Composition Tree
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Ayush Bansal shows CompositionLocal values are attached to a node and resolved by upward lookup, so only composables that read them recompose.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://kt.academy/article/compose-stability" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
You don't understand stability in Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Marcin Moskała explains modern Compose stability as reference versus equality change checks under Strong Skipping Mode, with automatic lambda memoization reducing unnecessary recompositions.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://itnext.io/dependency-injection-with-koin-linked-scopes-a305c05f36a7" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Dependency Injection with Koin: Linked Scopes
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Tezov's fifth part of an educational series about dependency injection with Kotlin and Koin. This part introduces a small but important evolution: linked scopes.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/ai/2026/02/koog-x-acp-connect-an-agent-to-your-ide-and-more/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Koog x ACP: Connect an Agent to Your IDE and More
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>rains shows how Koog’s built-in ACP support makes Kotlin agents IDE-connectable through IntelliJ AI Chat with minimal glue code.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6985aa/373c93bc0a6a010c6c/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/02/kotlin-ecosystem-mentorship/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Join the Kotlin Ecosystem Mentorship Program
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains outlines the Kotlin Foundation mentorship pilot that pairs maintainers with newcomers to land a meaningful merged contribution and strengthen Kotlin open source.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.youtube.com/watch?v=Z52Rf4koRlU" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6987bc/d43c93bc0a6a016e62/square_Bildschirmfoto_2026-02-08_um_17.06.42.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=Z52Rf4koRlU" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
These Refactorings Are A Must For Every Android Dev
</a></div><div>Jov Mit covers refactorings that are a important for every Android developer.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=SKwyiNoNzfM&t=680s" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
AGP 9 in Compose Multiplatform: Upgrading an app
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Upgrading Android Gradle Plugin from 8 to 9 in Compose Multiplatform is not a trivial update, so Mykola Miroshnychenko walks you through the necessary changes.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=cLyxWGV6GKg" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to Encrypt Local Preferences In KMP With KSafe
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner shows how we can encrypt and decrypt local preferences in Kotlin Multiplatform for Android, iOS and desktop.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=ZwvkPwXH_9E" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Compose Multiplatform 1.10.0, Ktor 3.4.0 & More
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner goes over what has changed in the Kotlin ecosystem in January 2026.

</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://fragmentedpodcast.com/episodes/303/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How LLMs Work - the 20 minute explainer
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Walk through the full pipeline: tokenization, embeddings, inference — so you understand it well enough to explain it. Walk away with a mental model that you can use for your next dinner party.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=Ca6UWkVWbac" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin 2.3 Release Special (Audio Only)
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Sebastian and Márton host a special, audio-only episode where they discuss everything that’s new and noteworthy in the Kotlin 2.3 release.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Specials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://jonnyzzz.com/blog/2026/02/02/git-fork-pattern/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Git Fork Pattern: Full Checkouts Without the Bloat
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Eugene Petrenko shows how git alternates enable cheap full repo forks that avoid worktree limitations for parallel or agent-driven development.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 08 Feb 2026 16:07:19 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-713</guid>
  </item>
  <item>
    <title>Android Weekly Issue #712</title>
    <link>https://androidweekly.net/issues/issue-712/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://firebender.com/" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/697f69/d23c93bc76330155aa/square_firebender.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://firebender.com/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
🔥 Most powerful AI in Android Studio 👊
</a></div><div>Code 10x faster. Tell Firebender to create full screens, ship features, or fix bugs - and watch it do the work for you. It's been battle tested by the best android teams at companies like Tinder, Adobe, and Instacart.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://doveletter.skydoves.me/preview/articles/kotlin-shared-internals-keep#transitive-sharing-simplifying-complex-hierarchies" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Shared Internals: Kotlin's New Proposal for Cross-Module Visibility
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jaewoong Eum discusses shared internal as a transitive, opt-in cross-module visibility level that replaces friend modules without widening your public API.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.kotlin-academy.com/kotlin-annotation-targets-are-changing-and-kt-73255-b58eef18b6bf" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin Annotation Targets Are Changing and KT-73255
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Burak Karaduman advises using explicit @field or @param targets to avoid Kotlin 2.2 KT-73255 surprises for constructor property annotations.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/ai/2026/01/building-ai-agents-in-kotlin-part-5-teaching-agents-to-forget/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Building AI Agents in Kotlin – Part 5: Teaching Agents to Forget
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains teaches adding threshold-based history compression to Koog strategies so coding agents keep essential decisions without exceeding context limits.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@kmpbits/master-compose-shared-element-transitions-a-smooth-ui-journey-fc483172531a" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Master Compose Shared Element Transitions: A Smooth UI Journey
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>KMP Bits explains Compose Navigation shared element transitions using a SharedTransitionScope and stable keys to avoid flaky recomposition bugs.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/qodana/2026/01/qodana-for-android-kotlin/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Qodana for Android
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains frames Qodana as CI-first Kotlin inspection enforcement for Android teams that scales code quality without replacing Android Lint.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/01/httpsandroid-developers.googleblog.com202506android-embedded-photo-picker.html%20.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Embedded Photo Picker
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google’s embedded photo picker lets apps offer in-place, cloud-aware media selection with scoped URI grants, eliminating photo permissions for Android 14+ devices.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/google-developer-experts/architectural-evolution-and-implementation-strategy-of-the-litert-compiledmodel-api-136b79000100" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Architectural Evolution of the LiteRT CompiledModel API
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Kartikey Rawat outlines LiteRT CompiledModel as a compile-and-cache runtime that auto-targets CPU, GPU, or NPU with zero-copy I/O for lower-latency on-device inference.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.sinasamaki.com/how-to-create-dials-in-jetpack-compose/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to create Dials in Jetpack Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>sinasamaki demonstrates configuring ChromaDial with degree-based state, custom ranges, multi-turn visuals, and snapping, plus a finish callback for costly side effects.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@santimattius/how-to-migrate-to-android-gradle-plugin-agp-9-0-in-android-and-kotlin-multiplatform-projects-cf3c20a5c3ed" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to migrate to AGP 9.0 in Android and Kotlin Multiplatform projects
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Santiago Mattiauda outlines AGP 9.0 upgrade essentials: built-in Kotlin, androidComponents, and KMP module separation via multi-platform library.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/@ranger163/stop-treating-dependency-injection-as-an-android-detail-a-koin-first-walkthrough-a95a3734265d" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Part3: Stop Treating Dependency Injection as an Android Detail
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Ahmed Nassar presents Koin-first DI as a KMP architectural contract that keeps the dependency graph in shared code and reduces platforms to simply starting it.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/697f69/ec3c93bc76330155b0/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://chromadial.sinasamaki.com/?ref=sinasamaki.com" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
ChromaDial
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Beautiful & customizable circular dial components for Compose Multiplatform
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/01/accelerating-your-insights-with-faster.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Accelerating your insights with faster, smarter monetization data
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google highlights Play Console monetization updates that pair faster financial reporting with actionable recommendations and programmatic Orders API access.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.youtube.com/playlist?list=PL9Pfzam3fFde4NtK6Nkca3zsK7Pg2Juqy" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/697ecd/e73c93bc7633013de7/square_Bildschirmfoto_2026-02-01_um_15.58.20.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/playlist?list=PL9Pfzam3fFde4NtK6Nkca3zsK7Pg2Juqy" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
droidcon London 2025
</a></div><div>All the presentations from droidcon London 2025
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=qU_a1ioqOR8" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Explicit Backing Fields in Kotlin 2.3 - What You Need to Know
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Dave Leeds shows you what Explicit Backing Fields are, when you'll want to use them, and what to look out for.

</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=5wJ-MOH6GBQ" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Why you should delete your base classes on Android
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner explains why the base class pattern is an anti-pattern on Android and KMP.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=xBHRK_Qp55c" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How I Create App Store Screenshots 10x Faster
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Daniel Atitienei demonstrates AppScreens, which helps generate App Store screenshots more easily than opening up Figma or Photoshop.

</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=53CKZw9n0ys" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Making Apps Accessible with Kotlin and Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Vanessa Johnson discusses why implementing accessibility is easier than people think, especially with modern tools like the Kotlin semantics modifier in Jetpack Compose.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 01 Feb 2026 14:58:37 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-712</guid>
  </item>
  <item>
    <title>Android Weekly Issue #711</title>
    <link>https://androidweekly.net/issues/issue-711/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://firebender.com/" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6974ef/683c93bc3a090107a5/square_firebender.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://firebender.com/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
🔥 Most powerful AI in Android Studio 👊 
</a></div><div>Code 10x faster. Tell Firebender to create full screens, ship features, or fix bugs - and watch it do the work for you. It's been battle tested by the best android teams at companies like Tinder, Adobe, and Instacart.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://alexzh.com/how-to-fix-the-compose-preview-naming-problem/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to fix the Compose preview naming problem 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Alex Zhukovich explains how to give descriptive names to Compose preview states instead of index-based default names.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://itnext.io/dependency-injection-with-koin-interfaces-and-qualifiers-7a7c078d9689" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Dependency Injection with Koin, interfaces and qualifiers 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Tezov shows how Koin uses interfaces and qualifiers to inject specific implementations of the same contract in Kotlin.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://fandf.co/45qcatG" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6974ef/903c93bc3a090107ae/square_developer_avatar_orange_85x85.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://fandf.co/45qcatG" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Want to start building with React Native? 
</a></div><div>An Android developer's guide to React Native explores the mental shift from Android. Whether from View/XML or Jetpack Compose, learn how React components map to Android's Activities and Intents, discover Flexbox vs XML layouts, and understand state management. Read the full guide.

</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/idea/2026/01/how-to-avoid-common-pitfalls-with-jpa-and-kotlin/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to Avoid Common Pitfalls With JPA and Kotlin
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Teodor Irkhin and Thorben Janssen advise modelling JPA entities as open mutable classes using compiler plugins, not Kotlin data classes or val.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://jonnyzzz.com/blog/2026/01/19/kotlin-dsl-2026/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin DSLs in 2026: Patterns That Stood the Test of Time
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Eugene Petrenko examines patterns that not only survived but have become fundamental to how we build modern JVM applications.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://jonnyzzz.com/blog/2026/01/24/16-ai-agents-documentation-refactor/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How 16 AI Agents Fixed Our Documentation Problem 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Eugene Petrenko used 16 AI agents to refactor docs around a single quick-start command, cutting length 39% and improving navigation for both humans and agents.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://proandroiddev.com/building-a-text-sentiment-classifier-in-kotlin-multiplatform-987ee2da1717" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Building a Text Sentiment Classifier in Kotlin Multiplatform
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Shubham Panchal shows how to target Android, iOS, and Desktop (JVM) with platform-specific Text Sentiment Classifier APIs.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://proandroiddev.com/how-to-create-a-tubelight-effect-in-android-compose-2383befc47b1" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to Create a Tubelight Effect in Android Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Roman Khrupa demonstrates a Compose Canvas sweepGradient animation that produces a tubelight-style neon scan.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://proandroiddev.com/those-red-squiggly-lines-that-dont-break-your-build-understanding-kotlin-s-suspicious-811304f3fd52" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Understanding Kotlin’s “Suspicious Indentation” Warning
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Sehaj Kahlon demystifies Kotlin’s Suspicious Indentation warning so you catch newline-terminated statements that look like continuations.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://proandroiddev.com/swipe-to-dismiss-with-compose-material-3-38445e0143f7" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Swipe-to-Dismiss with Compose Material 3
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Domen Lanišnik shows how Material 3 SwipeToDismissBox handles swipe-to-dismiss or update interactions in Compose lists.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://proandroiddev.com/serverless-ai-for-android-with-firebase-ai-logic-6db446ae2f86" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Serverless AI for Android with Firebase AI Logic
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Stevan Milovanovic writes about building generative, multimodal features on Android without managing backend infrastructure.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://proandroiddev.com/how-i-got-tired-of-writing-boilerplate-in-compose-and-wrote-my-own-emmet-like-plugin-for-android-337e4421fad6" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How I got tired of writing boilerplate in Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Andrew Malitchuk introduces YARC, an Emmet-like DSL plugin that generates Compose UI trees from abbreviations.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://publicobject.com/2026/01/22/dont-block-suspend-functions/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Don’t Block Suspend Functions
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jesse Wilson warns that blocking inside suspend functions breaks coroutines and shows why suspend functions must always suspend rather than block.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/6974ef/553c93bc3a0901079f/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/andrew-malitchuk/yet-another-rapid-compose" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
yet-another-rapid-compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Yet Another Rapid Compose - build Jetpack Compose layouts effortlessly with an intelligent shorthand generator. 
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/01/ready-to-review-some-changes-but-not.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Try using Play Console’s new Save for later feature
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google adds Play Console Save for later so you can hold back selected changes and submit only what is ready for review.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/01/exposed-1-0-is-now-available/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Exposed 1.0 Is Now Available
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Simon Vergauwen reveals Exposed 1.0 with R2DBC support and a stable API that ensures no breaking changes until the next major version.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://fragmentedpodcast.com/episodes/301/" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/69755d/123c93bc3a09011bf2/square_Bildschirmfoto_2026-01-25_um_18.53.14.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://fragmentedpodcast.com/episodes/301/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The AI coding ladder
</a></div><div>Kaushik Gopal and Iury Souza map AI coding into four paradigms so experienced developers can align tooling choices.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=_6PSSkqwbp8" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Everything New in Kotlin 2.3 in Roughly 10 Minutes
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Kotlin 2.3 is packed with nice updates: new language features like the unused return value checker and explicit backing fields, and a lot more.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=r74X0p7R21k" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How To Handle Deep Links With Navigation3
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div> Jov Mit shows how to handle Deep Links with Navigation 3
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=9CwXD9rJnQQ" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Firebase After Hours: Agentic coding with Gemini Skills
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Explore the brand new "Agent Skills" feature in the Gemini CLI. If you've been stuffing everything into a massive GEMINI.md file, you're doing it the hard way.


</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=Jp3Yg1VSRkY" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Gradle 9 Will Break Your KMP Project - Here's the Full Migration Strategy
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner shows the core changes of Gradle 9 to KMP projects, so you can migrate your own projects.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=Fa92Y_TX3iM" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Stop using LaunchedEffect for passing an Argument to a ViewModel
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Stop using LaunchedEffect for passing an Argument to a ViewModel
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=ZEzFi_JrANc" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Gemini CLI Tips & Tricks: The Context Bloat Solution
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Learn how Skills solve the problem of context bloat by using progressive disclosure
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 25 Jan 2026 17:53:28 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-711</guid>
  </item>
  <item>
    <title>Android Weekly Issue #710</title>
    <link>https://androidweekly.net/issues/issue-710/rss.xml</link>
    <description><![CDATA[<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Articles & Tutorials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://fandf.co/49cCAl0" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/696d08/fa3c93bc664f000061/square_developer_avatar_85x85__1_.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://fandf.co/49cCAl0" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Curious about building with React Native?
</a></div><div>An Android developer's guide to React Native breaks down the mental shift, from XML & Activities to components, hooks and state management - especially if you’re coming from View-based or Jetpack Compose. Read the full guide.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://itnext.io/dependency-injection-with-koin-the-minimal-setup-kmp-d696ae2db09f" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Dependency Injection with Koin, the minimal setup (KMP) 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Tezov outlines a minimal Koin configuration approach tailored for Kotlin Multiplatform projects.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/01/the-journey-to-compose-hot-reload-1-0-0/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Journey to Compose Hot Reload 1.0 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Sebastian Sellmair and Azat Abdullin describe stable Compose Hot Reload 1.0 enabling zero-configuration dynamic UI updates in Compose Multiplatform.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 10px 10px 20px;"><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 12px; color: rgb(153, 153, 153); font-style: italic;">Sponsored</span></div></div></div></td></tr></tbody></table></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://firebender.com" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/696d08/ba3c93bc664f00004f/square_firebender.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://firebender.com" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
🔥 Most powerful AI in Android Studio 👊
</a></div><div>Code 10x faster. Tell Firebender to create full screens, ship features, or fix bugs - and watch it do the work for you. It's been battle tested by the best android teams at companies like Tinder, Adobe, and Instacart.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://engineering.mercari.com/en/blog/entry/20260108-naventryscope-the-missing-scope-in-android-hilt/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
NavEntryScope: The missing scope in Android Hilt
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Luca presents NavEntryScope to bridge Hilt’s scope gaps and manage shared dependencies per navigation entry.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/ai/2026/01/building-ai-agents-in-kotlin-part-4-delegation-and-sub-agents/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Building AI Agents in Kotlin – Part 4: Delegation and Sub-Agents
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Bruno Lannoo shows how delegation and sub-agents help structure scalable AI agent architectures in Kotlin.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/01/update-your-projects-for-agp9/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Update your Kotlin projects for Android Gradle Plugin 9.0
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Márton Braun explains the essential changes developers must apply to keep Android projects compatible with Android Gradle Plugin 9.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://proandroiddev.com/the-easiest-way-to-add-haptic-feedback-in-compose-multiplatform-31fc4cb85ea2" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
The Easiest Way to Add Haptic Feedback in Compose Multiplatform
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Suhyeon Kim showcases a declarative haptic-feedback library that makes implementing cross-platform tactile interactions in Compose Multiplatform easy.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://proandroiddev.com/in-out-reified-a-practical-guide-to-kotlin-generics-2beb6b9eb67a" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
in, out, reified: A Practical Guide to Kotlin Generics
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Anshul Vyas breaks down how Kotlin’s in, out, and reified generics enable safer, more flexible type-safe code with examples.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://proandroiddev.com/beyond-flat-lists-build-expressive-material-3-lists-in-compose-65e6f8f355fb" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Beyond Flat Lists: Build Expressive Material 3 Lists in Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Nav Singh showcases Material3 ListItem upgrades, adding segmented variants and integrated selection and click behaviors with expressive elevation, shape, and motion support.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://medium.com/google-developer-experts/supercharging-android-studio-ai-e59e609a84dd" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Supercharging Android Studio AI
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Angélica Oliveira and Aline Ayres explain configuring Android Studio’s AI with MCP servers, alternate models, and prompt libraries to enhance development workflows.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://krossovochkin.com/posts/2026_01_11_kotlin_coroutines_cancellation_and_exception_handling/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin Coroutines Cancellation and Exception Handling
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Vasya Drobushkov clarifies cancellation and exception handling in Kotlin coroutines and suggests relying on safe return types over exceptions.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://victorbrandalise.com/reducing-unnecessary-recompositions-in-jetpack-compose/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Reducing Unnecessary Recompositions in Jetpack Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Victor Brandalise outlines practical techniques to minimize unnecessary recompositions in Jetpack Compose for better performance.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://segunfamisa.com/posts/exploring-custom-text-rendering-in-compose" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Exploring Custom Text Rendering with Jetpack Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Segun Famisa shows how custom text rendering in Compose enables deeper control using TextMeasurer and Canvas.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://joebirch.co/android/building-a-responsive-tab-row-in-jetpack-compose/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Building a Responsive Tab Row in Jetpack Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Joe Birch demonstrates a responsive Compose TabRow that adapts layout based on available space.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://eevis.codes/blog/2026-01-17/beyond-font-scaling-large-content-viewer-with-compose/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Beyond Font Scaling: Large Content Viewer with Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Eevis Panula shows how Compose layouts can adapt content structure, not just text size, to improve accessibility.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Place a sponsored post</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://androidweekly.net/jobs/new" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/696d08/d03c93bc664f000059/square_aw.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://androidweekly.net/jobs/new" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Advertise to more than 80k Android developers!
</a></div><div>We reach out to more than 80k Android developers around the world, every week, through our email newsletter and social media channels. Advertise your Android development related service or product!
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Libraries & Code</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://github.com/iamjosephmj/flinger" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/696c3e/603c93bc136a000e3a/square_Bildschirmfoto_2026-01-18_um_17.24.43.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/iamjosephmj/flinger" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
flinger
</a></div><div>Customizable Fling Physics for Jetpack Compose. Take full control of scroll momentum in LazyColumn, LazyRow, Pagers, and more with 9+ presets, snap behavior, and adaptive physics. 
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/creativedrewy/Mozart" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Mozart
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Mozart is a library that allows you to create Android Live Wallpapers using Jetpack Compose.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://github.com/compose-jindong/jindong" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
jindong
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Declarative Haptic Feedback Library for Compose Multiplatform
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">News</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://blog.jetbrains.com/kotlin/2026/01/compose-multiplatform-1-10-0/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Compose Multiplatform: Navigation 3, and Stable Compose Hot Reload & more
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Elvira Mustafina introduces Compose Multiplatform 1.10.0 with performance, API, and stability improvements across all supported platforms.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://developer.android.com/build/releases/agp-9-0-0-release-notes" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Gradle plugin 9.0.0 - January 2026
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Android Gradle plugin 9.0 is a major release that brings API and behavior changes.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://android-developers.googleblog.com/2026/01/llm-flexibility-agent-mode-improvements.html" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
LLM flexibility, Agent Mode improvements in Android Studio Otter 3 Feature Drop
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Google introduces more flexible LLM selection and enhanced Agent Mode capabilities in Android Studio to support complex, multi-step developer workflows.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Videos & Podcasts</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="20%" align="" valign="top"><div><div class="column-resize-bar"><span class="line"></span><span class="grabber"></span></div></div>
<div class="gl-contains-image"><table class="editor-image  editor-image-vspace-on editor-image-hspace-on" style="min-width: 100%;" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td align="left" valign="top" style="padding: 10px 10px 10px 20px;"><div class="publish-container">
<a href="https://www.youtube.com/watch?v=WQhiA25aExI" target="_blank">
<img alt class="" style="display: block; height: auto !important; max-width: 100% !important;" width="90" border="0" hspace="0" vspace="0" src="https://androidweekly.net/system/images/696c38/d53c93bc136a000d5e/square_Bildschirmfoto_2026-01-18_um_17.25.16.png">
</a></div></td></tr></tbody></table></div></td><td class="editor-col OneColumnMobile" width="80%" align="" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px 10px 10px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=WQhiA25aExI" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
What’s new in Android Studio Otter
</a></div><div>Discover the new features and updates in Android Studio Otter Feature Drops 1, 2, and 3.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top"><div class="gl-contains-spacer"><table class="editor-spacer" width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="" align="center" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="100%"><tbody><tr><td class="spacer-base" width="100%" align="center" valign="top" style="padding-bottom: 15px; height: 1px; line-height: 1px;"><div><img alt width="5" height="1" border="0" hspace="0" vspace="0" src="https://imgssl.constantcontact.com/letters/images/1101116784221/S.gif" style="display: block; height: 1px; width: 5px;"></div></td></tr></tbody></table></td></tr></tbody></table></div></td></tr></tbody></table><table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=1TYeFGufawk" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
XR: Virtually here
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Join hosts Tor, Chet, and Romain as they sit down with Diego Perez (Android Studio) and Patrick Fuentes (Developer Relations) to explore the new frontiers of Android XR.

</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=fngzEKzTVfc" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to get the right CoroutineScope
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>We know we're not supposed to use `GlobalScope`. Dave Leeds examines what CoroutineScope we should use instead.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://fragmentedpodcast.com/episodes/300/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
From Vibe coding to Software engineering - Fragmented
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Fragmented is changing. New direction, new cohost. Kaushik explains the pivot from Android to AI development and introduces Iury Souza.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=R4sTHK2QoWw" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Nav2 vs. Nav3 - Which Library For a Production Android App In 2026?
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner talks about which navigation library in Jetpack Compose is recommended in a real production Android app in early 2026.

</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://www.youtube.com/watch?v=W9d06eRyNU8" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
How to Configure MCP Servers and Custom Models in Android Studio
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Angélica Oliveira and Aline Ayres show how to enhance Android Studio AI with MCP servers, external models, and custom prompt libraries.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="editor-col OneColumnMobile" width="100%" align="" valign="top" style="background-color: rgb(51, 181, 229);" bgcolor="33B5E5"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text editor-text" align="left" valign="top" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; line-height: 1.2; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div><span style="font-size: 18px; color: rgb(255, 255, 255); font-family: Arial, Verdana, Helvetica, sans-serif; font-weight: bold;">Specials</span></div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://chethaase.medium.com/once-upon-a-time-there-was-a-podcast-5851ebd6a063" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Once Upon a Time, there was a podcast
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Chet Haase tells a "fictional" podcast origin story to reflect on how creative projects change once reality meets initial enthusiasm.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://paul-samuels.com/blog/2026/01/15/make-nice-tools/" target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
Make nice tools
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Paul Samuels shares insights from evolving a developer tool to improve developer experience by reducing friction, enhancing usability, and fostering broader contribution
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://surveys.jetbrains.com/s3/8723a6b7c448 " target="_blank" style="font-size: 16px; color: #007EA8; font-weight: bold; font-style: normal; text-decoration: underline;">
3-minute Android Developers Survey
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>JetBrains is running a quick 3-minute survey for Android developers about cross-platform development, including Kotlin-based code sharing: what you’ve heard of, how you feel about different approaches, and what influences the decision to use them (or not). As a thank you, thoughtful responses can enter a raffle to win either a $50 Amazon gift card or a 6-month JetBrains All Products Pack subscription.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
    <pubDate>Sun, 18 Jan 2026 16:25:49 +0000</pubDate>
    <guid>https://androidweekly.net/issues/issue-710</guid>
  </item>

  </channel>
</rss>
