Что.DeX файлы в Android?

У меня есть несколько вопросов по поводу DeX файлы

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

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

4 ответов


об .файл dex:

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

Compiled Android application code file.

Android программы компилируются в .dex (исполняемый файл Dalvik) файлы, которые, в свою очередь, сжаты в один на устройство. .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 (.Декс!--15--> файлы). Вы можете узнать больше в официальных документах:Формат Файла Dex

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

вы можете decompile .Декс с помощью dexdump инструмент, который предоставляется в Android-sdk.

есть также некоторые Методы Обратного Проектирования сделать jar file или java class file С .


.dex file

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

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


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

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

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

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

enter image description here

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

шаг компиляции одинаковый на платформе Android, что приводит к нескольким .class файлы. Но после .class генерируются файлы, используется инструмент " dx чтобы преобразовать все .class файлы в один .dex, или исполняемый файл Dalvik. Это .dex файл, который выполняется на виртуальной машине Dalvik. The .dex файл был оптимизирован для использования памяти, и дизайн в первую очередь определяется обменом данными.


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

• БАЙТ-КОД DALVIK

[ ФАЙЛ КЛАССА JAVA ] > [ ФАЙЛ КЛАССА DEX ]

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

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

Итак, это преобразование .класс и. jar файлы В.файлы dex называются компиляцией Dex, а полученные таким образом файлы называются файлами Dex.