Mam pytania dotyczące plików dex
- Co to jest
dex
plik w systemie Android? - Jak działa dex dla Androida?
- Jak są używane w debugowaniu aplikacji na Androida?
- Czy są podobne do plików klasy Java?
Potrzebuję konkretnych informacji, proszę o pomoc, a wszelkie prawdziwe przykłady są mile widziane!
Odpowiedzi:
Informacje o pliku .dex:
Jedną z najbardziej niezwykłych cech
Dalvik Virtual Machine
(konia roboczego w systemie Android) jest to, że nie używa kodu bajtowego Java. Zamiast tego wprowadzono własny format nazwany DEX i nawet instrukcje kodu bajtowego nie są takie same jak instrukcje kodu bajtowego Java.Programy na Androida są kompilowane w
.dex
pliki (Dalvik Executable), które z kolei są spakowane do jednego.apk
pliku na urządzeniu..dex
pliki można tworzyć, automatycznie tłumacząc skompilowane aplikacje napisane w języku programowania Java.Format pliku Dex:
Android ma dokumentację dotyczącą
Dalvik Executable Format
( plików .dex ). Możesz dowiedzieć się więcej na oficjalnych dokumentach: Format pliku Dex.dex
pliki są podobne do plików klasy Java, ale zostały uruchomione pod Dalkvik Virtual Machine (DVM) na starszych wersjach Androida i skompilowane w czasie instalacji na urządzeniu do natywnego kodu z ART na nowszych wersjach Androida.Możesz
decompile
.dex za pomocądexdump
narzędzia dostarczonego w systemie Android-SDK.Istnieje również kilka technik inżynierii odwrotnej do utworzenia pliku
jar file
lubjava class file
z.dex
pliku.źródło
dexdump
nie jest to dekompilator, ale deasemblerSkompilowany plik kodu aplikacji na Androida.
Programy na Androida są kompilowane do plików .dex (Dalvik Executable), które z kolei są spakowane do jednego pliku .apk na urządzeniu. Pliki .dex mogą być tworzone automatycznie przez Androida, tłumacząc skompilowane aplikacje napisane w języku programowania Java.
źródło
dex
plik to plik wykonywany na maszynie wirtualnej Dalvik.Dalvik VM zawiera kilka funkcji służących do optymalizacji, weryfikacji i monitorowania wydajności, z których jedną jest Dalvik Executable (DEX) .
Kod źródłowy Java jest kompilowany przez kompilator Java w
.class
pliki. Następnie narzędziedx
(dexer), część zestawu Android SDK, przetwarza.class
pliki do formatu o nazwieDEX
zawierającej kod bajtowy Dalvik.dx
Narzędzie eliminuje wszystkie zbędne informacje, które są obecne w zajęciach. WeDEX
wszystkich klasach aplikacji są spakowane w jednym pliku. Poniższa tabela zawiera porównanie rozmiarów kodów dla plików jar JVM i plików przetwarzanych przezdex
narzędzie.Tabela porównuje rozmiary kodów dla bibliotek systemowych, aplikacji przeglądarki internetowej i aplikacji ogólnego przeznaczenia (aplikacja budzika). We wszystkich przypadkach narzędzie dex zmniejszyło rozmiar kodu o ponad 50%.
W standardowych środowiskach Java każda klasa kodu Java daje jeden
.class
plik. Oznacza to, że jeśli plik kodu źródłowego Java ma jedną klasę publiczną i dwie klasy anonimowe, powiedzmy do obsługi zdarzeń, wówczas kompilator Java utworzy łącznie trzy.class
pliki.Krok kompilacji jest taki sam na platformie Android, w wyniku czego powstaje wiele
.class
plików. Ale po.class
wygenerowaniu plików narzędzie „dx” służy do konwersji wszystkich.class
plików w pojedynczy.dex
plik wykonywalny Dalvik. Jest to.dex
plik wykonywany na maszynie wirtualnej Dalvik..dex
Plik został zoptymalizowany pod kątem wykorzystania pamięci i projekt jest głównie poprzez wymianę danych.źródło