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

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

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

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

3 ответа

Решение

О файле.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 Virtual (DVM) на старых версиях Android и компилировались во время установки на устройстве в собственный код с помощью ART на новых версиях Android.

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

Есть также несколько методов обратной инженерии, чтобы сделать jar file или же java class file из .dex файл.

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 VM. .dex Файл был оптимизирован для использования памяти, а дизайн в основном основан на обмене данными.

.dex file

Файл скомпилированного кода приложения Android.

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

Здесь файл класса содержит стандартный байт-код Oracle JVM.

• DALVIK BYTECODE

[JAVA CLASS FILE]> [DEX CLASS FILE]

Поскольку файл java .class содержит стандартный байт-код JVM. Но устройства Android не используют этот формат байт-кода. Вместо этого у Android есть свой собственный отдельный формат байт-кода, который называется Dalvik. Байт-коды Dalvik, такие как байт-коды Oracle JVM, являются инструкциями машинного кода для теоретического процессора.

В процессе компиляции необходимо преобразовать файлы.class и любые библиотеки.jar в один файл classes.dex, содержащий байт-коды Dalvik. Команда dx объединяет все файлы.class и.jar в один файл classes.dex, написанный в формате байт-кода Dalvik.

Теперь это преобразование файлов.class и.jar в файлы.dex называется Dex Compilation, а полученные таким образом файлы называются Dex Files.

Другие вопросы по тегам