I built my own game engine from the ground up for this project and the hardest problem I have had to solve this entire project remains "how do you build anything at all for Android"
It's occasionally just really shocking that Google still hasn't faced just how bad the developer experience targeting the NDK is. Apple is actively hostile to third party devs yet they were not able to create something as hostile as the Android build system(s) became by accident
Also as an interesting piece of trivia, I am actually targeting a non-phone hardware platform which chose to use Android as its base but which does not run conventional Android apps and does not, in fact, appear to support Java at all
But still uses the Android/Java build system
The funny part about it is that Android SDK/NDK build system isn't what's used by Android itself. Android itself is busy replacing a far superior build system to the one they make app developers use with a better one, after previously going through a past replacement like that.
It's really hard for me to understand why they decided to use gradle, etc. for the SDK. They would never use that nonsense internally. There's no way Google engineers would put up with it. Android doesn't use that itself and they definitely don't use it for Google apps either.
Whenever I ask why a particular weird piece of Google tooling is the way it is, the answer seems to be "well internally they use Blaze, but that's internal, so they made an external OSS tool which implements a subset of Blaze. ... another one"
gradle isn't the kind of thing they'd build though. They just made a plugin for it. The Android build system itself may not be as wonderful as Bazel would have been but it's actually the nicest build system that I've used overall. gradle could actually be the worst.