← ClaudeAtlas

android-buildlisted

Build, test, debug, and preview Android apps inside a ShipIt session. Load when a task touches an Android/Gradle project (Kotlin/Java, build.gradle(.kts), AndroidManifest.xml, res/ layouts, Compose UI). Covers the baked toolchain (JDK/SDK/Gradle), the build → lint → snapshot-test loop, reading snapshot PNG diffs, on-demand SDK installs, and the emulator-as-Compose-service for a live device over adb.
nikzlabs/shipit · ★ 5 · Code & Development · score 73
Install: claude install-skill nikzlabs/shipit
# Android build, test & preview The Android toolchain is **baked into every session container** — JDK 17, the Android SDK, and Gradle 8.7 are always on `PATH`. A repo declares **nothing** to build (no `shipit.yaml` Android fields). Full command reference and env paths: **`/shipit-docs/android.md`** — read it for anything not covered here. There are two surfaces: **headless** (build/lint/test/snapshot — this container, no device) and **a running app** (an emulator Compose service over `adb`). ## Find the Gradle root first Run Gradle from the dir with `settings.gradle(.kts)` + `gradlew`. In a monorepo (web app + an `android/` module) just `cd` into it. If there are several Android app modules, flavors, or Gradle roots, list them and pick — or ask the user which to target. Don't guess off stray `.gradle` files. ```bash cd android ./gradlew projects # modules ./gradlew tasks --all # available tasks (snapshot task names vary by library/variant) ``` ## The core loop: build → lint → snapshot ```bash ./gradlew assembleDebug # did I break the build? ./gradlew lint # manifest/resource/accessibility + edge-to-edge/inset checks ./gradlew test # JVM unit tests (+ Robolectric if used) ``` Prefer the committed `./gradlew` (pins the Gradle version). It downloads its dist once per fresh container; run the baked `gradle` to skip that if needed. **Reading the output is most of debugging** — compile errors, lint findings, and test stack traces are in t