O que é um arquivo .dex? O que é dexopt? O que é odex? O que é o dexoat? O que é ELF? Como isso tudo funciona?
I'vai tentar ser o mais breve possível
- Todo o seu código Java no seu projeto android é compilado em arquivos .class pelo compilador Java.
- A ferramenta dex(dx) converte todos os seus arquivos .class em arquivos .dex(código de bytes Dalvik) para que eles possam ser empacotados em arquivos .apk.
- antes do Android 5.0 (Lollipop) chegar, o sistema android usava uma ferramenta chamada dexopt que usava para optimizar os ficheiros .dex e produzir um ficheiro .odex que era semelhante aos ficheiros .dex originais, excepto que usava alguns opcodes optimizados.
- Os ficheiros .odex e .dex são executados por Dalvik. Dalvik também usa a compilação JIT(just-in-time) que foi introduzida no Android 2.2 "Froyo" para compilar as partes de código frequentemente executadas em código de máquina nativo que melhorou a performance.
- Since Android 5.0 "Lollipop", o sistema android usa uma ferramenta chamada dex2oat que converte arquivos .dex em arquivos ELF que podem ser executados nativamente. Assim ao invés de ter bytecode que é interpretado por uma máquina virtual, ele agora tem código nativo que pode ser executado nativamente pelo processador. Isto é chamado de compilação AOT (ahead-of-time).
Estes diagramas irão ajudá-lo a compreender melhor os conceitos
Para informações mais detalhadas, siga estes links
Android Open Source Project
Build System Overview
Dalvik (software)
Você pode comentar se você quiser pedir algo mais. Esperança que ajudou :)