Tenho algumas perguntas sobre arquivos dex
- O que é um
dex
arquivo no Android? - Como o dex funciona no Android?
- Como eles são usados na depuração de um aplicativo Android?
- Eles são semelhantes aos arquivos de classe java?
Preciso de informações específicas, por favor ajude sobre isso e quaisquer exemplos reais são bem-vindos!
Respostas:
Sobre o arquivo .dex:
Uma das características mais notáveis do
Dalvik Virtual Machine
(o cavalo de batalha do sistema Android) é que ele não usa o bytecode Java. Em vez disso, um formato interno chamado DEX foi introduzido e nem mesmo as instruções do bytecode são as mesmas que as instruções do Java bytecode.Os programas Android são compilados em
.dex
arquivos (Dalvik Executable), que por sua vez são compactados em um único.apk
arquivo no dispositivo..dex
arquivos podem ser criados traduzindo automaticamente aplicativos compilados escritos na linguagem de programação Java.Formato de arquivo Dex:
O Android tem documentação sobre os
Dalvik Executable Format
( arquivos .dex ). Você pode descobrir mais nos documentos oficiais: Dex File Format.dex
os arquivos são semelhantes aos arquivos da classe java, mas foram executados na Dalkvik Virtual Machine (DVM) em versões mais antigas do Android e compilados no momento da instalação no dispositivo para codificar nativamente com ART nas versões mais recentes do Android.Você pode
decompile
.dex usando adexdump
ferramenta fornecida no android-sdk.Existem também algumas técnicas de engenharia reversa para criar um
jar file
ou ajava class file
partir de um.dex
arquivo.fonte
dexdump
não é um decompiler, mas um desmontadorArquivo de código do aplicativo Android compilado.
Os programas Android são compilados em arquivos .dex (Dalvik Executable), que por sua vez são compactados em um único arquivo .apk no dispositivo. Os arquivos .dex podem ser criados automaticamente pelo Android, traduzindo os aplicativos compilados escritos na linguagem de programação Java.
fonte
dex
file é um arquivo que é executado na VM do Dalvik.O Dalvik VM inclui vários recursos para otimização, verificação e monitoramento de desempenho, um dos quais é o Dalvik Executable (DEX) .
O código-fonte Java é compilado pelo compilador Java em
.class
arquivos. Em seguida, adx
ferramenta (dexer), parte do SDK do Android, processa os.class
arquivos em um formato de arquivo chamadoDEX
que contém o código de bytes Dalvik. Adx
ferramenta elimina todas as informações redundantes presentes nas classes. EmDEX
todas as classes do aplicativo são compactadas em um arquivo. A tabela a seguir fornece comparação entre tamanhos de código para arquivos jar da JVM e os arquivos processados peladex
ferramenta.A tabela compara tamanhos de código para bibliotecas do sistema, aplicativos de navegador da Web e um aplicativo de uso geral (aplicativo de despertador). Em todos os casos, a ferramenta dex reduziu o tamanho do código em mais de 50%.
Nos ambientes Java padrão, cada classe no código Java resulta em um
.class
arquivo. Isso significa que, se o arquivo de código-fonte Java tiver uma classe pública e duas classes anônimas, digamos que para manipulação de eventos, o compilador java criará um total de três.class
arquivos.A etapa de compilação é a mesma na plataforma Android, resultando em vários
.class
arquivos. Porém, depois que os.class
arquivos são gerados, a ferramenta “dx” é usada para converter todos os.class
arquivos em um único.dex
arquivo, ou Dalvik Executable. É o.dex
arquivo que é executado na VM Dalvik. O.dex
arquivo foi otimizado para uso da memória e o design é impulsionado principalmente pelo compartilhamento de dados.fonte