Still need JVM support of value types for this to make sense.
Android 7 brought the VM back.
Now it uses an interpreter hand written in Assembly that gathers PGO info for the JIT, which also performs PGO data gathering, then only the hot bits are AOT compiled to native code, when the device is idle.
Any change on the execution path or updates trigger the execution process from the beginning.
And from that point of view, ART on Android 5/6 was a runtime, turned into a VM on Android 7.
From your point of view, the CLR is also not a VM.