Files
deck_in_a_dash/android/README.md
T
ml 3bc1263294
build / build (push) Successful in 4m8s
Add a standalone Android app with the same daily reading and config page
android/ links engine/src/ and interpreter/src/ via JNI/CMake (real
astronomy.c, not the watch's size-constrained substitute), rendering
through Jetpack Compose with a burger-menu config page mirroring
WatchConfig and a WorkManager-driven daily notification. Independent
of the watch app - neither requires the other.

build-image now bundles the Android SDK/NDK alongside the Pebble SDK
(VERSION bumped to 2), and .gitea/workflows/build.yml/Makefile/
run-image.sh build and publish the APK the same way as the CLI
tarball and .pbw.
2026-07-18 22:41:51 +02:00

1.9 KiB

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'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).
./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.