<?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 #671</title>
  <link>https://androidweekly.net/issues/issue-671</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/the-roi-of-mobile-release-management?utm_source=newsletter&utm_medium=android-weekly&utm_campaign=apr-20-25" 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/6803fe/113c93bc47c5000790/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/webinar/the-roi-of-mobile-release-management?utm_source=newsletter&utm_medium=android-weekly&utm_campaign=apr-20-25" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Have you paid your 20% mobile release “tax”? 
</a></div><div>Join mobile leaders from Skyscanner and SoFi on May 8 to find out just how much your outdated mobile release processes are actually costing you—and learn the ROI of updating how you work and ship. Register for the live discussion.

</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="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://joebirch.co/android/exploring-jetpack-compose-dockedsearchbar/" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Exploring Jetpack Compose: DockedSearchBar 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Joe Birch explores the DockedSearchBar composable in Jetpack Compose Material3, highlighting its docked layout that integrates seamlessly within app content and supports customizable input fields and expandable search suggestions.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; 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/androiddevelopers/netflix-app-testing-at-scale-eb4ef6b40124" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Netflix App Testing At Scale 
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Ken Yee of Netflix outlines their scalable Android testing strategy, emphasizing team-owned tests, layered test types, and broad physical device coverage to ensure quality and reduce flakiness.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="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.instabug.com/blog/benchmarking-ai-code-fix-mobile-crashes?utm_source=androidweekly&utm_medium=newsletters&utm_campaign=androidweekly-q125-ai-code-fix-benchmarks" 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/67fe52/853c93bc0f85000dbb/square_IBG-Logo_85px.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.instabug.com/blog/benchmarking-ai-code-fix-mobile-crashes?utm_source=androidweekly&utm_medium=newsletters&utm_campaign=androidweekly-q125-ai-code-fix-benchmarks" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
AI Model Showdown: Who Fixes Android Crashes Best? 
</a></div><div>See how AI models stack up at generating code fixes for Android and iOS crashes. Instabug benchmarks the leading models from OpenAI, Google, Anthropic, and Meta to reveal surprising platform-specific strengths and which models deliver the most accurate solutions for your debugging arsenal.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="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.kotlin-academy.com/maps-in-jetpack-compose-a-beginners-guide-a7f01e1c3ff4" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Maps in Jetpack Compose — A beginner’s guide
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Anitaa Murthy provides a beginner-friendly guide to integrating Google Maps into Jetpack Compose, covering setup, map configuration, and adding markers with customizable options.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; 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/2025/04/the-story-behind-k2-mode-and-how-it-works/" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
The Story Behind K2 Mode and How It Works
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Yan Zhulanow details the development of IntelliJ IDEA’s K2 mode, highlighting its concurrency-friendly architecture, elimination of global locks, and the introduction of the Kotlin Analysis API to enhance performance, scalability, and maintainability of Kotlin support in 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://levelup.gitconnected.com/your-codebase-is-slowly-turning-into-a-monster-88f2f7f358f7" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Your App Codebase is Slowly Turning Into a Monster
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Narayan Panthi discusses how growing Android codebases can become unmanageable over time and advocates for modularization, scalable architecture, and adopting modern technologies to maintain performance and developer productivity.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; 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/understanding-execution-order-in-jetpack-compose-disposableeffect-launchedeffect-and-composables-d2d0b75b7ec8" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Understanding DisposableEffect, LaunchedEffect, and Composables
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Sahil Thakar clarifies the execution order of key side-effect functions in Jetpack Compose, helping developers better manage side effects and lifecycle events.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; 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/configuring-multiple-sqlite-databases-in-android-with-sqldelight-2-79fa2769b522" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Configuring multiple SQLite databases in Android with SQLDelight 2
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Amanda Hinchman demonstrates configuring multiple SQLite databases in Android using SQLDelight 2, integrating Hilt and KSP to manage distinct database instances within a modular architecture.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; 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/kotlin-coroutines-the-real-difference-between-job-cancel-and-scope-cancel-05e1d9dd5245" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Kotlin Coroutines: The real difference between Job.cancel() and Scope.cancel()
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Anatolii Frolov explains the key difference between job.cancel() and scope.cancel() in Kotlin coroutines, focusing on their impact on coroutine lifecycle management in 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://proandroiddev.com/understanding-kotlin-generics-through-a-fantasy-story-6143b49e0c4d" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Understanding Kotlin Generics Through a Fantasy Story
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Suhyeon Kim explains Kotlin generics through a fantasy narrative, illustrating concepts like variance, type erasure, and reified types to make them more accessible.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; 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/migrating-to-kotlin-2-0-in-your-jetpack-compose-project-315426b88d66" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Migrating To Kotlin 2.0 In Your Jetpack Compose Project
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Tomer Pacific outlines the steps to migrate a Jetpack Compose project to Kotlin 2.0, emphasizing the adoption of the Compose Compiler Gradle plugin and the transition to Gradle Version Catalogs for managing 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="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; 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/lint-be-gone-speed-up-your-android-release-apk-builds-aafb7cf430a7" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Lint Be Gone: Speed Up Your Android Release APK Builds
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Ademir Queiroga explains how disabling the lintVitalAnalyzeRelease task in Gradle can significantly reduce Android release APK build times, particularly in CI environments where linting isn’t essential.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; 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/getting-started-with-material-design-3-in-jetpack-compose-e2e6db2b9fce" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Getting Started with Material Design 3 in Jetpack Compose
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Mubarak Native offers a practical introduction to using Material Design 3 in Jetpack Compose, focusing on theming and updated components for building modern, adaptive 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://proandroiddev.com/making-android-code-cleaner-with-use-cases-a-practical-approach-using-kotlin-coroutines-2700e724c4fd" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Making Android Code Cleaner with Use Cases
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Siarhei Krupenich advocates for replacing bloated interactors with single-responsibility use cases in Kotlin Coroutines to improve testability, maintainability, and adherence to Clean Architecture principles.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; display: block; word-wrap: break-word; padding: 10px 20px;"><div></div><div class="text-container galileo-ap-content-editor"><div><div>
<a href="https://carrion.dev/en/posts/sealed-classes-domain-modeling/" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Leveraging Sealed Classes and Interfaces for Better Domain Modeling
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Ignacio Carrión demonstrates how Kotlin’s sealed classes and interfaces can enhance domain modeling by enabling exhaustive when expressions, ensuring type safety, and providing clear, maintainable representations of domain 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="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/6803fe/503c93bc47c50007d1/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: #0099CC; 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/Abhay-cloud/JsonVisualizer" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
JsonVisualizer
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>A cross-platform desktop application for visualizing and exploring JSON data built with Compose 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/amitshekhariitbhu/Learn-Kotlin-Flow" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Learn-Kotlin-Flow
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Learn Kotlin Flow by real examples 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://amzn.github.io/app-platform/" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
App Platform
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Amazon introduces App Platform, a lightweight framework for Kotlin Multiplatform projects that emphasizes modular architecture, lifecycle-aware scopes, and decoupled UI through presenters and renderers, with default support for kotlin-inject-anvil and 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/2025/04/kotlinconf-2025-last-tickets-and-highlights/" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
KotlinConf 2025: Last Tickets, Epic Talks, an Evening to Remember & More
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>From not-to-miss sessions to the legendary party, here’s a quick preview of everything waiting for you in Copenhagen, Denmark, on May 21–23.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="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=jfrHUpjxGjo" 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/680461/c23c93bc47c50015a8/square_Bildschirmfoto_2025-04-20_um_11.54.53.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=jfrHUpjxGjo" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Earning Google’s Recognition
</a></div><div>In this interview, Harun shares his journey from humble beginnings to Google recognition, highlighting the impact of tech communities, overcoming challenges, and the role of event organizing and mentoring in his growth.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="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=xrxC5gRNV48" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Clean Architecture: The ONE Change That Transforms Use Cases
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner goes over why 99% of Android devs misunderstand use cases which leads to an overcomplicated useless architecture and how you can avoid that.
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; 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=dqf6AACOxKc" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Every Developer Needs a Side Hustle - Coding Vlog (ep. 2)
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Daniel Atitienei shares thoughts on why you need a side hustle as a software engineer.


