Recent posts

42 total

Fixing the blurry LUKS password screen after upgrading to Ubuntu 25.10

After upgrading from Ubuntu 25.04 to 25.10, I noticed something annoying: the disk-encryption password screen that appears right after the firmware logo had become noticeably low-resolution. The motherboard logo was fuzzy, the password field looked like it had been stretched from 800×600, and the whole thing felt like a regression from the crisp screen I had on 25.04. If you’ve...

ubuntulinuxplymouth

Android emulator won't boot on AMD GPU? It's your Vulkan driver.

I lost days to this. The Android emulator would launch, show the boot animation, and just sit there. No error dialog in Android Studio, no crash popup, nothing. An infinite boot loop with zero indication of what went wrong. If you have an AMD GPU on Linux with AMDVLK installed, this post should save you some time. The problem I’m...

androidemulatorvulkan

How Android Studio's @Preview Actually Works: Extension Points, ViewAdapters, and LayoutLib

Android Studio’s design panel is not a monolithic system. It is a pluggable framework where each UI technology (Compose, Wear Tiles, Glance AppWidgets, Custom Views) registers its own “designer module” via IntelliJ extension points. This post uses Wear Tiles and Glance AppWidgets as case studies to show how new Compose-based platforms expand the designer and tooling infrastructure, on both the...

android-studioaospcompose

AOSP Split APK Architecture - Comprehensive Analysis Report

1. Executive Summary Split APKs allow an Android application to be delivered as multiple APK files instead of a single monolithic APK. Introduced in Android L (API 21), split APKs provide: Reduced download sizes via config splits (density, ABI, language-specific resources) Modular features via feature splits (on-demand delivery of app modules) Incremental updates by updating individual splits without replacing the...

aospsplit-apkandroid

The Intelligent OS: How AppFunctions and ComputerControl Power Android's AI Agent Ecosystem

I. The Big Picture 1. The shift to task delegation The Android Developers Blog describes the change: “User expectations for AI on their devices are fundamentally shifting how they interact with their apps.” The traditional model – users manually opening apps, navigating UIs, completing tasks step by step – is giving way to task delegation. Users tell an AI agent...

aospappfunctionscomputercontrol

Building a Custom Jekyll Theme with Claude Code

I’m not a frontend engineer, and I wanted to replace the minima theme on my Jekyll blog with a custom one – no frontend experience required. I used Claude Code to build the entire theme in a single session. What Was Done Built a Complete Local Theme Claude Code read the existing repository structure, fetched the reference design, and produced...

claude-codejekyllfrontend

Robolectric Native Runtime: Architecture & Implementation Report

1. Introduction Robolectric is the de-facto standard for running Android unit tests on the JVM without a device or emulator. Historically, Robolectric used hand-written Java “shadow” classes to approximate the behavior of Android framework native code. In Android O (API 26), Robolectric introduced Native Runtime — a mechanism to load real AOSP native libraries (compiled for host platforms) and delegate...

robolectricnative-runtimejni

APKM File Format Spec from APKMirror

1) Overview .apkm is a file format created by APKMirror to distribute Android applications that are built using Android App Bundle (AAB). Since Google Play generates device-specific split APK sets from AAB files at install time, third-party distributors like APKMirror cannot distribute a single monolithic APK for bundle-based apps. The .apkm format solves this by packaging the base APK together...

apkapkmirrorfile-format

Layout Inspector Deep Technical Analysis

The analysis generated with help of GitHub Copilot CLI with multiple models. 0) Scope and evidence base This report analyzes: Android Studio source: ~/android-toolchains/studio-main tools/adt/idea/layout-inspector/ tools/base/dynamic-layout-inspector/agent/appinspection/ tools/adt/idea/app-inspection/ Jetpack Compose inspector source: ~/android-toolchains/androidx-main/frameworks/support/compose/ui/ui-inspection/ Android platform/emulator source subset: ~/android-toolchains/emu-master-dev Running device verification: emulator: emulator-5554, a local running Emulator instance made and started manually Android: 16 API level: 36 Analysis focus: legacy +...

android-studiolayout-inspectorcompose