Что такое .dex файлы в Android?

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

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

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

Ответ 1

О файле .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 File Format

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

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

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

Ответ 2

.dex file

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

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

Ответ 3

dex файл - это файл, который выполняется на VM Dalvik.

Dalvik VM включает несколько функций для оптимизации производительности, проверки и мониторинга, один из которых Dalvik Executable (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, который выполняется на VM Dalvik. Файл .dex был оптимизирован для использования памяти, и дизайн в первую очередь определяется совместным использованием данных.