У меня есть несколько вопросов относительно файлов dex
- Что такое
dex
файл в Android? - Как работает dex для Android?
- Как они используются при отладке приложения для Android?
- Они похожи на файлы классов Java?
Мне нужна конкретная информация, пожалуйста, помогите по этому вопросу, и любые реальные примеры приветствуются!
Ответы:
О файле .dex:
Одна из самых замечательных особенностей
Dalvik Virtual Machine
(рабочая лошадка в системе Android) заключается в том, что она не использует байт-код Java. Вместо этого был введен собственный формат, называемый DEX, и даже инструкции байт-кода не совпадают с инструкциями байт-кода Java.Программы Android скомпилированы в
.dex
(исполняемые файлы Dalvik) файлы, которые, в свою очередь, упакованы в один.apk
файл на устройстве..dex
файлы могут быть созданы путем автоматического перевода скомпилированных приложений, написанных на языке программирования Java.Формат файла Dex:
У Android есть документация
Dalvik Executable Format
( файлы .dex ). Вы можете узнать больше на официальных документах: Dex File Format.dex
файлы похожи на файлы классов java, но они запускались под виртуальной машиной Dalkvik (DVM) в более старых версиях Android и компилировались во время установки на устройстве в собственный код с помощью ART на более новых версиях Android.Вы можете
decompile
.dex, используяdexdump
инструмент, который предоставляется в Android-SDK.Существуют также некоторые методы обратного проектирования для создания
jar file
илиjava class file
из.dex
файла.источник
dexdump
это не декомпилятор, а дизассемблерСкомпилированный файл кода приложения Android.
Программы Android скомпилированы в файлы .dex (исполняемые Dalvik), которые, в свою очередь, заархивированы в один файл .apk на устройстве. Файлы .dex могут создаваться автоматически Android путем перевода скомпилированных приложений, написанных на языке программирования Java.
источник
dex
файл - это файл, который выполняется на виртуальной машине Dalvik.Dalvik VM включает в себя несколько функций для оптимизации, проверки и мониторинга производительности, одной из которых является Dalvik Executable (DEX) .
Исходный код Java компилируется компилятором Java в
.class
файлы. Затемdx
инструмент (dexer), входящий в состав Android SDK, обрабатывает.class
файлы в формате, называемом,DEX
который содержит байт-код Dalvik.dx
Инструмент устраняет все избыточную информацию, которая присутствует в классах. ВоDEX
всех классах приложения упакованы в один файл. В следующей таблице приведено сравнение размеров кода для jar-файлов JVM и файлов, обрабатываемыхdex
инструментом.В таблице сравниваются размеры кода для системных библиотек, приложений веб-браузера и приложения общего назначения (приложение будильника). Во всех случаях инструмент dex уменьшал размер кода более чем на 50%.
В стандартных средах Java каждый класс в коде Java приводит к одному
.class
файлу. Это означает, что если файл исходного кода Java имеет один открытый класс и два анонимных класса, скажем, для обработки событий, то компилятор java создаст всего три.class
файла.Шаг компиляции такой же на платформе Android, что приводит к нескольким
.class
файлам. Но после.class
генерации файлов инструмент «dx» используется для преобразования всех.class
файлов в один.dex
или исполняемый файл Dalvik. Это.dex
файл, который выполняется на виртуальной машине Dalvik..dex
Файл был оптимизирован для использования памяти и дизайна в основном за счет совместного использования данных.источник