[package] name = "android-shell" version = "0.1.0" edition = "2024" # The JNI bridge behind E3's two Java stub classes (`MainActivity`, # `NotificationService` -- see RUST.md's "How much Java is unavoidable" for # why those two classes cannot be anything but Java/Kotlin, registered from # the manifest by name). Everything they would otherwise have done in # Kotlin -- the SSE follow loop, deciding where a notification is shown, # picking a session for a share -- is here instead, built on `client-core` # so the networking and parsing are not duplicated a third time next to the # server and the Kotlin app. # # `cdylib` for `System.loadLibrary`; `lib` too so `cargo test`/`clippy` run # on a normal host target without an Android NDK toolchain, the same # posture `client-core` and `server` already have. [lib] name = "android_shell" crate-type = ["cdylib", "lib"] [dependencies] client-core = { path = "../client-core" } jni = "0.22" log = "0.4" # `LogErrorAndDefault` (the `native_method!` error policy this crate uses # throughout, see lib.rs) logs through the `log` facade, which is a no-op # without a backend installed -- so without this, every recoverable error # at a native entry point would be silently dropped rather than reaching # logcat. Android-only: nothing else here needs it, and it does not build # off-device (see `notify::ensure_logger`'s call site, the only place this # is used). [target.'cfg(target_os = "android")'.dependencies] android_logger = "0.15"