Advertisement · 728 × 90

Posts by Catalin P

Preview
GitHub - android/skills Contribute to android/skills development by creating an account on GitHub.

Today we're releasing two essential resources for Android devs: Official Android skills and Android CLI!

📑 Android Skills (github.com/android/skills) fill gaps when state-of-the-art models don't have enough training data. We're focusing on hard migrations, niche APIs, performance, etc.

4 days ago 19 4 1 0
Credential Manager and Passkeys on Android: Passwords Are Dead, Here’s What’s Next What Is Android Credential Manager? Android Credential Manager is the new unified authentication framework that replaces the aging SmartLock and Autofill APIs. If you've been relying on those legacy systems, now's the time to migrate. Credential Manager gives your users a modern, secure way to authenticate — and it's simpler for you to implement than you might think. Here's the core idea: instead of juggling passwords, recovering accounts, or typing credentials over and over, users can sign in with passkeys. A passkey is a cryptographic key pair stored securely on their device (or synced across devices via their platform's credential sync service).

Credential Manager and Passkeys on Android: Passwords Are Dead, Here’s What’s Next

What Is Android Credential Manager? Android Credential Manager is the new unified authentication framework that replaces the aging SmartLock and Autofill APIs. If you've been relying on those legacy systems, now's…

3 weeks ago 0 0 0 0
Using MediaPipe LLM Inference API in an Android App What Is MediaPipe LLM Inference? If you're building an Android app that needs to run large language models (LLMs) on-device, MediaPipe LLM Inference API is one of the most accessible ways to get there. It handles model loading, quantisation, and hardware acceleration so you can focus on the experience — no cloud dependency, no server bills, no data leaving the device.

Using MediaPipe LLM Inference API in an Android App

What Is MediaPipe LLM Inference? If you're building an Android app that needs to run large language models (LLMs) on-device, MediaPipe LLM Inference API is one of the most accessible ways to get there. It handles model loading, quantisation, and…

3 weeks ago 1 0 1 0
Predictive Back Gesture on Android: Migrate Your App Before It Breaks What Is the Predictive Back Gesture? Android 13 introduced the predictive back gesture — a system-wide feature that lets users preview their navigation destination by long-pressing the back button before fully committing to the action. It's a powerful UX improvement that gives users confidence in their navigation choices, but it requires your app to handle the back gesture differently than ever before.

Predictive Back Gesture on Android: Migrate Your App Before It Breaks

What Is the Predictive Back Gesture? Android 13 introduced the predictive back gesture — a system-wide feature that lets users preview their navigation destination by long-pressing the back button before fully committing to the…

3 weeks ago 1 0 0 0
Preview
AI-Powered Crash Triage: Feeding Stack Traces to LLMs for Faster Fixes The Stack Trace Triage Problem Every app that ships crashes. Users hit unexpected states, device configurations trigger edge cases, third-party libraries fail in mysterious ways. When a crash report lands in Firebase Crashlytics, you're looking at a stack trace, maybe some breadcrumbs or custom logs, and you need to decide: Is this a high-priority bug? Can I reproduce it? How do I even start debugging? The traditional approach is manual: you read the stack trace, search for the failing line, try to mentally reconstruct the call graph, and maybe reproduce it locally.

AI-Powered Crash Triage: Feeding Stack Traces to LLMs for Faster Fixes

The Stack Trace Triage Problem Every app that ships crashes. Users hit unexpected states, device configurations trigger edge cases, third-party libraries fail in mysterious ways. When a crash report lands in Firebase…

3 weeks ago 0 0 0 0
Baseline Profiles and Macrobenchmark: Measure and Ship a Faster Android App Why Your App Feels Slow on First Launch You've optimized your layouts, trimmed your dependency graph, and profiled your Compose recompositions. Yet users still report that your app feels sluggish the first time they open it after install or update. The culprit is usually JIT compilation — the Android Runtime compiles your app's bytecode to native code on the fly, and those first few seconds pay the price.

Baseline Profiles and Macrobenchmark: Measure and Ship a Faster Android App

Why Your App Feels Slow on First Launch You've optimized your layouts, trimmed your dependency graph, and profiled your Compose recompositions. Yet users still report that your app feels sluggish the first time they open…

4 weeks ago 0 0 0 0
Compose Multiplatform in 2026: Sharing UI Between Android and iOS From Shared Logic to Shared UI If you've been following the Kotlin Multiplatform story, you've probably already shared networking with Ktor in a KMP shared module and persistence with SQLDelight across platforms. The next logical question is: can you share the UI too? With Compose Multiplatform, the answer in 2026 is a confident yes. JetBrains' Compose Multiplatform builds on top of Jetpack Compose and extends it to iOS, desktop, and web.

Compose Multiplatform in 2026: Sharing UI Between Android and iOS

From Shared Logic to Shared UI If you've been following the Kotlin Multiplatform story, you've probably already shared networking with Ktor in a KMP shared module and persistence with SQLDelight across platforms. The next logical…

4 weeks ago 0 0 0 0
Structured AI Development for Android: A Complete Workflow from Design to Play Store Why Unstructured AI Coding Fails for Android Projects You open your AI coding agent, type "add a settings screen with dark mode toggle," and the agent immediately starts writing code. Three minutes later, it's generated a SettingsActivity with XML layouts — except your app uses single-activity Compose navigation. It didn't check your architecture. It didn't ask about your theming approach. It didn't write tests.

Structured AI Development for Android: A Complete Workflow from Design to Play Store

Why Unstructured AI Coding Fails for Android Projects You open your AI coding agent, type "add a settings screen with dark mode toggle," and the agent immediately starts writing code. Three minutes later, it's…

4 weeks ago 0 0 0 0
Running Gemini Nano On-Device: Your First Android AI Feature Without a Server Why On-Device AI Matters for Android Developers Every AI feature you ship today probably depends on a network call. The user types something, your app hits an API, waits for a response, and displays the result. It works, but it comes with latency, server costs, and the uncomfortable fact that your app is useless without a connection. Gemini Nano changes that equation entirely.

Running Gemini Nano On-Device: Your First Android AI Feature Without a Server

Why On-Device AI Matters for Android Developers Every AI feature you ship today probably depends on a network call. The user types something, your app hits an API, waits for a response, and displays the result. It works,…

4 weeks ago 0 0 1 0
Preview
Android Code Review Workflow With Claude Code: Catch Bugs Before Your Teammates Do The Gap That Claude Code Fills in Code Review Code review is one of the most valuable things a team does — and one of the most time-consuming. Reviewers catch real bugs, but they also spend energy on things that could be automated: spotting forgotten null checks, flagging coroutine scope misuse, noticing that a ViewModel leaks a reference to Context. Claude Code can handle that category of mechanical review entirely, leaving your human reviewers free to focus on architecture decisions, naming, and logic that actually requires judgement. Using Claude Code for Android code review doesn't replace your teammates — it means you arrive at review having already fixed the obvious issues, so the conversation is higher quality from the start.

Android Code Review Workflow With Claude Code: Catch Bugs Before Your Teammates Do

The Gap That Claude Code Fills in Code Review Code review is one of the most valuable things a team does — and one of the most time-consuming. Reviewers catch real bugs, but they also spend energy on things that…

1 month ago 0 0 0 0
Advertisement
Kotlin Contracts: Teach Your Compiler About Your Function’s Behavior What Are Kotlin Contracts? If you've worked with Kotlin for a while, you've likely encountered functions from the standard library that seem to have almost magical powers. Take require() and check()—call them with a condition, and the compiler somehow knows that if execution continues past that line, your variable is no longer nullable. Or use isNullOrEmpty() on a string, and suddenly the compiler treats it as non-null after the check. That's not magic—that's contracts. Kotlin contracts are a powerful (but underutilized) feature that let you describe your function's behavior to the compiler.

Kotlin Contracts: Teach Your Compiler About Your Function’s Behavior

What Are Kotlin Contracts? If you've worked with Kotlin for a while, you've likely encountered functions from the standard library that seem to have almost magical powers. Take require() and check()—call them with a condition,…

1 month ago 0 0 0 0
Preview
I Keep Seeing the Same Problem in YouTube Live Streams, So I Built a Small Tool A Pattern I Noticed Over Time Every now and then I watch a YouTube live stream. Not regularly — maybe a few times a month when I'm in the mood and someone I follow happens to be live. Could be a coding session, a Q&A, a product launch, whatever. I enjoy the format. There's something nice about watching someone work or talk in real time while a little community forms in the chat beside them. And after watching enough of these over the past year or so, I started noticing something.

I Keep Seeing the Same Problem in YouTube Live Streams, So I Built a Small Tool

A Pattern I Noticed Over Time Every now and then I watch a YouTube live stream. Not regularly — maybe a few times a month when I'm in the mood and someone I follow happens to be live. Could be a coding session, a Q&A,…

1 month ago 0 0 0 0
Dynamic Theme Your App with Android WallpaperColors API What Is the WallpaperColors API? Android 8.1 (API 27) introduced the WallpaperColors API, and it remains one of the most underrated tools for building personalized Android experiences. It lets you extract the dominant, secondary, and tertiary colors from your user's system wallpaper and apply them to your app's theme in real time. On Android 12+ (API 31), Google took this further with Material You's dynamic color system, which reads wallpaper colors automatically and generates a full color palette for your app. Under the hood, it's powered by the same…

Dynamic Theme Your App with Android WallpaperColors API

What Is the WallpaperColors API? Android 8.1 (API 27) introduced the WallpaperColors API, and it remains one of the most underrated tools for building personalized Android experiences. It lets you extract the dominant, secondary, and tertiary…

1 month ago 0 0 0 0
Type-Safe Zero-Cost Wrappers with Kotlin Value Classes The Problem: Primitive Obsession You've probably seen this pattern in production code: database IDs represented as Long, user emails as String, currency amounts as Double. On the surface, it's simple and pragmatic. But it introduces a subtle bug vector—primitive obsession. Imagine you have a function that accepts a user ID and a post ID, both as…

Type-Safe Zero-Cost Wrappers with Kotlin Value Classes

The Problem: Primitive Obsession You've probably seen this pattern in production code: database IDs represented as Long, user emails as String, currency amounts as Double. On the surface, it's simple and pragmatic. But it introduces a subtle…

1 month ago 0 0 0 0
Android Keyboard Animation: WindowInsetsAnimation API for Smooth IME Transitions Why Android Keyboard Animation Matters When your app shows a text input and the soft keyboard slides up, that moment sets the tone for user experience. A jarring jump or a laggy animation feels cheap. A smooth, synchronized transition where your content slides up in perfect sync with the IME (Input Method Editor) feels polished and intentional. The WindowInsetsAnimation API is Android's tool for creating exactly that experience — and it's simpler than you might think.

Android Keyboard Animation: WindowInsetsAnimation API for Smooth IME Transitions

Why Android Keyboard Animation Matters When your app shows a text input and the soft keyboard slides up, that moment sets the tone for user experience. A jarring jump or a laggy animation feels cheap. A smooth,…

1 month ago 0 0 0 0
Android Choreographer API: Frame Timing, VSYNC, and Smooth 60fps Rendering What Is the Choreographer API? The Choreographer API is Android's internal frame timing system — the heartbeat of smooth animation. Every frame your app draws, the Choreographer orchestrates the timing. It synchronizes with the device's VSYNC signal (the vertical refresh of your screen), and it exposes a callback mechanism so you can hook into that same frame timing for custom animations, game loops, or live wallpaper rendering.

Android Choreographer API: Frame Timing, VSYNC, and Smooth 60fps Rendering

What Is the Choreographer API? The Choreographer API is Android's internal frame timing system — the heartbeat of smooth animation. Every frame your app draws, the Choreographer orchestrates the timing. It synchronizes with…

1 month ago 0 1 0 0
Preview
LLM Prompts for Code Refactoring: A Practical Guide LLM Prompts for Code Refactoring: Structuring Your Requests When you're facing a large refactoring task in your Android codebase, asking an LLM the right way can save you hours. Unlike simple coding questions, refactoring requires your AI assistant to understand the architectural context, the business logic you're preserving, and the specific constraints of your project. In this post, you'll learn proven patterns for structuring LLM prompts that yield high-quality refactored code you can trust. The Before/After Pattern The most effective way to guide an LLM through refactoring is the before/after pattern…

LLM Prompts for Code Refactoring: A Practical Guide

LLM Prompts for Code Refactoring: Structuring Your Requests When you're facing a large refactoring task in your Android codebase, asking an LLM the right way can save you hours. Unlike simple coding questions, refactoring requires your AI…

1 month ago 0 0 0 0
Preview
Generate Architecture Docs from Code with LLMs Generate Architecture Documentation Automatically from Your Codebase You know the problem: your app's architecture documentation is either non-existent, wildly out of date, or buried in scattered wiki pages that nobody reads. By the time you onboard a new developer, they're confused about module boundaries, data flow, and how components talk to each other. Modern LLMs can solve this. With the right prompts, you can generate accurate, up-to-date architecture documentation directly from your code in minutes. Here's how. Why LLMs Excel at Architecture Documentation Traditional documentation requires humans to write and maintain it manually.

Generate Architecture Docs from Code with LLMs

Generate Architecture Documentation Automatically from Your Codebase You know the problem: your app's architecture documentation is either non-existent, wildly out of date, or buried in scattered wiki pages that nobody reads. By the time you onboard a…

1 month ago 0 0 0 0
Preview
Building a Day/Night Sky Gradient System for Android Live Wallpapers Creating Realistic Sky Gradients That Change With the Sun When you look at a great live wallpaper, what makes it feel alive isn't just animation — it's the sky. A static blue-to-orange gradient at the top of your screen feels dead after five minutes. But a sky that actually shifts through dawn blues, golden hours, twilight purples, and star-filled blacks? That's the difference between a wallpaper you tolerate and one you actually admire. Building an android day night sky gradient system is the first step toward making your live wallpaper respond to the real world outside the phone.

Building a Day/Night Sky Gradient System for Android Live Wallpapers

Creating Realistic Sky Gradients That Change With the Sun When you look at a great live wallpaper, what makes it feel alive isn't just animation — it's the sky. A static blue-to-orange gradient at the top of your screen feels…

1 month ago 0 0 0 0
Advertisement
Preview
One HTTP Client for Android and iOS: Ktor 3 in a KMP Shared Module The Networking Problem in KMP Projects Before Kotlin Multiplatform, Android had Retrofit and OkHttp while iOS had URLSession or Alamofire — two completely separate networking stacks, two sets of models to keep in sync, and twice the bugs to chase. KMP solves this at the shared-module level, and Ktor Client is the library built specifically for it. One set of API calls, one set of data models, shared on both platforms. With the release of Ktor 3 and the latest Ktor 3.4.1, the client is faster, leaner, and fully aligned with modern KMP conventions.

One HTTP Client for Android and iOS: Ktor 3 in a KMP Shared Module

The Networking Problem in KMP Projects Before Kotlin Multiplatform, Android had Retrofit and OkHttp while iOS had URLSession or Alamofire — two completely separate networking stacks, two sets of models to keep in sync, and twice…

1 month ago 0 0 0 0
Preview
expect and actual: The Mechanism That Makes Kotlin Multiplatform Tick The Core Problem KMP Has to Solve Kotlin Multiplatform lets you share business logic across Android, iOS, desktop, and web — but each platform still has its own APIs. Android has Log, iOS has NSLog, Android has SharedPreferences, iOS has NSUserDefaults. KMP's answer to this is a two-keyword mechanism: expect and actual. It's the single most important concept to understand when starting with KMP, and it's simpler than it sounds. expect declares the contract in shared code; actual implements it per platform. How It Works…

expect and actual: The Mechanism That Makes Kotlin Multiplatform Tick

The Core Problem KMP Has to Solve Kotlin Multiplatform lets you share business logic across Android, iOS, desktop, and web — but each platform still has its own APIs. Android has Log, iOS has NSLog, Android has…

1 month ago 0 0 0 0
Preview
Kotlin Property Delegates You’re Probably Not Using: observable and vetoable Why Property Delegates Often Go Unnoticed Most Kotlin developers know lazy — it's everywhere. You see it in Android ViewModels, dependency injection setups, and library code. But the standard library ships two more property delegates that are surprisingly powerful and almost never discussed: Delegates.observable and Delegates.vetoable. If you've been wiring up manual setters or using LiveData just to observe a simple field change, these might be exactly what you've been missing. Property delegates let you intercept reads and writes without boilerplate setters. What Is a Property Delegate? In Kotlin, a property delegate is an object that handles the…

Kotlin Property Delegates You’re Probably Not Using: observable and vetoable

Why Property Delegates Often Go Unnoticed Most Kotlin developers know lazy — it's everywhere. You see it in Android ViewModels, dependency injection setups, and library code. But the standard library ships two more…

1 month ago 0 0 0 0
Preview
Building a Weather-Reactive Rendering Engine for Android Live Wallpapers Making Your Wallpaper Respond to Real-World Weather A beautiful sky gradient is a good start, but what makes Seasons Live Wallpaper feel special is that it reacts to the actual weather outside your window. Rain particles drift down when it's raining. Snow accumulates during winter storms. Fog creeps in on humid mornings. Lightning flashes light up the sky during thunderstorms. Building an android weather effects live wallpaper engine means creating a system that fetches live weather data, maps conditions to visual effects, and layers them all efficiently without draining your battery.

Building a Weather-Reactive Rendering Engine for Android Live Wallpapers

Making Your Wallpaper Respond to Real-World Weather A beautiful sky gradient is a good start, but what makes Seasons Live Wallpaper feel special is that it reacts to the actual weather outside your window. Rain particles…

1 month ago 0 0 0 0
Preview
Lazy Computation in Kotlin: The sequence Builder and How It Can Save Your Memory The Hidden Cost of Eager Collections Kotlin's collection functions — map, filter, flatMap — are a joy to use. But they share one characteristic that can quietly hurt your app: they're eager. Each call processes the entire source and allocates a brand new intermediate list. Chain three or four of them on a list of 50,000 items, and you've just allocated four lists where you might only need the first ten results. Kotlin's Sequence type solves this with lazy evaluation — elements are computed one at a time, on demand, and only as far as the pipeline needs to go.

Lazy Computation in Kotlin: The sequence Builder and How It Can Save Your Memory

The Hidden Cost of Eager Collections Kotlin's collection functions — map, filter, flatMap — are a joy to use. But they share one characteristic that can quietly hurt your app: they're eager. Each call processes the…

1 month ago 0 0 0 0
Rubber Duck Debugging with AI: Prompt Patterns for Effective Debugging Rubber Duck Debugging with AI: The Modern Approach "Rubber duck debugging" is an old technique: you explain your bug to an inanimate object (a rubber duck), and in the process of explaining, you discover the problem yourself. Today's AI assistants make this technique more powerful. Instead of talking to a duck, you can ask an LLM to help you think through the problem, suggest hypotheses, and generate fixes.

Rubber Duck Debugging with AI: Prompt Patterns for Effective Debugging

Rubber Duck Debugging with AI: The Modern Approach "Rubber duck debugging" is an old technique: you explain your bug to an inanimate object (a rubber duck), and in the process of explaining, you discover the problem yourself.…

1 month ago 0 0 0 0
Preview
Claude Code Skills for Android: Automate the Boilerplate You Write Every Day What Skills Are in Claude Code Once you've used Claude Code for a while you'll notice you repeat the same prompts. "Create a new feature screen with a ViewModel and UiState." "Add a Room entity and DAO for this model." "Write a Hilt module that provides this repository." These are perfect candidates for skills — reusable prompt templates that Claude Code loads on demand, so you get consistent, project-aware output with a single slash command instead of typing the same paragraph every time. A skill is just a Markdown file with a structured prompt inside it, stored in…

Claude Code Skills for Android: Automate the Boilerplate You Write Every Day

What Skills Are in Claude Code Once you've used Claude Code for a while you'll notice you repeat the same prompts. "Create a new feature screen with a ViewModel and UiState." "Add a Room entity and DAO for this model."…

1 month ago 0 0 0 0
Preview
Seasons Live Wallpaper — A Living, Breathing Home Screen for Android What If Your Wallpaper Knew the Weather? Most live wallpapers loop the same animation forever. They look nice for a day, then you forget they're even there. Seasons Live Wallpaper is different — it's a wallpaper that actually pays attention to the world around you. Built by an indie developer from Romania, Seasons brings four hand-drawn seasonal landscapes to your Android home screen. But the real magic is what happens underneath: the wallpaper syncs with your real location to shift the sky from dawn to dusk, mirrors actual weather conditions, and even tracks moon phases and shooting stars.

Seasons Live Wallpaper — A Living, Breathing Home Screen for Android

What If Your Wallpaper Knew the Weather? Most live wallpapers loop the same animation forever. They look nice for a day, then you forget they're even there. Seasons Live Wallpaper is different — it's a wallpaper that actually…

1 month ago 0 0 0 0
Preview
Writing Android Tests and Debugging With Claude Code: A Practical Workflow The Part of Android Development "Nobody Enjoys" 😛 Writing tests and debugging are the two parts of Android development where most developers lose the most time. Tests feel like writing code twice, and debugging often means staring at a stack trace while trying to hold an entire call graph in your head. Claude Code doesn't eliminate either task, but it changes the experience significantly. It can draft test cases from a description, explain why a crash is happening at a specific line, and suggest fixes grounded in your actual codebase — not generic Android advice.

Writing Android Tests and Debugging With Claude Code: A Practical Workflow

The Part of Android Development "Nobody Enjoys" 😛 Writing tests and debugging are the two parts of Android development where most developers lose the most time. Tests feel like writing code twice, and debugging often means…

1 month ago 1 0 0 0
Preview
Stop Using mutableListOf + toList(): Meet Kotlin’s buildList, buildMap, and buildSet A Familiar But Slightly Awkward Pattern If you've written Kotlin for a while, you've almost certainly written code like this: fun getActiveUsers(users: List): List { val result = mutableListOf() for (user in users) { if (user.isActive) result.add(user) if (user.isPremium) result.add(user.copy(label = "Premium")) } return result.toList() // convert back to read-only } The pattern works, but it's ceremonial: create a mutable collection, build it up imperatively, then convert it back to a read-only version. The mutable list is just scaffolding — what you actually want is the final read-only result. Kotlin 1.6 introduced a cleaner alternative: …

Stop Using mutableListOf + toList(): Meet Kotlin’s buildList, buildMap, and buildSet

A Familiar But Slightly Awkward Pattern If you've written Kotlin for a while, you've almost certainly written code like this: fun getActiveUsers(users: List): List { val result = mutableListOf() for (user in…

1 month ago 0 0 0 0
Advertisement
Seasons Live Wallpaper Android
Seasons Live Wallpaper Android YouTube video by KazyDroid

Spring is almost here 🌸
Cherry blossoms, a sky that shifts from dawn to dusk, real weather effects & touch drawing with petals — animated on your Android home screen.
Seasons Live Wallpaper — a living window to nature.
#Android #LiveWallpaper #Spring #AndroidApp youtu.be/_QWBN2BtBQY?...

1 month ago 1 0 0 0