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
![main-qimg-bcaf3a36a055e58f72205e1ee3ffa09f.webp](https://qph.fs.quoracdn.net/main-qimg-bcaf3a36a055e58f72205e1ee3ffa09f.webp)
![main-qimg-ac8082da5b52aaacd2b4b2623ae76a38.webp](https://qph.fs.quoracdn.net/main-qimg-ac8082da5b52aaacd2b4b2623ae76a38.webp)
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 :)