When attempting to understand Android Runtime, I came across the wikipedia page. The graphic shown there adds to my confusion. If .dex is getting converted entirely to ELF, why is ART needed anymore?
Once an application is compiled by using ART's on-device
dex2oatutility, it is run solely from the compiled ELF executable; as a result, ART eliminates various application execution overheads associated with Dalvik's interpretation and trace-based JIT compilation
My understanding is that ART converts .dex to ELF and the code should run natively. With ELF, is a virtual machine still involved? With ART, does the android application stack look like -
Android Apps ----- ART (executing ELF) ----- Linux
Am I understanding this correctly? Should I see ART as an OS that provides services to the ELFed Android App?