Ich habe einige Fragen zu Dex-Dateien
- Was ist eine
dex
Datei in Android? - Wie funktioniert Dex für Android?
- Wie werden sie beim Debuggen einer Android-App verwendet?
- Sind sie Java-Klassendateien ähnlich?
Ich brauche spezielle Informationen, bitte helfen Sie dabei und echte Beispiele sind willkommen!
Antworten:
Über die .dex-Datei:
Eine der bemerkenswertesten Eigenschaften des
Dalvik Virtual Machine
(Arbeitspferdes unter dem Android-System) ist, dass es keinen Java-Bytecode verwendet. Stattdessen wurde ein selbst entwickeltes Format namens DEX eingeführt, und nicht einmal die Bytecode-Anweisungen sind mit den Java-Bytecode-Anweisungen identisch.Android-Programme werden in
.dex
(Dalvik Executable) Dateien kompiliert , die wiederum in eine einzelne.apk
Datei auf dem Gerät komprimiert werden..dex
Dateien können erstellt werden, indem kompilierte Anwendungen, die in der Programmiersprache Java geschrieben sind, automatisch übersetzt werden.Dex-Dateiformat:
Android hat Dokumentation zu den
Dalvik Executable Format
( .dex- Dateien). Weitere Informationen finden Sie in den offiziellen Dokumenten: Dex-Dateiformat.dex
Dateien ähneln Java-Klassendateien, wurden jedoch unter der Dalkvik Virtual Machine (DVM) in älteren Android-Versionen ausgeführt und bei der Installation auf dem Gerät zu nativem Code mit ART in neueren Android-Versionen kompiliert.Sie können
decompile
.dex mit demdexdump
Tool, das in android-sdk bereitgestellt wird.Es gibt auch einige Reverse Engineering-Techniken , um eine
jar file
oderjava class file
aus einer.dex
Datei zu erstellen.quelle
dexdump
es sich nicht um einen Dekompiler, sondern um einen Disassembler handeltKompilierte Android-Anwendungscodedatei.
Android-Programme werden in .dex-Dateien (Dalvik Executable) kompiliert, die wiederum in eine einzelne .apk-Datei auf dem Gerät komprimiert werden. .dex-Dateien können von Android automatisch erstellt werden, indem die kompilierten Anwendungen in die Programmiersprache Java übersetzt werden.
quelle
dex
Datei ist eine Datei, die auf der Dalvik VM ausgeführt wird.Dalvik VM enthält mehrere Funktionen zur Leistungsoptimierung, -verifizierung und -überwachung, darunter Dalvik Executable (DEX) .
Java-Quellcode wird vom Java-Compiler in
.class
Dateien kompiliert . Anschließend verarbeitet dasdx
(Dexer-) Tool, das Teil des Android SDK ist, die.class
Dateien in ein Dateiformat namensDEX
Dalvik-Bytecode. Dasdx
Tool eliminiert alle redundanten Informationen, die in den Klassen vorhanden sind. InDEX
allen Klassen der Anwendung sind in einer Datei gepackt. Die folgende Tabelle bietet einen Vergleich zwischen den Codegrößen für JVM-JAR-Dateien und den vomdex
Tool verarbeiteten Dateien .In der Tabelle werden die Codegrößen für Systembibliotheken, Webbrowseranwendungen und eine Allzweckanwendung (Wecker-App) verglichen. In allen Fällen reduzierte das Dex-Tool die Größe des Codes um mehr als 50%.
In Standard-Java-Umgebungen führt jede Klasse in Java-Code zu einer
.class
Datei. Das heißt, wenn die Java-Quellcodedatei eine öffentliche Klasse und zwei anonyme Klassen hat, beispielsweise für die Ereignisbehandlung, erstellt der Java-Compiler insgesamt drei.class
Dateien.Der Kompilierungsschritt ist auf der Android-Plattform identisch, sodass mehrere
.class
Dateien erstellt werden. Nachdem die.class
Dateien generiert wurden, werden mit dem Tool "dx" alle.class
Dateien in eine einzelne.dex
oder Dalvik Executable-Datei konvertiert . Es ist die.dex
Datei, die auf der Dalvik-VM ausgeführt wird. Die.dex
Datei wurde für die Speichernutzung optimiert und das Design basiert hauptsächlich auf der gemeinsamen Nutzung von Daten.quelle