Что такое файлы .dex в Android? - PullRequest
166 голосов
/ 13 октября 2011

У меня есть несколько вопросов относительно файлов dex

  • Что такое файл dex в Android?
  • Как работает dex для Android?
  • Как они используются при отладке приложения для Android?
  • Они похожи на файлы классов Java?

Мне нужна конкретная информация, пожалуйста, помогите по этому вопросу, и любые реальные примерыДобро пожаловать!

Ответы [ 3 ]

197 голосов
/ 13 октября 2011

О файле .dex:

Одна из самых замечательных особенностей Dalvik Virtual Machine (рабочая лошадка в системе Android) заключается в том, что он не использует байт-код Java.Вместо этого был введен собственный формат, называемый DEX, и даже инструкции байт-кода не совпадают с инструкциями байт-кода Java.

Compiled Android application code file.

Программы Android скомпилированы в .dex (исполняемые файлы Dalvik), которые, в свою очередь, заархивированы в один файл .apk на устройстве.Файлы .dex могут быть созданы путем автоматического перевода скомпилированных приложений, написанных на языке программирования Java.

Формат файла 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 имеет документацию по Dalvik Executable Format ( .dex файлы).Вы можете узнать больше в официальных документах: Формат файла Dex

.dex файлы похожи на файлы классов java, но они запускались под виртуальной машиной Dalkvik (DVM) наболее старые версии Android и скомпилированные во время установки на устройстве исходный код с помощью ART на новых версиях Android.

Вы можете decompile .dex, используя инструмент dexdump, который предоставляется в android-sdk.

Существует также несколько методов обратной инженерии для создания jar file или java class file из файла .dex.

88 голосов
/ 13 октября 2011
.dex file

Скомпилированный файл кода приложения Android.

Программы Android скомпилированы в файлы .dex (исполняемые Dalvik), которые, в свою очередь, упакованы в один файл .apk на устройстве.Файлы .dex могут создаваться автоматически с помощью Android путем перевода скомпилированных приложений, написанных на языке программирования Java.

78 голосов
/ 09 января 2015

dex файл - это файл, который выполняется на виртуальной машине Dalvik.

Dalvik VM содержит несколько функций для оптимизации производительности, проверки и мониторинга, одна из которых - Исполняемая программа Dalvik (DEX).

Исходный код Java компилируется компилятором Java в файлы .class.Затем инструмент dx (dexer), входящий в состав Android SDK, обрабатывает файлы .class в формате файлов DEX, который содержит байт-код Dalvik.Инструмент dx устраняет всю избыточную информацию, присутствующую в классах.В DEX все классы приложения упакованы в один файл.В следующей таблице приводится сравнение размеров кода для jar-файлов JVM и файлов, обрабатываемых инструментом dex.

В таблице сравниваются размеры кода для системных библиотек, приложений веб-браузера и приложения общего назначения (приложение будильника).Во всех случаях инструмент dex уменьшал размер кода более чем на 50%.

enter image description here

В стандартных средах Java каждый класс в коде Java приводит к одному файлу .class.Это означает, что если файл исходного кода Java имеет один открытый класс и два анонимных класса, скажем, для обработки событий, то компилятор java создаст всего три .class файла.

Шаг компиляции такой же наПлатформа Android, в результате чего получается несколько .class файлов.Но после создания файлов .class инструмент «dx» используется для преобразования всех файлов .class в один файл .dex или Dalvik Executable.Это файл .dex, который выполняется на виртуальной машине Dalvik.Файл .dex был оптимизирован для использования памяти, а дизайн в основном основан на обмене данными.

...