Skip to content

About

Android binding for Minigraf — bi-temporal graph database

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

28 Commits

Folders and files

Repository files navigation

minigraf-android

Android binding for Minigraf — zero-config, single-file, embedded bi-temporal graph database with Datalog queries.

Installation

dependencies {
    implementation("io.github.project-minigraf:minigraf-android:2.0.11")
}

Minimum SDK: 24 (Android 7.0). Supports arm64-v8a, armeabi-v7a, x86_64.

Quick start

import uniffi.minigraf_ffi.MiniGrafDb

val db = MiniGrafDb.openInMemory()
val result = db.execute("""(transact [[:alice :name "Alice"]])""")
println(result)  // {"transacted":<tx id>}

Building from source

Requires Rust stable toolchain, Android NDK, and JDK 17.

cargo install cargo-ndk --locked
cargo ndk -t arm64-v8a -t armeabi-v7a -t x86_64 build --release
for pair in arm64-v8a:aarch64-linux-android armeabi-v7a:armv7-linux-androideabi x86_64:x86_64-linux-android; do
  mkdir -p "android/jniLibs/${pair%%:*}"
  cp "target/${pair#*:}/release/libminigraf_ffi.so" "android/jniLibs/${pair%%:*}/"
done
cargo run --bin uniffi-bindgen -- generate \
  --library target/aarch64-linux-android/release/libminigraf_ffi.so \
  --language kotlin \
  --out-dir android/src/main/java/
cd android && ./gradlew assembleRelease

Cascade release

This repo receives a core-release repository_dispatch from the minigraf monorepo cascade whenever a new version of the minigraf core crate is published. The release workflow pins the new version, builds JNI libraries for all Android ABIs, and publishes the AAR to Maven Central.

License

MIT OR Apache-2.0

About

Android binding for Minigraf — bi-temporal graph database

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages