A recent borked cargo-ndk release ^1 lead me to investigate why we are using a nonstandard tool in our CI in the first place. Compiling / build-testing the ndk crate does not require any external tooling whatsoever nor an SDK setup: this crate is a pure wrapper over pre-generated C bindings in the ndk-sys crate, which only require NDK libraries (and an Android-capable linker) when linking actual runnable binaries (typically shared libraries or executables). And the Rust compiler natively supports compiling Rust code for Android targets.
A recent borked
cargo-ndk
release ^1 lead me to investigate why we are using a nonstandard tool in our CI in the first place. Compiling / build-testing thendk
crate does not require any external tooling whatsoever nor an SDK setup: this crate is a pure wrapper over pre-generated C bindings in thendk-sys
crate, which only require NDK libraries (and an Android-capable linker) when linking actual runnable binaries (typically shared libraries or executables). And the Rust compiler natively supports compiling Rust code for Android targets.