Rust support for Android targets is good enough for game code in 2025, but the setup is still three moving parts: the target triple, the linker that matches the NDK, and the C++ standard library that the linker pulls in for Vulkan and OpenSL wrappers.
We pin all three in a .cargo/config.toml file committed with the project: the target, the path to the NDK's clang wrapper, and the NDK version in a single environment file. When the NDK moves, one line changes and the build either works or fails at link time with a message that names the missing library.
The alternative — resolving the linker from PATH — works until two NDK versions are installed, which happens the first time you bisect a regression. Pinning costs twenty minutes once and removes a class of reports that read “works on my machine, fails in CI”.
Read next: NDK r29 preview: what changes for game builds.