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

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

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

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

Solutions Collecting From Web of "Что такое .dex-файлы в Android?"

 .dex file 

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

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

О файле .dex:

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

 Compiled Android application code file. 

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

.dex файлы похожи на файлы классов java, но они работают под управлением DVM .

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

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

Файл 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%.

Введите описание изображения здесь

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

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