Official Android frontend for Dasher v6, built on the DasherCore C API via JNI.
Status: Phase 0 (foundation scaffold). See
PLAN.mdfor the full feature-parity roadmap against the cross-platform feature matrix.
DasherCore is consumed through its public C ABI (dasher.h) — the same
integration pattern as Dasher-Windows. A thin JNI shim marshals the frame
command buffer and engine callbacks to Kotlin; the UI is Jetpack Compose.
Kotlin (Compose) ──JNI──▶ libdasher.so (DasherCore CAPI) + libdasher_jni.so (shim)
Prerequisites: Android Studio (Ladyfish or newer), which supplies JDK 17, Android SDK 35, and NDK 27.0.12077973.
- Open this directory in Android Studio. It will:
- install the required SDK/NDK/CMake,
- generate the Gradle wrapper jar (
gradle/wrapper/gradle-wrapper.jar), - initialize the
DasherCoresubmodule.
- From the CLI:
./gradlew :app:assembleDebug ./gradlew :app:installDebug
DasherCore is pinned (not main) as a git submodule:
git submodule add https://github.com/dasher-project/DasherCore.git third_party/DasherCore
app/src/main/
├── cpp/ Native layer
│ ├── CMakeLists.txt Builds DasherCore CAPI + JNI shim
│ ├── jni_bridge.cpp Thin JNI bindings over dasher.h
│ └── asset_copier.{h,cpp} Copies bundled Data/ to filesDir on first run
├── java/org/dasherproject/android/
│ ├── NativeBridge.kt Kotlin external decls (1:1 with dasher.h)
│ ├── DasherEngine.kt Choreographer frame loop + input translation
│ ├── MainActivity.kt Compose app shell
│ └── ui/
│ ├── DasherCanvasView.kt Decodes [op,a,b,c,d,argb] → Android Canvas
│ └── theme/ Compose theme from dasher-design-guide tokens
└── assets/ Symlink/srcDir to third_party/DasherCore/Data
MIT. See LICENSE.