# Deck in a Dash — Android app

A standalone Android app showing the same daily tarot (Celtic Cross) +
astrology reading as the Pebble watch app (`../watch/`), with a burger
menu leading to a config page. Independent of the watch app - neither
requires the other to be installed. See the root
[`CLAUDE.md`](../CLAUDE.md)'s "Android app" section for the full
architecture (JNI-linked engine/interpreter, JSON bridge schema,
WorkManager notification, card art pipeline).

## Building

Requires:

- A JDK (17+; the project's own `compileOptions`/toolchain target Java
  17). `JAVA_HOME` should point at it, or a `java` matching that version
  must be first on `PATH`.
- The Android SDK, with `ANDROID_HOME` (or `ANDROID_SDK_ROOT`) set -
  needs at minimum `platforms;android-36`, `build-tools;36.0.0`,
  `ndk;30.0.14904198`, and `cmake;3.22.1` installed (see
  `app/build.gradle.kts`'s `compileSdk`/`ndkVersion` and
  `app/src/main/jni/CMakeLists.txt`'s `cmake_minimum_required` for the
  exact versions this project pins - `../build-image/Dockerfile`
  installs the same ones for CI).
- `ANDROID_NDK_HOME` set to that installed NDK's directory.
- Python 3 + Pillow (`pip install Pillow`) - needed by
  `scripts/gen_card_images.py`/`gen_launcher_icon.py`, which Gradle's
  `preBuild` task runs automatically (see `app/build.gradle.kts`).

```bash
./gradlew assembleDebug   # -> app/build/outputs/apk/debug/app-debug.apk
```

Or, from the repo root: `make android`, which wraps the above and
copies the APK into `dist/deck-in-a-dash-<version>.pbw`'s sibling,
`dist/deck-in-a-dash-<version>.apk` (same version resolution as `make
package`/`make watchapp` - see the root `Makefile`).

The Gradle wrapper (`./gradlew`) resolves its own pinned Gradle version
on first run - no separate Gradle install is needed.

Ships the Android auto-generated debug keystore, not a release-signed
build - see the root `CLAUDE.md`'s Android section for why.
