Also even the "pure" C one depends on Java, because Activities exist only on the Java side of Android.
In practice to be usable on a standard Android system, native code must always be compiled to a shared object, with JNI entry points to be called from Java userspace.
The only option is to write such native methods ourselves, or use one of the two predefined Activities for NDK that already expect specific functions to be present on the shared library.
Additionally, the zero Java part only works, if what NDK exposes as stable API is enough, and from Google's point of view, that is only for games, or faster compute, everything else requires JNI fun.
As tip, it is easier to deal with Android IPC for Java <-> NDK communication, than going through JNI boilerplate.
Couldn't one simply make the boilerplate once, as a library, that takes the pertinent bits as arguments? In which case if your app is C anyways it would make sense to just keep it simple with that.