Um .dexarquivo é basicamente uma versão compilada do código de código de um aplicativo que foi criado para a Dalvik VM na qual os aplicativos do Android são executados. Acredito que seja a abreviação de Dalvik Executable, mas não tenho certeza se estou me lembrando disso corretamente.
Um .odexarquivo é um .dexarquivo otimizado (daí o 'o'), o que significa que foi basicamente pré-compilado para uma plataforma específica. A vantagem disso é que o tempo de inicialização é muito mais rápido, já que a VM não precisa realizar nenhuma otimização na inicialização / tempo de execução. As desvantagens são: 1) ocupa um espaço extra e 2) um aplicativo esgotado não será executado corretamente se for colocado em outro dispositivo e deve ter o .odexarquivo associado para ser executado.
As ROMs geralmente são lançadas na forma desodexada porque podem ser temáticas e modificadas com bastante facilidade, enquanto que a modificação / modificação de uma ROM odexada é basicamente impossível (na melhor das hipóteses, as coisas poderiam falhar como loucas). Algumas pessoas também optam por liberar suas ROMs em versões irritantes para pessoas que preferem os ganhos de desempenho.
A maioria das ROMs de estoque que eu vi são odiadas, suponho que as operadoras / fabricantes desejam o aumento de desempenho. Eles também não possuem nenhum tipo de método oficial de temas, portanto, provavelmente não se importam se você não pode alterar as cores dos seus ícones de status, texto do sistema ou outros enfeites. Além disso, eles têm a vantagem de saber em qual dispositivo desejam executar o sistema, para que possam pré-compilar os .odexarquivos com muita facilidade, imagino. Como um bônus adicional, torna difícil extrair .apkarquivos do dispositivo e compartilhá-los com as pessoas.
Edit: Desde que eu percebi que não era muito explícito sobre a diferença aqui - uma ROM "odexed" é aquela em que os aplicativos foram pré-compilados e, portanto, contêm .odexarquivos associados que são externos aos .apkarquivos. Uma ROM "desodexada" é aquela em que os dados que seriam otimizados nos .odexarquivos foram mais ou menos mesclados de volta aos .apkarquivos (o que significa que não são otimizados, mas basicamente .apkindependentes de plataforma), portanto, os arquivos são independentes e não existem .odexarquivos . Isso geralmente é feito apenas com um utilitário de desodex, como smali / baksmali .
A última edição, tornando as coisas mais explícitas, foi muito útil. 1
Eu, pessoalmente, queria saber a resposta para isso há pouco tempo. Aqui está o que eu vim com:
Uma ROM padrão deve ser odiada para lançamento, o que fornece carregamento mais suave e rápido de aplicativos na memória. Cada .apk possui um .odex correspondente. Quando o aplicativo é usado pelo sistema ou pelo usuário, o .odex é usado para iniciar o carregamento do aplicativo. Uma ROM desodexada possui apenas o arquivo .apk. Quando o aplicativo é chamado na memória, apenas retirando os dados do arquivo .apk, isso leva mais tempo devido a não ser otimizado para facilitar a recuperação do sistema.
Perguntas comuns que me fazem com muita frequência são:
Por que as ROMs personalizadas são desodexadas?
Devo usar uma ROM odexada ou desodexada?
Para responder a essas perguntas, resume-se a uma palavra, temabilidade. Se você conversar com alguém com a ROM de temas, eles lhe dirão que é extremamente mais fácil colocar uma ROM desodexada. Desde que começamos a usar ROMs desodexadas, os themers agora podiam criar temas para aplicar a uma ROM, em vez da opção tediosa de criar um tema para a própria ROM (libere uma ROM personalizada para um tema). Se você usar uma ROM odiada e tentar aplicar temas, ela não funcionará ou apenas apresentará alguns aspectos visuais, o que proporcionará uma interface de usuário terrível para você experimentar.
Contras Deodex
Aposto que agora você está se perguntando por que ... por que existe uma opção para baixar uma ROM personalizada que é odiada? A resposta para isso é velocidade. Lembra como eu disse que os arquivos odexados são otimizados para facilitar a recuperação? Simplificando ... é otimizado (como indexar uma tabela de dados) para que o sistema possa abrir o .apk mais rapidamente.
Todo mundo queria o melhor dos dois mundos tão rapidamente, depois que a tendência desodexada começou a atingir o pico, esses desenvolvedores de ROM mais experientes criaram uma solução para zipalign na inicialização. Isso otimiza cada .apk em cada reinicialização, o que permite ao sistema acessar aplicativos com mais eficiência e, o mais importante, com mais rapidez. Obviamente, a desvantagem é o tempo de inicialização um pouco mais lento.
Se você tiver a opção de baixar a ROM personalizada odexed ou deodexed, eu apenas aceitaria a ROM deodex. Você nunca sabe quando gostaria de experimentar um tema ou fazer algumas modificações por conta própria e é bom ter opções fáceis, em vez de exibir uma ROM totalmente nova. Com dispositivos mais novos, você pode até não notar uma diferença perceptível no zipalign na inicialização. Se o seu dispositivo estiver muito lento e desatualizado, sugiro pensar um pouco mais sobre isso. Aposto que alguns de vocês preferem obter uma ROM otimizada (odexed) mínima agradável para obter melhor desempenho e velocidade do que personalizar a interface do usuário.
Se você é novo no assunto, pode encontrar alguns termos comuns localizados no meu artigo original aqui: http://codeversed.com/deodexed-vs-odexed-rom
Caso contrário, o texto acima mostra tudo o que você precisa saber. Se eu perdi alguma coisa, por favor me avise :)
Um arquivo .dex (executável dalvik) é basicamente semelhante aos arquivos .exe do Windows (exceto no idioma da Dalvik VM, em vez do código compilado). Basicamente, .odex (executável dalvik otimizado) e deodex (executável dalvik des otimizado) estão relacionados à maneira como os arquivos de recursos são manipulados nos aplicativos. O .odex é um arquivo .dex que foi otimizado pelo programa dexopt: http://www.netmite.com/android/mydroid/dalvik/docs/dexopt.html
odex é mais rápido
facilita a temática
deodex é mais lento na primeira inicialização
os arquivos .odex dificultam o tema
"Deodex" não significa .dex des otimizado, significa remover os arquivos .odex (adicione os arquivos .odex, em essência). eldarerathis está certo.
Obrigado por fornecer informações importantes sobre odexing sobre recursos! Dito isto: a comparação exe não é ótima.