Поиск по сайту

Что такое odex и deodex в Android

вкл. . Опубликовано в Статьи


Что такое odex и deodex в Android


Многие владельцы телефонов и планшетов на Android, кто сталкивался с их прошивкой обращали внимание на то, что прошивки бывают odexed и deodexed. Но не многие понимают, что скрывается за этими понятиями, и какие плюсы и минусы несет за собой тот или иной тип прошивки.

Сегодня вы узнаете, что же такое odex и deodex, и зачем оно нужно.

Если вы заглянете в папку с системными приложениями system/app на вашем планшете или телефоне со стоковой (заводской) прошивкой, то непременно заметите, что все приложения имеют кроме apk-файла, его двойник, odex-файл. Например, файлу applikatoin.apk соответствует файл applikatoin.odex.

odex-deodex

Для чего же нужен этот odex-файл? Если коротко и просто, то каждое приложение состоит из набора тех или иных инструкций, благодаря которым оно и работает, и вспомогательных данных, например, картинок, которые отображаются на экране. Вот именно, в файле odex и хранится сам код приложения.
Все программы в системе Android написаны (закодированы) на языке Java и для того, чтобы процессор устройства – его мозг, сумел выполнить этот Java код, он переводится на понятный для процессора язык виртуальной Java-машиной "Dalvik".

В деодексированной прошивке код находится внутри файла apk. Apk файлы упакованы так же, как и обычный zip файлы,и поэтому деодексированная прошивка всегда имеет меньший размер. Но код, который содержится в файле odex оптимизирован для конкретного устройства, а код который хранится в apk файле может выполняться на любом устройстве. Вы скорее всего и сами поняли, в чем плюсы odexed прошивки. Ее системные приложения уже оптимизированы для работы на конкретном оборудовании.
Зато код, который находится в деодексированном приложении, может запускаться практически на любом android устройстве и эти программы проще модифицировать. Например, чтобы поменять в нем изображения, достаточно просто распаковать apk файл, как обычный zip архив, заменить картинки и снова упаковать приложение. С odexed приложениями такой трюк не пройдет – после подобных изменений программа перестанет запускаться вообще.



Система Андроид при первоначальном запуске системных приложений deodexed прошивки, извлекает из них код, перекомпилирует и сохраняет в специальном месте: в папке dalvik-cache и потом берет уже готовый код для нужного apk-файла из этой папки. Вот поэтому и рекомендуется при перепрошивке телефона или планшета делать очистку dalvik-cache (clear dalvik-cache) – программа в новой прошивке может измениться, а система будет при ее запуске использовать старый код. Именно поэтому так долго запускаются deodexed прошивки первый раз после их установки на android устройство и очистки dalvik-cache.
Кроме того, считается, что odexed прошивки работают быстрее, чем аналогичные но, деодексированные.

Odex: Для ускорения загрузки Dalvik VM исполняемый код (classes.dex) может быть вынесен из программ (файлов .apk) в отдельные файлы с расширением .odex. Как правило, в таком виде установлены заводские (официальные) прошивки. Недостаток такого решения - невозможность кастомизации интерфейса.
Deodex: преобразование исполняемого кода из файлов .odex обратно внутрь файлов программ (.apk). Для установки Deodex'ed прошивки как правило нужен Root и CWM Recovery.

Как узнать Odex прошивка или Deodex.

Если в папке system/app находятся только файлы с расширением APK, значит прошивка deodex, если есть файлы и с расширением odex, значит прошивка odex. Все официальные прошивки odex. Почти все модифицированные прошивки deodex, но среди модифицированных встречаются также и odex прошивки.

Как деодексировать Android прошивку?