As a mobile engineer, you’ve probably seen terms like SHA-1 and SHA-256 pop up everywhere—in your IDE warnings, API documentation, and app signing configurations. But what do they actually mean, and why should you care? Think of a cryptographic hash function as a digital fingerprint generator. You can feed it any data — an entire APK, a user’s password, a simple string — and it will spit out a uni
10 Oct 2026The latest posts from Android Professionals and Google Developer Experts. - Medium
Latest posts
A practical deep-dive into full-text search indexing, inverted indices, and microsecond query benchmarks using Android Jetpack Room. When building search into an Android application — whether querying an offline-first inbox, notes catalog, documentation cache, or e-commerce catalog — almost every developer starts with the same query: SELECT * FROM mails WHERE subject LIKE '%' || :query || '%' OR b
10 Oct 2026How I Built Free and Full Build Flavors for Android in My KMP Codebase Part 3 of my KMP series: how Android product flavors let the free version of my app leave the sign-in, sync and payment code out of the build List: Building an Exam Prep App with Kotlin Multiplatform | Curated by Avik Sharma Chowdhury | Medium In Part 1 , I shared how my plan changed after completing the closed testing with MVP
10 Oct 2026How we replaced the storage foundation of a large-scale app, then proved it with numbers. Illustration Generated by Gemini TL;DR The most important local data in our app now lives in Jetpack DataStore , replacing SharedPreferences. We measured the impact with an isolated benchmark: no measurable runtime cost . Cold start, hot start, CPU, and memory all stay within normal run-to-run variation. Migr
10 Oct 2026The last article in this series ended with a vendor fix. Its SDK had declared kotlin-stdlib 2.3.0, which AGP consistent resolution carried onto our modules’ classpaths. Detekt’s type-resolving analysis uses an embedded Kotlin compiler. In this incident, that older compiler could not handle the newer dependency metadata correctly and reported 42 phantom UnsafeCast findings. They disappeared with a
8 Oct 2026Every Android architecture diagram looks clean on day one. Features in boxes, arrows pointing down, a note in the README saying “features must not depend on each other.” Then a deadline arrives. Someone needs the user’s avatar on the checkout screen, the profile feature already has a UserRepository, and it's one import away. The build is green, the review is busy, and the arrow now points sideways
2 Oct 2026One command handles the certificate and the routing. The interesting part is why it takes fourteen steps by hand. TL;DR: Point the device at an HTTPS proxy running on your Mac. The proxy does the DNS lookup, so your Mac’s /etc/hosts becomes the single source of truth for routing. The device only needs to trust one certificate, once. If you want to skip ahead: uvx proxy-lab start android. GitHub -
30 Sep 2026Why some of the most elegant APIs in Kotlin — first<T>(), Gson().fromJson<T>(), Jetpack’s viewModels<T>() — could never have existed without two keywords most developers use daily but rarely stop to understand. inline fun makeInstance(): T = T::class.java.getDeclaredConstructor().newInstance() Generics on the JVM have a strict rule: you cannot use a type parameter T at runtime. Calling T::class, i
27 Sep 2026An Android engineering walkthrough of agent-generated interfaces, component catalogs, stateful interactions, and the boundaries your app still needs to own. Ask an AI assistant to help you prepare for a developer conference. A text response can give you a checklist. An interactive response can let you tick an item, inspect the venue, and ask the assistant to update your plan using what you have al
27 Sep 2026Three practical patterns for handling one-off UI events with a single UiState. Image created by AI When we model a Compose screen with a single UiState, a natural question appears: Where should UI events live? A snackbar, navigation, or dialog is not really persistent screen state. It is something the UI needs to react to once. Still, putting events directly into UiStatecan be useful. It keeps the
24 Sep 2026