Android Articles

Inside Android Photo Picker: Privacy Sandbox Architecture and Compose Integration

A close look at Android Photo Picker's privacy-sandbox design, from cross-process URI permission grants to Compose declarative integration, covering single/multi-select, persistent permissions, and ROM compatibility.

Android Network Security Config to SSL Pinning: An End-to-End Guide

A practical walkthrough of Android's three-layer network defense: Network Security Config, SSL Pinning, and Certificate Transparency, from configuration traps to production monitoring.

Evaluating and Optimizing On-Device AI on Android: From Offline Benchmarks to Production Experiments

A from-scratch evaluation system for on-device AI: offline benchmarks for initial filtering, production confidence-distribution monitoring, and A/B experiments to drive decisions β€” cutting iteration cycles from 3 weeks to 1.5.

Android Multi-Channel Builds: From Gradle Flavors to Walle V2 Signature Injection

Two approaches to Android multi-channel packaging: Gradle Flavor builds and Walle's V2 signature block channel injection, with APK Signing Block internals and production lessons.

From PyTorch to TFLite on Android: A Practical Model Format Conversion Guide

A hands-on guide to converting PyTorch models through ONNX into TFLite and MediaPipe for on-device Android deployment, covering dynamic shapes, operator compatibility, and INT8 quantization.

Android System Properties End-to-End: From init to Shared Memory and SELinux

How Android's system property mechanism works: property files, the init property service, zero-copy shared memory reads, SELinux enforcement, and cross-process change notifications.

Android Concurrency in Practice: Thread Pools, Queues, and Coroutine Dispatchers

A practical guide to Android thread pool tuning, queue selection, rejection policies, and how Kotlin coroutine dispatchers map onto underlying thread pools.

Inside the Compose Compiler Plugin: From @Composable to Synthetic Parameters

How the Compose Compiler Plugin transforms @Composable functions at the IR level, covering $changed bitmasks, skip logic generation, state read/write markers, and stability inference rules.

A Practical Guide to On-Device AI Pipelines with Kotlin Flow

Model on-device inference as a declarative, composable pipeline of Preprocess, Inference, and Postprocess stages wired together with Kotlin Flow operators, backpressure, and layered tests.

Inside MMKV: How mmap and Append-Only Protobuf Beat SharedPreferences

A practical walkthrough of MMKV's mmap memory mapping and append-only Protobuf writes, why SharedPreferences blocks the main thread, and how to choose between SP, MMKV, and DataStore.

Android Spannable Internals: From Spanned to Canvas Rendering

An end-to-end walkthrough of Android's rich text engine β€” markup storage, span callback layers, TextLine Canvas dispatch, custom ReplacementSpan and ParagraphStyle, and Compose AnnotatedString.

Inside Android Crash Aggregation: Stack Fingerprinting to Automated Issue Triage

A practical guide to Android crash stack fingerprinting: normalizing exception messages, deobfuscation-aware frame processing, weighted frame-sequence fingerprints, similarity clustering, and an automated triage pipeline.

Inside Android Matrix: A Production-Grade APM Framework Walkthrough

How Matrix intercepts main-thread stalls with Looper Printer sampling, catches hidden I/O via PLT Hook, and what to copy when building your own APM.

Android Studio Profiler in Practice: CPU Tracing to Memory Allocation Diagnostics

A practical guide to the full Android Studio Profiler toolkit, covering CPU sampling vs. instrumentation, flame graph reading, memory allocation tracking, heap dump diffing, and layered diagnosis with Systrace and Perfetto.

Android VpnService End-to-End: TUN Virtual Interface to Packet Interception and Local Proxy

A practical walkthrough of building a local VPN proxy on Android with VpnService, covering TUN interface creation, IP packet parsing, TCP state machine maintenance, SOCKS5 forwarding, and NAT.

Building a Custom RecyclerView LayoutManager: Layout, Caching, Scroll, and Animation

An end-to-end guide to writing a custom RecyclerView LayoutManager: the Fill algorithm, three-tier cache, scroll state machine, dead-reckoning, and animation tradeoffs.

Inside Android Resource Loading: From resources.arsc Binary to Runtime Lookup

A walkthrough of Android's resource system from AAPT2 compilation to AssetManager2 runtime matching, covering the arsc binary structure, config scoring, and two-tier caching.

Managing On-Device AI Inference Lifecycles with Kotlin Coroutines

How to use structured concurrency to manage Android on-device AI inference: GPU resource release ordering, actor-style serialization, and cancellation propagation.

Inside the Android View Drag-and-Drop System: From DragShadowBuilder to Cross-Window ClipData

An end-to-end walkthrough of Android's drag-and-drop internals: startDragAndDrop, DragEvent dispatch, the DragShadow render layer, and cross-window ClipData transport.

Android App Resilience: Retries, Graceful Fallbacks, and Multi-Level Cache

An Android resilience architecture covering conditional retry, exponential backoff, memory/DataStore/Room cache fallback, graceful degradation, and observability.