2011-10-13 11 views
129

Ho alcune domande riguardanti file DEXChe cosa sono i file .dex in Android?

  • Che cosa è un file dex in Android?
  • Come funziona dex per Android?
  • Come vengono utilizzati nel debug di un'app per Android?
  • Sono simili ai file di classe java?

Ho bisogno di informazioni specifiche, per favore aiutateci e ogni vero esempio è benvenuto!

+0

plz Visto questo link http://stackoverflow.com/questions/1249973/decompiling-dex-into-java-sourcecode – Gensheriff

+0

come eseguirli sul dispositivo: http://stackoverflow.com/questions/10199863/how- to-execute-the-dex-file-in-android-with-command –

risposta

84
.dex file 

File di codice dell'applicazione Android compilato.

I programmi Android sono compilati in file .dex (Dalvik Executable), che a loro volta vengono compressi in un singolo file .apk sul dispositivo. I file .dex possono essere creati automaticamente da Android, traducendo le applicazioni compilate scritte nel linguaggio di programmazione Java.

+2

Il mio file jar contiene alcuni xml nella cartella delle risorse. Voglio che faccia parte di .dex Qualche idea su come implementarlo? – AndroidGuy

154

Circa il file .dex:

Una delle caratteristiche più notevoli del Dalvik Virtual Machine (il cavallo di battaglia con il sistema Android) è che non fa uso di Java bytecode. Invece, è stato introdotto un formato homegrown chiamato DEX e nemmeno le istruzioni bytecode sono le stesse delle istruzioni bytecode Java.

Compiled Android application code file. 

programmi Android vengono compilati in file .dex (Dalvik Executable), che sono a loro volta compressi in un unico .apk file sul dispositivo. I file .dex possono essere creati convertendo automaticamente le applicazioni compilate scritte nel linguaggio di programmazione Java.

formato di file Dex:

1. File Header 
2. String Table 
3. Class List 
4. Field Table 
5. Method Table 
6. Class Definition Table 
7. Field List 
8. Method List 
9. Code Header 
10. Local Variable List 

Android ha documentazione sulle (.dex file) Dalvik Executable Format. È possibile trovare maggiori corso presso la documentazione ufficiale: Dex File Format

.dex file sono simili ai file di classe Java, ma sono stati eseguiti sotto la Dalkvik Virtuale (DVM) sulle versioni di Android più vecchie, e compilato al momento dell'installazione del dispositivo di codice nativo con ART sulle versioni Android più recenti.

È possibile decompile .dex utilizzando lo strumento dexdump fornito in android-sdk.

ci sono anche alcuni tecniche di Reverse Engineering per fare un jar file o java class file da un file .dex.

+0

Il mio file jar contiene qualche xml nella cartella delle risorse. Voglio che faccia parte di .dex Qualche idea su come implementarlo? – AndroidGuy

+0

@AndroidGuy - Il file Jar non contiene alcun pacchetto di risorse Android (/ asset) devi utilizzare il pacchetto di libreria Android per questo. – user370305

+1

JADX: decompilatore da Dex a Java https://github.com/skylot/jadx (licenza Apache) – foo

63

dex Il file è un file che viene eseguito su Dalvik VM.

Dalvik VM include diverse funzionalità per l'ottimizzazione delle prestazioni, la verifica e il monitoraggio, uno dei quali è Dalvik Executable (DEX).

Il codice sorgente Java viene compilato dal compilatore Java nei file .class. Quindi lo strumento dx (dexer), parte di Android SDK elabora i file .class in un formato file denominato DEX che contiene il codice byte Dalvik. Lo strumento dx elimina tutte le informazioni ridondanti presenti nelle classi. In DEX tutte le classi dell'applicazione sono raggruppate in un unico file. La seguente tabella fornisce il confronto tra le dimensioni del codice per i file jar JVM e i file elaborati dallo strumento dex.

La tabella confronta le dimensioni del codice per le librerie di sistema, le applicazioni del browser Web e un'applicazione generica (app sveglia). In tutti i casi, lo strumento dex ha ridotto le dimensioni del codice di oltre il 50%.

enter image description here

In serie Ambienti Java ogni classe in Java risultati di codice in un file di .class. Ciò significa che se il file del codice sorgente Java ha una classe pubblica e due classi anonime, diciamo per la gestione degli eventi, il compilatore java creerà un totale di tre file .class.

Il passo di compilazione è lo stesso sulla piattaforma Android, risultando così in più file .class. Ma dopo la generazione dei file .class, lo strumento "dx" viene utilizzato per convertire tutti i file .class in un singolo file .dex o Dalvik eseguibile. È il file .dex che viene eseguito su Dalvik VM. Il file .dex è stato ottimizzato per l'utilizzo della memoria e il design è principalmente guidato dalla condivisione dei dati.

+2

questa è una risposta migliore e completa di altre – Joe

+11

Buone informazioni. Solo una cosa da sottolineare. A volte ci saranno più file dex a causa del limite del numero di istruzioni di invocazione del metodo. Questo limite è 65k metodi. In tal caso il tuo codice non sarà all'interno di un singolo file ma in 2 o più ma tutto il resto si applica ancora. Inoltre, poiché è disponibile anche il caricamento dinamico della classe, è possibile caricare il codice (sempre in forma dex) dai file e quindi il codice si troverà in più file dex. – PSIXO

+1

risposta perfetta ... –

0

Il file di classe contiene il codice byte Oracle JVM standard.

• Dalvik bytecode

[JAVA classe File]> [DEX classe File]

Dal momento che, il file Java .class contiene JVM byte-codice standard. Ma i dispositivi Android non usano questo formato di byte-code. Invece, Android ha il suo formato distinto di codice byte chiamato Dalvik. I codici byte Dalvik, come i codici byte Oracle JVM, sono istruzioni per codice macchina per un processore teorico.

Il processo di compilazione deve convertire i file .class e le eventuali librerie .jar in un singolo file classes.dex contenente codici byte Dalvik. Il comando dx unisce tutti i file .class e .jar insieme in un singolo file classes.dex scritto in formato byte byte di Dalvik.

Ora, questa conversione di file .class e .jar in file .dex si chiama Dex Compilation ei file così ottenuti sono chiamati file Dex.

Problemi correlati