Toolchain
The supported targets arearm64-v8a and x86_64, with Android API 30 or newer, NDK 27.2 and cargo-ndk 4.1.2. Build on a host, never on the device:
-t x86_64 for an x86_64 device.
Run the CLI on a device
Build the CLI and the network daemon
From the source checkout, on the host:
Build your node workspace
Node libraries are built on the host too, with any Rust 1.95 or newer: it does not have to be the compiler that built the CLI, but both builds need Android support. From your workspace:cargo-ndk puts the libraries under
target/<target-triple>/<profile>, and the CLI looks there first. Keep that directory when you copy the workspace to the device; do not flatten its libraries into target/<profile>. A workspace made by cerulion workspace create already carries the iceoryx2 patch block Android needs.Set up the shell on the device
In an Run
adb shell, give the CLI writable home and temporary directories:cerulion login once in that shell. Then run your graph as on any other machine.Embed a graph in an app
cerulion_android gives an app a Java facade, backed by JNI, over an embedded runtime that runs the graph, the gateway and the recorder in the app’s process. The app loads one native library: its own runtime crate, which links cerulion_android and the app’s graph nodes. Nodes are linked into that library, not loaded from separate files.
The sample app in the repository, crates/cerulion_android/android, is a complete example: it links the timer and printer nodes of examples/basic_timer, and ships its graph in the APK. Its build steps are in the Android guide in the repository.
What works on Android
cerulion topic list run on the device cannot see an app’s topics; read them from a host through the app’s gateway. An emulator does not pass multicast to the host, so test mDNS discovery from a physical device.Next steps
Installation
Set up the host you build from.
Network a graph
Reach the device’s topics from your desk.