Что такое .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
был оптимизирован для использования памяти, и дизайн в первую очередь определяется совместным использованием данных.