It's written in Java and shipped as dex bytecode but Android has full support for compiling that to native code. It can do full ahead-of-time compilation on the device. The default upstream configuration is to start with JIT compilation, with PGO AOT based on that done later on.
The usual optimization level ('speed') doesn't AOT compile one-time initializers or ridiculously long methods (unlike 'everything') and the default PGO mode leaves out any dead code or cold code based on the JIT profiles that were made.