# android-development

Android is a mobile operating system and development platform with tools, APIs, source code, and documentation for building Android applications and the operating system.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Starting Android at Khan Academy

DevFeed: [Starting Android at Khan Academy](<https://devfeed.tech/articles/starting-android-at-khan-academy-27408.md>)

Original publisher: [Read original article](<http://engineering.khanacademy.org/posts/starting-android.htm>)

Author: Khan Academy

Published: 2016-02-29T23:00:00Z

Content type: article

Language: en

Sources: [Khan Academy](<https://devfeed.tech/sources/khan-academy.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Development](<https://devfeed.tech/topics/development.md>), [Library](<https://devfeed.tech/topics/library.md>), [modules](<https://devfeed.tech/topics/modules.md>), [ci](<https://devfeed.tech/topics/ci.md>), [Mocking](<https://devfeed.tech/topics/mocking.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mocking](<https://devfeed.tech/tags/mocking.md>), [module](<https://devfeed.tech/tags/module.md>), [modules](<https://devfeed.tech/tags/modules.md>), [news](<https://devfeed.tech/tags/news.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [picasso](<https://devfeed.tech/tags/picasso.md>), [play-store](<https://devfeed.tech/tags/play-store.md>), [pre-commit](<https://devfeed.tech/tags/pre-commit.md>), [retrofit](<https://devfeed.tech/tags/retrofit.md>), [test](<https://devfeed.tech/tags/test.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

Khan Academy describes its first Android app, launched in August 2015, and the engineering practices used to build it. The team adopted established Android and open-source libraries, separated Android-independent core code from the app module, and used fast JVM tests and continuous integration.

### Source excerpt

By Ben Komalo The journey of a thousand miles... In March, 2015--almost 1 year ago to the day--we ... Read more

## Setup On Device Gemma 4 Android Development on Emulator

DevFeed: [Setup On Device Gemma 4 Android Development on Emulator](<https://devfeed.tech/articles/setup-on-device-gemma-4-android-development-on-emulator-29460.md>)

Original publisher: [Read original article](<https://medium.com/mobile-app-development-publication/setup-on-device-gemma-4-android-development-on-emulator-738876f03733?source=rss----f9c208bdbb09---4>)

Author: Elye - A Dev By Grace

Published: 2026-09-11T14:27:55Z

Content type: tutorial

Language: en

Sources: [Mobile App Development Publication - Medium](<https://devfeed.tech/sources/mobile-app-development-publication-medium.md>)

Topics: [gemma4](<https://devfeed.tech/topics/gemma4.md>), [Android](<https://devfeed.tech/topics/android.md>), [Emulator](<https://devfeed.tech/topics/emulator.md>), [android-development](<https://devfeed.tech/topics/android-development.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [artificial-intelligence](<https://devfeed.tech/tags/artificial-intelligence.md>), [emulator](<https://devfeed.tech/tags/emulator.md>), [gemma](<https://devfeed.tech/tags/gemma.md>), [gemma-4](<https://devfeed.tech/tags/gemma-4.md>), [google](<https://devfeed.tech/tags/google.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [on-device](<https://devfeed.tech/tags/on-device.md>)

### AI overview

A tutorial explaining how to set up and run the Gemma 4 large language model locally on an Android Emulator, including downloading and testing the Google AI Edge Gallery sample app. It notes that emulator storage and memory may affect model use.

### Source excerpt

Create Android Project with Downloadable Android On Device Gemma 4 Model Continue reading on Mobile App Development Publication "

## From Permissions to Sessions: Rethinking Location Access in Android 17

DevFeed: [From Permissions to Sessions: Rethinking Location Access in Android 17](<https://devfeed.tech/articles/from-permissions-to-sessions-rethinking-location-access-in-android-17-22946.md>)

Original publisher: [Read original article](<https://proandroiddev.com/from-permissions-to-sessions-rethinking-location-access-in-android-17-5a13124b777d?source=rss----c72404660798---4>)

Author: Nav Singh

Published: 2026-09-09T01:15:51Z

Content type: tutorial

Language: en

Sources: [ProAndroidDev - Medium](<https://devfeed.tech/sources/proandroiddev-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [android-permissions](<https://devfeed.tech/tags/android-permissions.md>), [android17](<https://devfeed.tech/tags/android17.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [compose](<https://devfeed.tech/tags/compose.md>), [development](<https://devfeed.tech/tags/development.md>), [feature](<https://devfeed.tech/tags/feature.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [permission](<https://devfeed.tech/tags/permission.md>)

### AI overview

A tutorial on implementing Android 17's system-rendered Location Button in Jetpack Compose. The button uses the USE_LOCATION_BUTTON permission and grants precise location for the current session, with local rendering fallback on older Android versions or when remote rendering fails.

### Source excerpt

Image generated using Gemini In this article, we will learn how to implement the new 📍Location button introduced in Android 17 in Jetpack Compose-based Android applications. Android 17 adds a system-rendered 📍Location Button that we can drop into the layout via a Jetpack library, and tapping it gives the app precise location for that session only, gated by a new USE_LOCATION_BUTTON permission. What the feature is Android now exposes a system-owned, standard location button that we can embed in our UI instead of designing a custom control. When the user taps it, the system handles the permission flow, then grants the app precise location for the current session only, rather than long-lived access. How it changes permissions Instead of immediately requesting ACCESS_FINE_LOCATION (and maybe ACCESS_COARSE_LOCATION) at runtime, we declare the new USE_LOCATION_BUTTON permission to host the button. <!-- Standard Coarse and Fine Location Permissions + onlyForLocationButton --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:usesPermissionFlags="onlyForLocationButton"/> <!-- Required system permission for rendering the LocationButton --> <uses-permission android:name="android.permission.USE_LOCATION_BUTTON" />Developer benefits Less custom permission boilerplate: We lean on system UX and the Jetpack library for the hardest parts of location consent. [versions] locationbuttonCompose = "1.0.0-alpha01" [libraries] androidx-locationbutton-compose = { group = "androidx.core.locationbutton", name = "locationbutton-compose", version.ref = "locationbuttonCompose" } Higher trust and clarity for users: the control looks and behaves consistently across apps, and session-only precise access is easier to understand than broader access. Implementation As we all know, Android development is now Compose-first, so we will implement it using the LocationButton composable provided by th

## Proficient Android AI training program addresses AI-agent workflows for Android teams

DevFeed: [Proficient Android AI training program addresses AI-agent workflows for Android teams](<https://devfeed.tech/articles/android-development-is-changing-fast-don-t-be-the-engineer-catching-up-later-37908.md>)

Original publisher: [Read original article](<https://newsletter.jorgecastillo.dev/p/android-development-is-changing-fast>)

Author: Jorge Castillo

Published: 2026-08-25T07:21:15Z

Content type: opinion

Language: en

Sources: [Effective Android](<https://devfeed.tech/sources/effective-android.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [AI Agent](<https://devfeed.tech/topics/ai-agent.md>), [Development](<https://devfeed.tech/topics/development.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [ai-coding-agents](<https://devfeed.tech/tags/ai-coding-agents.md>), [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [productivity](<https://devfeed.tech/tags/productivity.md>), [workflows](<https://devfeed.tech/tags/workflows.md>)

### AI overview

The author describes common problems Android teams encounter when using AI coding agents, including repeated context, nondeterministic output, poorly reviewed code, generic prompts, fragile tests, and oversized pull requests. The article announces Proficient Android AI, a practical training program focused on improving AI-agent workflows for Android engineers and teams.

### Source excerpt

Proficient Android AI teaches Android engineers how to get ahead with AI agents now: better output, fewer wasted tokens, more deterministic results, and workflows built for real Android teams.

## Build intelligent Android apps: Introduction to Jetpacker

DevFeed: [Build intelligent Android apps: Introduction to Jetpacker](<https://devfeed.tech/articles/build-intelligent-android-apps-introduction-to-jetpacker-22681.md>)

Original publisher: [Read original article](<http://android-developers.googleblog.com/2026/07/build-intelligent-android-apps-introduction-jetpack.html>)

Author: Android Developers (noreply@blogger.com)

Published: 2026-07-21T13:00:00Z

Content type: tutorial

Language: en

Sources: [Android Developers Blog](<https://devfeed.tech/sources/android-developers-blog-3.md>)

Topics: [android-development](<https://devfeed.tech/topics/android-development.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [On-device AI](<https://devfeed.tech/topics/on-device-ai.md>), [Inference](<https://devfeed.tech/topics/inference.md>), [genai](<https://devfeed.tech/topics/genai.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [App](<https://devfeed.tech/topics/app.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [apps](<https://devfeed.tech/tags/apps.md>), [genai](<https://devfeed.tech/tags/genai.md>), [google](<https://devfeed.tech/tags/google.md>), [inference](<https://devfeed.tech/tags/inference.md>), [on-device](<https://devfeed.tech/tags/on-device.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This introduction to a technical blog series presents Jetpacker, an open-source Android showcase app built for Google I/O. It outlines choices involving on-device, cloud, and hybrid inference, Android system integration, and agentic flows, with later posts promising implementation guidance and code examples.

### Source excerpt

Posted by Jolanda Verhoef, Senior Developer Relations Engineer, Android Developer Relations Building GenAI features in your app usually means navigating through various models, APIs and architecture choices: Execution location: Where does your model run? On device, in the cloud, or both? Complexity: How complex is your setup? Are you doing a single inference call or do you need a more agentic flow? In-app or Android System: Should your feature be built into your Android app or does it fit better as an Android system integration? In this blog post series we'll navigate these choices with you. We will take you along on a journey, starting with a basic mobile app and transforming it into a personalized, intelligent, and agentic experience. Jetpacker: a demo travel app Jetpacker is a technical showcase app that our team built from the ground up for this year's Google I/O (built using Antigravity). At its core, Jetpacker helps users plan, explore, and enjoy their next big adventure. It shows an overview of your trips, the itinerary of each trip, and details of each event on that trip. Of course following all best practices of Android development, including a beautifully expressive Material UI design. And best of all? It's fully open source! Today we are publishing a series of technical blog posts diving deep into each of these features. We'll provide detailed implementation steps, code snippets, and architectural insights to help you build your own intelligent Android applications. On-device intelligence On-device features in Jetpacker: Summarizing trip itineraries, managing expenses, and voice notes Using an on-device model comes with no additional cloud inference costs, means you don't have to worry about internet connectivity, and lets users be confident that private information will be processed locally, on the device, without any of their data being sent to the cloud. In Jetpacker, we chose on-device inference for three of our features: The trip overview feature tra

## Google IO 26: Gemini, Big Rocks, Opportunities for Android

DevFeed: [Google IO 26: Gemini, Big Rocks, Opportunities for Android](<https://devfeed.tech/articles/google-io-26-gemini-big-rocks-opportunities-for-android-29457.md>)

Original publisher: [Read original article](<https://medium.com/mobile-app-development-publication/google-io-26-gemini-big-rocks-opportunities-for-android-2d71e00c9bfb?source=rss----f9c208bdbb09---4>)

Author: Elye - A Dev By Grace

Published: 2026-07-05T09:06:38Z

Content type: article

Language: en

Sources: [Mobile App Development Publication - Medium](<https://devfeed.tech/sources/mobile-app-development-publication-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Google](<https://devfeed.tech/topics/google.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [AI Models](<https://devfeed.tech/topics/ai-models.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [AI tools for developers](<https://devfeed.tech/topics/ai-tools-for-developers.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [ai-models](<https://devfeed.tech/tags/ai-models.md>), [ai-tools-for-developers](<https://devfeed.tech/tags/ai-tools-for-developers.md>), [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [gemini](<https://devfeed.tech/tags/gemini.md>), [google](<https://devfeed.tech/tags/google.md>), [google-io](<https://devfeed.tech/tags/google-io.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>)

### AI overview

This article reviews Google I/O 26 with a focus on Gemini models, developer tools, the Android ecosystem, Android 17, and opportunities involving UI, performance, and AI.

### Source excerpt

In the AI Age, Google continue to thrive in its mobile ecosystem Continue reading on Mobile App Development Publication "

## Android 17: 15 Important Changes to Keep Your App Working

DevFeed: [Android 17: 15 Important Changes to Keep Your App Working](<https://devfeed.tech/articles/android-17-15-important-changes-to-keep-your-app-working-29453.md>)

Original publisher: [Read original article](<https://medium.com/mobile-app-development-publication/android-17-15-important-changes-to-keep-your-app-working-99a93ae85f54?source=rss----f9c208bdbb09---4>)

Author: Elye - A Dev By Grace

Published: 2026-05-24T14:13:07Z

Content type: tutorial

Language: en

Sources: [Mobile App Development Publication - Medium](<https://devfeed.tech/sources/mobile-app-development-publication-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Development](<https://devfeed.tech/topics/development.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [app-development](<https://devfeed.tech/tags/app-development.md>), [coding](<https://devfeed.tech/tags/coding.md>), [development](<https://devfeed.tech/tags/development.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [performance](<https://devfeed.tech/tags/performance.md>), [software-development](<https://devfeed.tech/tags/software-development.md>)

### AI overview

This article outlines 15 changes developers should consider when preparing Android apps for Android 17, with emphasis on maintaining compatibility, performance, security, and Play Store compliance.

### Source excerpt

Prepare Your App for a More Secure, High Performance, and Android XR Ready Future. Continue reading on Mobile App Development Publication "

## An Android Developer's Journey from Learning to Build Apps to Practicing the Craft

DevFeed: [An Android Developer's Journey from Learning to Build Apps to Practicing the Craft](<https://devfeed.tech/articles/leave-me-behind-22819.md>)

Original publisher: [Read original article](<http://androidessence.com/leave-me-behind/>)

Author: Adam McNeilly

Published: 2026-05-17T00:00:00Z

Content type: opinion

Language: en

Sources: [Android Essence](<https://devfeed.tech/sources/android-essence.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Java](<https://devfeed.tech/topics/java.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [AdventureX 2026](<https://devfeed.tech/topics/adventurex2026.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [app](<https://devfeed.tech/tags/app.md>), [hackathons](<https://devfeed.tech/tags/hackathons.md>), [java](<https://devfeed.tech/tags/java.md>), [learning](<https://devfeed.tech/tags/learning.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

The author reflects on learning Android development, beginning with a todo list app and later developing and maintaining applications with practical benefits. The article emphasizes learning from courses, practicing by building, and connecting with other software engineers through hackathons.

### Source excerpt

"If you don't learn how to use AI, you're going to be left behind." So leave me behind. I learned to build Android applications in 2014. I was in college taking a Java programming class, when a classmate shared a free online course to learn Android development. The goal was short: build a todo list app with local storage. When I completed the minimum requirements, I unplugged my phone from my laptop and went over to my parents to show them what I built. I often refer to this as my "lightbulb moment". Here in my hands was a real, tangible piece of software that I built and could interact with. It wasn't the first time I programmed something, but it was the first time I had an application on a device that I could carry over and show someone. The app lived in my pocket, always available when I needed it, to help me stay organized and productive.

## Android Development on Android: A Self-Contained Setup

DevFeed: [Android Development on Android: A Self-Contained Setup](<https://devfeed.tech/articles/android-development-on-android-a-self-contained-setup-38660.md>)

Original publisher: [Read original article](<https://krossovochkin.com/posts/2026_04_26_android_development_on_android/>)

Published: 2026-04-26T00:00:00Z

Content type: tutorial

Language: en

Sources: [Vasya Drobushkov](<https://devfeed.tech/sources/vasya-drobushkov.md>)

Topics: [Termux](<https://devfeed.tech/topics/termux.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Java](<https://devfeed.tech/topics/java.md>), [Git](<https://devfeed.tech/topics/git.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [build](<https://devfeed.tech/tags/build.md>), [cli](<https://devfeed.tech/tags/cli.md>), [development](<https://devfeed.tech/tags/development.md>), [git](<https://devfeed.tech/tags/git.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [java](<https://devfeed.tech/tags/java.md>)

### AI overview

A practical guide to setting up Android development directly on an Android phone with Termux. It covers installing the JDK, Android command-line tools, platform and build tools, Gradle, and a Termux-compatible aapt2 binary, then cloning and assembling a project and authenticating Gemini.

### Source excerpt

I use my phone on a daily basis for dozens of various things. This is truly my pocket computer that helps me with many different tasks. Since the first time I had an Android phone until nowadays, the flexibility of the platform has been very astonishing Recently, I've learned about Termux - it is a UNIX terminal running on the phone. Yes, just directly on a mobile phone you have access to git, ssh, curl, and other terminal commands. It is very powerful by itself to be able to connect to a remote server from a phone and do sth, but one thing came to my mind - whether it can be used to work on Android projects

## Jetpack's evolution, ecosystem complexity, and a curated Android development stack

DevFeed: [Jetpack's evolution, ecosystem complexity, and a curated Android development stack](<https://devfeed.tech/articles/refuelling-your-jetpack-26165.md>)

Original publisher: [Read original article](<https://dev.to/tkuenneth/refuelling-your-jetpack-d8i>)

Author: Thomas Künneth

Published: 2026-03-08T11:36:03Z

Content type: tutorial

Language: en

Sources: [Thomas Künneth](<https://devfeed.tech/sources/thomas-kunneth.md>)

Topics: [Jetpack](<https://devfeed.tech/topics/jetpack.md>), [Android](<https://devfeed.tech/topics/android.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Library](<https://devfeed.tech/topics/library.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [migration](<https://devfeed.tech/topics/migration.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-architecture](<https://devfeed.tech/tags/android-architecture.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [architecture-components](<https://devfeed.tech/tags/architecture-components.md>), [coding](<https://devfeed.tech/tags/coding.md>), [community](<https://devfeed.tech/tags/community.md>), [compatibility](<https://devfeed.tech/tags/compatibility.md>), [dependency](<https://devfeed.tech/tags/dependency.md>), [deprecated](<https://devfeed.tech/tags/deprecated.md>), [development](<https://devfeed.tech/tags/development.md>), [ecosystem](<https://devfeed.tech/tags/ecosystem.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [inclusive](<https://devfeed.tech/tags/inclusive.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpackcompose](<https://devfeed.tech/tags/jetpackcompose.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [library](<https://devfeed.tech/tags/library.md>), [migration](<https://devfeed.tech/tags/migration.md>), [software](<https://devfeed.tech/tags/software.md>)

### AI overview

This article traces Jetpack's evolution from Android Architecture Components and the Support Library to Jetpack and the androidx namespace. It argues that Jetpack's growth to more than 130 artifacts, along with deprecated libraries and multiple solutions for common tasks, has created an ecosystem that developers need to navigate using a curated recommended stack.

### Source excerpt

If you are an Android developer, you know Jetpack. It changed how we build Android apps. But that was long ago. Today, the ecosystem is shifting again. We aren't just building for one platform anymore. We are building for the world. Let me show you how to take the Jetpack libraries you know and use them to fuel a new generation of applications that run everywhere. From Jetpack to a unified architecture First, let's ground ourselves. What exactly is Jetpack? It's more than just a bag of libraries. It is Google's opinionated answer to Android development. It unbundled features from the OS, so we could update our apps without waiting for Android system updates. It gave us backward compatibility. Most importantly, it gave us guidance. It stopped the wild west of Android development and brought us a standard way to build. Before Jetpack, we lived in an era of fragmentation. New features were tied to the OS. If you wanted the latest UI on an older phone, you were out of luck. Eventually, Google introduced the Support Library to fix this. It sort of worked, but it was a mess. We had v4 support, v7 appcompat, v13... it was dependency hell. We needed a reboot. That reboot came in two steps. In 2017, Google announced Android Architecture Components at I/O--ViewModel, Room, Lifecycle, LiveData--and they went 1.0 stable that November. That was the how to architect piece. Then, at I/O 2018, came Jetpack: the umbrella name and the migration to androidx.*. Eventually, everything moved to the new namespace. Libraries were strictly unbundled--own versions, own cycles, semantic versioning so we could reason about compatibility. So: Architecture Components in 2017, Jetpack and androidx in 2018. Today, we have solved one problem but created another: The Jetpack Jungle. There are now over 130 artifacts in the suite. We have historical baggage. Deprecated libraries still sit next to modern ones--for example lifecycle-extensions, which Google deprecated and replaced with separate lifecycle-ru

## Sharing ViewModels Across Android and iOS in Kotlin Multiplatform Projects

DevFeed: [Sharing ViewModels Across Android and iOS in Kotlin Multiplatform Projects](<https://devfeed.tech/articles/is-androidx-viewmodel-the-best-choice-for-kmp-projects-gustavo-fao-valvassori-38251.md>)

Original publisher: [Read original article](<https://touchlab.co/kmp-view-models>)

Published: 2026-03-02T00:00:00Z

Content type: opinion

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [MVVM](<https://devfeed.tech/topics/mvvm.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Compose](<https://devfeed.tech/topics/compose.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [compose](<https://devfeed.tech/tags/compose.md>), [design-patterns](<https://devfeed.tech/tags/design-patterns.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [mvvm](<https://devfeed.tech/tags/mvvm.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

This article explains the MVVM pattern and examines how sharing ViewModels across Android and iOS affects developer experience in Kotlin Multiplatform projects. It discusses separation of concerns, binders, Compose, SKIE, and Android ViewModel lifecycle behavior, including configuration changes.

### Source excerpt

Sharing ViewModels between platforms affects the iOS developer experience. In this post we will discuss this topic and some possible solutions in KMP projects that respect the native feel of iOS and Android.

## Local AI Setup Guide for Android Developers

DevFeed: [Local AI Setup Guide for Android Developers](<https://devfeed.tech/articles/zero-to-ai-an-android-developer-s-vital-local-setup-24918.md>)

Original publisher: [Read original article](<https://blog.blundellapps.co.uk/zero-to-ai-an-android-developers-vital-local-setup/>)

Author: blundell

Published: 2026-01-18T14:03:28Z

Content type: tutorial

Language: en

Sources: [Blundell](<https://devfeed.tech/sources/blundell.md>)

Topics: [android-development](<https://devfeed.tech/topics/android-development.md>), [Ollama](<https://devfeed.tech/topics/ollama.md>), [gemma](<https://devfeed.tech/topics/gemma.md>), [Large Language Model](<https://devfeed.tech/topics/llm.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [beginner](<https://devfeed.tech/tags/beginner.md>), [beginner-reference](<https://devfeed.tech/tags/beginner-reference.md>), [gemma](<https://devfeed.tech/tags/gemma.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [intermediate](<https://devfeed.tech/tags/intermediate.md>), [llm](<https://devfeed.tech/tags/llm.md>), [local](<https://devfeed.tech/tags/local.md>), [offline](<https://devfeed.tech/tags/offline.md>), [ollama](<https://devfeed.tech/tags/ollama.md>), [reference](<https://devfeed.tech/tags/reference.md>)

### AI overview

A Day 1 setup guide for Android developers that recommends AI-focused browser resources and Ollama for running open-source models locally. It discusses Gemma 3, including its multimodal capabilities, 128k-token context window, and hardware considerations.

### Source excerpt

Forget just installing Android Studio and calling it a day. To operate at scale, you need a local environment that augments your engineering intuition with LLM-powered efficiency. Here is your Day 1 guide to setting up your machine for success. The post Zero to AI: An Android Developer's Vital Local Setup first appeared on Blundell.

## Android development updates include Android XR SDK Developer Preview 3 and new tools for AI glasses

DevFeed: [Android development updates include Android XR SDK Developer Preview 3 and new tools for AI glasses](<https://devfeed.tech/articles/now-in-android-123-22676.md>)

Original publisher: [Read original article](<https://medium.com/androiddevelopers/now-in-android-123-7ad94b13d5bc?source=rss----95b274b437c2---4>)

Author: Daniel Galpin

Published: 2025-12-19T23:33:51Z

Content type: article

Language: en

Sources: [Android Developers - Medium](<https://devfeed.tech/sources/android-developers-medium.md>)

Topics: [Android XR](<https://devfeed.tech/topics/android-xr.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Jetpack](<https://devfeed.tech/topics/jetpack.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [OpenXR](<https://devfeed.tech/topics/openxr.md>), [Godot](<https://devfeed.tech/topics/godot.md>), [Unreal Engine](<https://devfeed.tech/topics/unreal-engine.md>)

Tags: [android-development](<https://devfeed.tech/tags/android-development.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [android-xr](<https://devfeed.tech/tags/android-xr.md>), [featured](<https://devfeed.tech/tags/featured.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [now-in-android](<https://devfeed.tech/tags/now-in-android.md>), [openxr](<https://devfeed.tech/tags/openxr.md>), [release](<https://devfeed.tech/tags/release.md>), [unreal](<https://devfeed.tech/tags/unreal.md>), [unreal-engine](<https://devfeed.tech/tags/unreal-engine.md>)

### AI overview

This edition of Now in Android reviews Android development updates, with emphasis on Android XR SDK Developer Preview 3 and tools for AI glasses. It covers Jetpack libraries, ARCore geospatial capabilities, adaptive field-of-view APIs, Android Studio emulator support, and OpenXR integrations for Unreal Engine and Godot.

### Source excerpt

Android XR, Android Studio Otter 2 feature drop; Android 16 QPR2, compose updates, Jetpack Navigation 3, performance and much, much, much more. Welcome to Now in Android, your ongoing guide to what's new and notable in the world of Android development. You can catch a short subset of what's in this gigantified update on YouTube, but read on for the full story. https://medium.com/media/406ea21381b605792c1cb5f40715bc89/href Start building for glasses, new devices for Android XR and more in The Android Show | XR Edition 👓 The Android Show | XR Edition introduced updates to the Android XR platform, focusing on new devices and developer tools. The platform is expanding to include lightweight AI and Display AI glasses from Samsung, Gentle Monster, and Warby Parker, integrating Gemini for features like live translation and visual search. Uber is exploring AI Glasses for contextual directions. Wired XR glasses, such as XREAL's Project Aura, are scheduled for release next year. Android XR SDK Developer Preview 3 offers increased stability for headset APIs and opens development for AI Glasses. This includes new libraries like Jetpack Compose Glimmer for transparent display UI and Jetpack Projected for extending your mobile apps to glasses. ARCore for Jetpack XR gains Geospatial capabilities, and new APIs enable detection of device field-of-view for adaptive UIs. The platform, built on OpenXR, supports Unreal Engine development with a Google vendor plugin for hand tracking coming next year, and Godot Engine now includes Android XR support via its OpenXR vendor plugin v4.2.2 stable. Start building for glasses, new devices for Android XR and more in The Android Show | XR Edition Check out #TheAndroidShow in 60 seconds for a quick video overview of what we covered. Build for AI Glasses with the Android XR SDK Developer Preview 3 and unlock new features for immersive experiences 🚀 Android XR SDK Developer Preview 3 is now available, enabling you to build augmented experiences for

## Inside Jetpack ViewModel: Internal Mechanisms and Multiplatform Design

DevFeed: [Inside Jetpack ViewModel: Internal Mechanisms and Multiplatform Design](<https://devfeed.tech/articles/inside-jetpack-viewmodel-internal-mechanisms-and-multiplatform-design-25922.md>)

Original publisher: [Read original article](<https://proandroiddev.com/inside-jetpack-viewmodel-internal-mechanisms-and-multiplatform-design-2625671eaef8?source=rss-9bb203a4ab2e------2>)

Author: Jaewoong Eum

Published: 2025-12-07T02:29:08Z

Content type: tutorial

Language: en

Sources: [Stories by Jaewoong Eum on Medium](<https://devfeed.tech/sources/stories-by-jaewoong-eum-on-medium.md>)

Topics: [Jetpack](<https://devfeed.tech/topics/jetpack.md>), [Android](<https://devfeed.tech/topics/android.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [caching](<https://devfeed.tech/tags/caching.md>), [change](<https://devfeed.tech/tags/change.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [interface](<https://devfeed.tech/tags/interface.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [key-value-store](<https://devfeed.tech/tags/key-value-store.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [lifecycle](<https://devfeed.tech/tags/lifecycle.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>)

### AI overview

A technical tutorial explaining Jetpack ViewModel's internal mechanisms, including retention across configuration changes, ViewModelStore key-value caching, ViewModelProvider creation, factory-based instantiation, resource cleanup, and coroutine integration.

### Source excerpt

Unsplash@davidvig Jetpack's ViewModel has become an essential component of modern Android development, providing a lifecycle-aware container for UI-related data that survives configuration changes. While the API appears simple on the surface, the internal machinery reveals design decisions around lifecycle management, multiplatform abstraction, resource cleanup, and thread-safe caching. Understanding how ViewModel works under the hood helps you make better architectural decisions and avoid subtle bugs. In this article, you'll dive deep into how Jetpack ViewModel works internally, exploring how the ViewModelStore retains instances across configuration changes, how ViewModelProvider orchestrates creation and caching, how the factory pattern enables flexible instantiation, how CreationExtras enables stateless factories, how resource cleanup is managed through the Closeable pattern, and how viewModelScope integrates coroutines with the ViewModel lifecycle. The fundamental problem: Surviving configuration changes Configuration changes present a fundamental challenge for Android development. When a user rotates their device, changes language settings, or triggers any configuration change, the system destroys and recreates the Activity. Any data stored in the Activity is lost: https://medium.com/media/82ee86f042e31a1ede3f551f919b4429/href The naive approach is to use onSaveInstanceState(): https://medium.com/media/74f2c1da669e831b1488b3f297d55997/href This works for small, serializable data. But what about large datasets, network connections, or objects that can't be serialized? What about ongoing operations like network requests? The Bundle approach fails for these cases, both because of size limitations and because serialization/deserialization is expensive. ViewModel solves this by providing a lifecycle-aware container that survives configuration changes through a retained object pattern, not serialization. The ViewModelStore: The retention mechanism At the heart of Vie

## Now in Android #121

DevFeed: [Now in Android #121](<https://devfeed.tech/articles/now-in-android-121-22675.md>)

Original publisher: [Read original article](<https://medium.com/androiddevelopers/now-in-android-121-ddfe076c9884?source=rss----95b274b437c2---4>)

Author: Daniel Galpin

Published: 2025-10-20T22:09:39Z

Content type: article

Language: en

Sources: [Android Developers - Medium](<https://devfeed.tech/sources/android-developers-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [now-in-android](<https://devfeed.tech/topics/now-in-android.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [media3](<https://devfeed.tech/topics/media3.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>), [Bluetooth LE](<https://devfeed.tech/topics/bluetooth-le.md>), [Dark Mode](<https://devfeed.tech/topics/dark-mode.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [pdf](<https://devfeed.tech/topics/pdf.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [android](<https://devfeed.tech/tags/android.md>), [android-16](<https://devfeed.tech/tags/android-16.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [bluetooth-le](<https://devfeed.tech/tags/bluetooth-le.md>), [featured](<https://devfeed.tech/tags/featured.md>), [ios](<https://devfeed.tech/tags/ios.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [media](<https://devfeed.tech/tags/media.md>), [migration](<https://devfeed.tech/tags/migration.md>), [now-in-android](<https://devfeed.tech/tags/now-in-android.md>), [pdf](<https://devfeed.tech/tags/pdf.md>)

### AI overview

This edition of Now in Android covers Android 16 QPR2 Beta 1, Android Studio Narwhal's feature drop, Jetpack Compose 1.9, Media3 1.8, and related Android development updates. It highlights new platform APIs and changes involving accessibility, data migration between Android and iOS, PDF editing, media, Bluetooth LE Audio, and connectivity.

### Source excerpt

Compose 1.9, Media 3 1.8, QPR2 Beta 1, Narwhal Feature Drop, and more! Welcome to Now in Android, your ongoing guide to what's new and notable in the world of Android development. Read on for coverage of Android 16 QPR2 beta 1, the Android Studio Narwhal feature drop, Jetpack Compose 1.9, Media 3 1.8, Shape Morphing and Autofill in Compose, and much more. You can watch a video summary: https://medium.com/media/87a24ed0bca13b2d58bd3e59517b4273/href And we also have a podcast: https://medium.com/media/ef0552e532d340d1dd8ced3c6b6d85c5/href But this post has the most in-depth information, so read on! Android 16 QPR2 Beta 1 is here ✨ The first beta of Android 16 QPR2 is now available, the inaugural Android release with an Android minor SDK version. Minor SDK versions can include new APIs that extend platform features but cannot introduce targetSdkVersion gated behavior changes, minimizing the amount you need to test your apps against it. You can call new APIs by checking SDK_INT_FULL against the VERSION_CODES_FULL enumeration: if (Build.VERSION.SDK_INT_FULL >= Build.VERSION_CODES_FULL.BAKLAVA_1) { // Call new APIs from the Android 16 QPR2 release } VERSION_CODES_FULL cannot be used in uses-sdk manifest attributes. Here are some key updates from QPR2 Beta 1. UI, System Experience, and Accessibility: An expanded dark theme option intelligently inverts light apps for users preferring a dark appearance. Auto-themed app icons can be generated by the system if your app doesn't provide a monochrome layer. Interactive chooser sessions keep your app UI active while the sharesheet is open, using ChooserManager and ChooserSession. A new Data Transfer API enables more reliable and secure data migration between Android and iOS, requiring updates to your app's data extraction rules XML and BackupAgent implementation. The android.graphics.pdf package has expanded to support annotating and editing PDF documents via PdfRenderer.Page. ViewConfiguration values are now tailored to individua

## Does Cursor Generate Accessible Android Apps?

DevFeed: [Does Cursor Generate Accessible Android Apps?](<https://devfeed.tech/articles/does-cursor-generate-accessible-android-apps-38507.md>)

Original publisher: [Read original article](<https://eevis.codes/blog/2025-06-16/does-cursor-generate-accessible-android-apps/>)

Author: Eevis Panula

Published: 2025-06-16T03:56:47.185000Z

Content type: article

Language: en

Sources: [Eevis Blog](<https://devfeed.tech/sources/eevis-blog.md>)

Topics: [cursor](<https://devfeed.tech/topics/cursor.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [ai](<https://devfeed.tech/tags/ai.md>), [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [cursor](<https://devfeed.tech/tags/cursor.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

The article evaluates Cursor for generating an Android app and testing its accessibility. In one test, the author used Android Studio and Cursor to build a yarn and knitting-needle tracking app, encountering missing dependencies, improper navigation, and non-existent parameters in Composable functions. The author preferred Gemini and Junie for Android development based on this experience.

### Source excerpt

I've been testing the accessibility of Android code created by different AI tools, and this time, it's time to test Cursor. I know it's not the most ideal tool for Android development, but I still wanted to test it. If you've read the previous posts in the series, you know the drill - I'll generate the app code and then test it. There are links to the blog post at the top of this post if you want to refresh your memory or if you haven't read the previous blog posts. In them, I also explain why I'm doing this. So, let's get to the actual thing we're here for. The App This time, I did only one round of tests. It's not that I got lazy or anything - using Cursor was just so annoying that I decided to do only one test. I used a combination of Android Studio and Cursor editor to construct the app. I created the project with Android Studio, opened it in Cursor, and wrote the app prompt. Then I moved to AS, tried to build the project, fixed issues with dependencies, and built it again. Then I realized it didn't have proper navigation, so I moved back to Cursor and did some additional prompting. After several similar rounds, I finally got the app to my phone and the testing phase. There were some good and not-so-great sides to using Cursor from an Android development point of view. The setup was smooth, but once I got to do some actual work with Android, the code had many problems. For example, it didn't add dependencies at all, and I had to add them by hand. It also added some non-existent parameters to Composable functions. So yeah, compared to Gemini and Junie (tools I've tested so far), I would go with either of those for Android development instead of Cursor. Prompt The prompt I gave to Cursor was: Can you generate UI screens for an app, in which user can keep track of their yarn stash and knitting needles per size and type? It should contain the following screens: Home screen, where user can add both yarn and needles, a list screen for yarn, a details screen for indivi

## Now in Android #116

DevFeed: [Now in Android #116](<https://devfeed.tech/articles/now-in-android-116-22670.md>)

Original publisher: [Read original article](<https://medium.com/androiddevelopers/now-in-android-116-d442393ebeb3?source=rss----95b274b437c2---4>)

Author: Meghan Mehta

Published: 2025-05-09T15:58:03Z

Content type: article

Language: en

Sources: [Android Developers - Medium](<https://devfeed.tech/sources/android-developers-medium.md>)

Topics: [now-in-android](<https://devfeed.tech/topics/now-in-android.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Jetpack](<https://devfeed.tech/topics/jetpack.md>), [Google](<https://devfeed.tech/topics/google.md>), [Google AI](<https://devfeed.tech/topics/google-ai.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-16](<https://devfeed.tech/tags/android-16.md>), [bug-fixes](<https://devfeed.tech/tags/bug-fixes.md>), [compose](<https://devfeed.tech/tags/compose.md>), [featured](<https://devfeed.tech/tags/featured.md>), [google](<https://devfeed.tech/tags/google.md>), [google-ai](<https://devfeed.tech/tags/google-ai.md>), [google-io-2025](<https://devfeed.tech/tags/google-io-2025.md>), [google-play](<https://devfeed.tech/tags/google-play.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [now-in-android](<https://devfeed.tech/tags/now-in-android.md>), [release](<https://devfeed.tech/tags/release.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>)

### AI overview

Now in Android #116 covers the Google I/O program, Jetpack Compose 1.8, the redesigned Play Console app dashboard, new Android Vitals metrics, the Testing at Scale series, Android 16 Beta 4, and recent AndroidX updates.

### Source excerpt

Google IO program lineup, Jetpack Compose 1.8, Play Console insights Android Vitals Metrics, Testing at Scale blog series and AndroidX! Welcome to Now in Android, your ongoing guide to what's new and notable in the world of Android development. In this edition, we'll cover the Google IO program lineup, what's new in Jetpack Compose 1.8, the redesigned Play Console app dashboard, new Android Vitals Metrics, the launch of the Testing at Scale blog series, and the latest in AndroidX. https://medium.com/media/f791874912c70580592d3dc0ac12e0fa/hrefhttps://medium.com/media/514683104227eecfef6dcedea0d6ddb4/href Most of the content of this post is available in the form of a video or podcast, so feel free to watch or listen rather than read on. (Or do all three to help you remember! There won't be a quiz.) Articles 📚Get ready for Google I/O: Program lineup revealed 🗓 The Google I/O agenda is now available, and you can register to explore sessions on AI, Android, Web, and Cloud, taking place May 20-21. The Google Keynote will be on May 20th at 10:00 AM PT, with the Developer Keynote at 1:30 PM PT. You can join online for livestreams May 20-21, with on-demand sessions and codelabs on May 22. Sessions will cover AI advancements using Gemini models, building apps for multiple devices using Google AI, and new features for web development. Get ready for Google I/O: Program lineup revealed What's new in the Jetpack Compose April '25 release 🚀 Jetpack Compose 1.8 is out with new features, API updates, and bug fixes. You can upgrade your Compose BOM version to 2025.04.01 to use the new release. Here are some of the key updates: You can now integrate Autofill functionality into your Compose applications. The new autoSize parameter lets the text size adapt to the container size The onLayoutRectChanged modifier solves many use cases that the existing onGloballyPositioned modifier does; however, it does so with much less overhead. LookaheadScope is stable and includes numerous performanc

## Android 16 Beta 3 and Gemini in Android Studio Updates

DevFeed: [Android 16 Beta 3 and Gemini in Android Studio Updates](<https://devfeed.tech/articles/now-in-android-115-22669.md>)

Original publisher: [Read original article](<https://medium.com/androiddevelopers/now-in-android-115-d13a60cbf092?source=rss----95b274b437c2---4>)

Author: Daniel Galpin

Published: 2025-04-23T21:39:22Z

Content type: news

Language: en

Sources: [Android Developers - Medium](<https://devfeed.tech/sources/android-developers-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [android](<https://devfeed.tech/tags/android.md>), [android-16](<https://devfeed.tech/tags/android-16.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [android-xr](<https://devfeed.tech/tags/android-xr.md>), [featured](<https://devfeed.tech/tags/featured.md>), [game-development](<https://devfeed.tech/tags/game-development.md>), [google-gemini](<https://devfeed.tech/tags/google-gemini.md>)

### AI overview

This Now in Android update covers Android 16 Beta 3 and Gemini features in Android Studio. Android 16 Beta 3 reaches Platform Stability, locks the API surface and app-facing behaviors, and allows Android 16-targeted apps to be submitted to the Play Store. Gemini Code Assist for businesses adds governance, security, and repository-connected assistance, while Gemini in Android Studio supports image attachments in prompts.

### Source excerpt

Android 16 Beta 3, Gemini in Studio for Business and Multimodal, Widgets, GDC, safety and security, Android XR, Media, Camera Welcome to Now in Android, your ongoing guide to what's new and notable in the world of Android development. In this episode we're covering the third beta of Android 16, Gemini in Android Studio for Business and Gemini Multimodal, Widgets, GDC announcements, safety and security updates on Play, Android XR, Media, Camera, and so, so much more. https://medium.com/media/efa5d35e15afc0461acc8ea49689529a/hrefhttps://medium.com/media/45fefbec951133090403383e9cce63e4/href Most of the content of this post is available in the form of a video or podcast, so feel free to watch or listen rather than read on. (Or do all three to help you remember! There won't be a quiz.) The Third Beta of Android 16 🤖 Android 16 has reached Platform Stability with Beta 3. The API surface is locked, app-facing behaviors are final, and you can now push Android 16-targeted apps to the Play Store. The Android 16 beta now supports Auracast broadcast audio with compatible LE Audio hearing aids on Pixel 9 devices, It introduces outline text, replacing high contrast text, which draws a larger contrasting area around text to greatly improve legibility for users with low vision, and adds the ability to test the Local Network Protection feature, which gives users more control over which apps can access devices on their local network. Make sure to test your apps for compatibility now, as the release is coming to non-beta users soon with changes to JobScheduler, broadcasts, ART, Intents, accessibility, Bluetooth, and more. The Third Beta of Android 16 Gemini in Android Studio for businesses 🤖 Android Studio now has Gemini in Android Studio for businesses through Gemini Code Assist to meet the privacy, security, and management needs of organizations. With Gemini Code Assist, your code remains secure with a data governance policy, you retain control and ownership of your data and IP, an

## Coroutines and Dispatchers

DevFeed: [Coroutines and Dispatchers](<https://devfeed.tech/articles/coroutines-and-dispatchers-22871.md>)

Original publisher: [Read original article](<https://medium.com/mindorks/coroutines-and-dispatchers-b559094b828e?source=rss----f1a763fc7443---4>)

Author: Bigyan Thapa

Published: 2024-10-16T06:48:00Z

Content type: tutorial

Language: en

Sources: [Mindorks - Medium](<https://devfeed.tech/sources/mindorks-medium.md>)

Topics: [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [code-quality](<https://devfeed.tech/tags/code-quality.md>), [coroutine](<https://devfeed.tech/tags/coroutine.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [dispatcher](<https://devfeed.tech/tags/dispatcher.md>), [extension](<https://devfeed.tech/tags/extension.md>), [extension-function](<https://devfeed.tech/tags/extension-function.md>), [io](<https://devfeed.tech/tags/io.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [main-thread](<https://devfeed.tech/tags/main-thread.md>)

### AI overview

This tutorial explains how Android ViewModel coroutines use viewModelScope and how to select Dispatchers.IO, Dispatchers.Default, or Dispatchers.Main for I/O, CPU-intensive, and UI work. It also presents ViewModel extension functions and an overloaded function to standardize coroutine launching.

### Source excerpt

In Android development, coroutines are commonly launched from ViewModel classes using viewModelScope. The typical usage looks like this: viewModelScope.launch { // ... implementation } In Android development, coroutines are commonly launched from ViewModel classes using viewModelScope. The typical usage looks like this: viewModelScope.launch { // ... implementation } By default, if a dispatcher is not specified, any coroutine launched in viewModelScope will run on the main thread. However, in most use cases, we launch these coroutines to perform background tasks, such as -- making API calls, or database operations. To ensure these tasks run in the background thread, it is essential to specify an appropriate dispatcher: I/O tasks should use Dispatchers.IO CPU-intensive tasks should use Dispatchers.Default UI updates should use Dispatchers.Main For example, to run an I/O task, we can specify the dispatcher like this: viewModelScope.launch(Dispatchers.IO) { // ...implementation }Optimizing Coroutine Launching To streamline coroutine launching, we can create extension functions on ViewModel that automatically use the specified dispatcher by default. Step 1: Create Extension Functions We can define extension functions for different dispatchers: kotlin fun ViewModel.launchIO(block: suspend CoroutineScope.() -> Unit) { viewModelScope.launch(Dispatchers.IO, block = block) } fun ViewModel.launchDefault(block: suspend CoroutineScope.() -> Unit) { viewModelScope.launch(Dispatchers.Default, block = block) } fun ViewModel.launchMain(block: suspend CoroutineScope.() -> Unit) { viewModelScope.launch(Dispatchers.Main, block = block) }Step 2: Use the Extension Functions You can now use these extension functions in your ViewModel as follows: class MyViewModel : ViewModel() { fun fetchData() { launchIO { // ... implementation } } } Benefits Consistency: These extension functions maintain consistent coroutine usage for specific tasks. Readability: The function names clearly indicate their p

## Essential Components of an Android Developer GitHub Showcase Project

DevFeed: [Essential Components of an Android Developer GitHub Showcase Project](<https://devfeed.tech/articles/what-every-android-developer-should-have-in-their-github-25844.md>)

Original publisher: [Read original article](<https://blog.stackademic.com/what-every-android-developer-should-have-in-their-github-de8deab051b9?source=rss-8aced922ece------2>)

Author: Ban Markovic

Published: 2024-02-05T11:00:04Z

Content type: tutorial

Language: en

Sources: [Stories by Ban Markovic on Medium](<https://devfeed.tech/sources/stories-by-ban-markovic-on-medium.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [REST API](<https://devfeed.tech/topics/rest-api.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [github](<https://devfeed.tech/tags/github.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mvi](<https://devfeed.tech/tags/mvi.md>), [mvvm](<https://devfeed.tech/tags/mvvm.md>), [portfolio](<https://devfeed.tech/tags/portfolio.md>), [rest-api](<https://devfeed.tech/tags/rest-api.md>), [screen](<https://devfeed.tech/tags/screen.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>)

### AI overview

The article recommends building a concise Android showcase project for a GitHub portfolio. The project should use two screens to fetch and display a list from a REST API, support navigation to item details, demonstrate MVI or MVVM architecture, organize files clearly, handle asynchronous work, include unit tests, and use dependency injection.

### Source excerpt

In the competitive world of Android development, having a strong GitHub portfolio is crucial for showcasing your skills to potential employers. One effective way to demonstrate your expertise is by creating a concise yet comprehensive project that highlights key aspects of Android development. In this article, we'll explore the essential components that every Android developer should have in their GitHub, focusing on a project that encapsulates fundamental skills. The Project Overview A successful showcase project should include two screens and cover the following key functionalities: Fetching and Displaying Data - Utilize a REST API to fetch a list of items. - Display this list on the first screen of the app. Navigation and Detailed Information - Enable users to navigate to a second screen by clicking on a specific item. - On the second screen, display more detailed information about the selected item. Key Considerations for the Showcase ProjectArchitecture -- MVI or MVVM Clearly implement and showcase your understanding of the chosen architecture (MVI or MVVM). Organize code files in a logical and easily understandable structure. File Organization Demonstrate a well-organized project structure, separating concerns and making codebase easily maintainable (feature-based or type-based folders structure). Asynchronous Communication Showcase your proficiency in handling asynchronous tasks by using an appropriate library (e.g., Kotlin Coroutines, LiveData, RxJava). Unit Tests Impress potential employers by including unit tests to validate the functionality of critical components (cover your ViewModel, UseCase, Repository classes with unit tests). Dependency Injection (DI): Implement and demonstrate your use of dependency injection for managing component dependencies (Hilt, Dagger, Koin). Why This Project Matters This concise project effectively showcases your abilities in: Displaying a list of items Fetching data from the internet Implementing navigation between screens

## Review of 2023

DevFeed: [Review of 2023](<https://devfeed.tech/articles/review-of-2023-24856.md>)

Original publisher: [Read original article](<https://alexzh.com/review-of-2023/>)

Author: Alex Zhukovich

Published: 2024-01-04T19:36:53Z

Content type: opinion

Language: en

Sources: [Alex Zhuk - Android development and testing](<https://devfeed.tech/sources/alex-zhuk-android-development-and-testing.md>)

Topics: [Mobile](<https://devfeed.tech/topics/mobile.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [annual-review](<https://devfeed.tech/tags/annual-review.md>), [development](<https://devfeed.tech/tags/development.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [mobile-development](<https://devfeed.tech/tags/mobile-development.md>), [review](<https://devfeed.tech/tags/review.md>), [speaking](<https://devfeed.tech/tags/speaking.md>), [testing](<https://devfeed.tech/tags/testing.md>), [ui-testing](<https://devfeed.tech/tags/ui-testing.md>)

### AI overview

A personal review of 2023 covering mental-health routines, blog publishing, Android development and testing tips, public speaking about UI testing, and goals for 2024.

### Source excerpt

Review of 2023 The first week of 2024 is an excellent opportunity to reflect on the previous year and set goals for the upcoming one. The 2023 was pretty challenging for me in multiple areas of my life, like mental state and content creation. I'd like to share

## Dependency Injection in Legacy Code

DevFeed: [Dependency Injection in Legacy Code](<https://devfeed.tech/articles/dependency-injection-in-legacy-code-24906.md>)

Original publisher: [Read original article](<https://blog.blundellapps.co.uk/dependency-injection-in-legacy-code/>)

Author: blundell

Published: 2023-10-19T12:26:59Z

Content type: tutorial

Language: en

Sources: [Blundell](<https://devfeed.tech/sources/blundell.md>)

Topics: [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>), [Dagger](<https://devfeed.tech/topics/dagger.md>), [Android](<https://devfeed.tech/topics/android.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [legacy](<https://devfeed.tech/topics/legacy.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [dagger](<https://devfeed.tech/tags/dagger.md>), [dependency-injection](<https://devfeed.tech/tags/dependency-injection.md>), [development](<https://devfeed.tech/tags/development.md>), [intermediate](<https://devfeed.tech/tags/intermediate.md>), [legacy](<https://devfeed.tech/tags/legacy.md>), [legacy-code](<https://devfeed.tech/tags/legacy-code.md>), [reference](<https://devfeed.tech/tags/reference.md>)

### AI overview

This tutorial explains how to use Dagger and Hilt entry points to inject dependencies into Android legacy singletons and other classes that are not managed by the current architecture. It focuses on cases where the legacy code can access a Context and describes defining an entry-point interface for required bindings.

### Source excerpt

This post explains how you can inject dependencies into Android legacy singletons, or any classes that aren't conforming to your current Android architecture, using Dagger & Hilt. I'll cut straight to the chase, if you have a reference to Context, (which you usually always do in spaghetti legacy code) then you can use your normal [...] The post Dependency Injection in Legacy Code first appeared on Blundell.

## What the Android ecosystem could learn from Flutter

DevFeed: [What the Android ecosystem could learn from Flutter](<https://devfeed.tech/articles/what-the-android-ecosystem-could-learn-from-flutter-40814.md>)

Original publisher: [Read original article](<https://www.bloco.io/blog/what-the-android-ecosystem-could-learn-from-flutter>)

Author: Cláudia

Published: 2023-10-11T13:22:22Z

Content type: opinion

Language: en

Sources: [Blog - Bloco](<https://devfeed.tech/sources/blog-bloco.md>)

Topics: [Flutter](<https://devfeed.tech/topics/flutter.md>), [Android](<https://devfeed.tech/topics/android.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [animations](<https://devfeed.tech/tags/animations.md>), [bug-fixes](<https://devfeed.tech/tags/bug-fixes.md>), [compose](<https://devfeed.tech/tags/compose.md>), [development](<https://devfeed.tech/tags/development.md>), [flutter](<https://devfeed.tech/tags/flutter.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [reload](<https://devfeed.tech/tags/reload.md>), [team](<https://devfeed.tech/tags/team.md>), [work](<https://devfeed.tech/tags/work.md>)

### AI overview

An opinion piece compares Flutter with native Android development, focusing on Flutter's hot reload and widget ecosystem. It argues that Android development could benefit from more immediate code updates and a more unified set of UI components, while noting comparable capabilities in Jetpack Compose.

### Source excerpt

We recently had the opportunity to work with Flutter on a project. Here's our honest opinion of the advantages of Flutter that we would like to see in Android development.

## Understanding Density-Independent Pixels

DevFeed: [Understanding Density-Independent Pixels](<https://devfeed.tech/articles/understanding-density-independent-pixels-38463.md>)

Original publisher: [Read original article](<https://eevis.codes/blog/2023-09-04/understanding-density-independent-pixels/>)

Author: Eevis Panula

Published: 2023-09-04T03:35:34.847000Z

Content type: tutorial

Language: en

Sources: [Eevis Blog](<https://devfeed.tech/sources/eevis-blog.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Development](<https://devfeed.tech/topics/development.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Front end](<https://devfeed.tech/topics/frontend.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [development](<https://devfeed.tech/tags/development.md>), [front-end](<https://devfeed.tech/tags/front-end.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [pixel](<https://devfeed.tech/tags/pixel.md>), [screen](<https://devfeed.tech/tags/screen.md>)

### AI overview

This tutorial explains density-independent pixels (dp) in Android, why they help preserve UI sizing across screens with different pixel densities, and how Android maps dp to physical pixels. It also introduces pixel conversions in Jetpack Compose.

### Source excerpt

I switched to Android development from web front end, and one thing that was a bit hard to understand was how the density of Android screens affects the use of units. For web, I mainly worked with pixels, ems (the computed value of the element's font size), and rems (the computed value of the root element's font size). So, I wanted to write a blog post about this theme because I bet I'm not the only one. Let's first look at the density-independent pixels, what they are, and why they're used. After that, let's discuss the conversion between them and pixels. I've purposely omitted scale-independent pixels from this blog post to concentrate on density-independent pixels. What Are Density-Independent Pixels? Android devices have different sizes of screens. They also have different pixel sizes for a screen - so a certain amount of pixels in, e.g., width, looks different on a screen with fewer pixels compared to one with a lot more pixels. This is because one screen might fit only 320 pixels in the same physical space while the other fits 640 pixels. Density-independent pixels are here to fix the issues these differences cause. Android documentation defines density-independent pixels in the following way: To preserve the visible size of your UI on screens with different densities, design your UI using density-independent pixels (dp) as your unit of measurement. One dp is a virtual pixel unit that's roughly equal to one pixel on a medium-density screen (160 dpi, or the "baseline" density). Android translates this value to the appropriate number of real pixels for each other density. Source: Support different pixel densities - Android Developers Let's next look at the conversions between real pixels and density-independent pixels. Conversions Between Pixels and Density-Independent Pixels There are multiple cases when we need the conversion from device-independent pixels to pixels - and vice versa. Let's look at how we can convert them - first in the scope of Composable comp

[Next page](<https://devfeed.tech/topics/android-development.md?cursor=WyIyMDIzLTA5LTA0VDAzOjM1OjQyKzAwOjAwIiwgIjA5NGJkZjhmLTMyNjgtNDRjMS1iZmEzLTcwMjUxOWFhOGQwNCJd>)