</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="galileo-ap-layout-editor" style="min-width: 100%;"><tbody><tr><td class="content editor-col OneColumnMobile" width="100%" align="left" valign="top"><div class="gl-contains-text"><table width="100%" style="min-width: 100%;" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="editor-text content-text" align="left" valign="top" style="line-height: 1.5; font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: #505050; text-align: left; 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=dllAAFuqmt4" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Ktor vs. Spring Boot - Which Backend Framework Is Best For Mobile Developers?
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Philipp Lackner compares two popular backends among Kotlin developers: Spring Boot 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="https://www.youtube.com/watch?v=LSx5Ct4dPBc" target="_blank" style="font-size: 16px; color: #0099CC; font-weight: bold; font-style: normal; text-decoration: underline;">
Android Devs Live Stream - 16-Apr-2025
<span class="main-url" style="color: #333333; font-size: 10px;">
</span>
</a></div><div>Jov Mit's live stream recording, focusing on: Compose: Composition, Recomposition, Optimization and AI Integrations for Android Devs
</div></div></div></td></tr></tbody></table></div></td></tr></tbody></table>
]]></description>
  <pubDate>Sun, 20 Apr 2025 09:55:50 +0000</pubDate>
  <guid>https://androidweekly.net/issues/issue-671</guid>
</item>


  </channel>
</rss>
