Як деодексувати прошивку за допомогою jbart ODEX та DEODEX, що це таке і навіщо це потрібно? Розпакування та аналіз оригінального файлу

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

Сьогодні я спробую простими словамипояснити, що таке odex і deodex, і чого воно потрібно.

Якщо ви заглянете в папку із системними програмами на планшеті або телефоні з стокове (заводською) прошивкою, то помітите, що кожен додаток має крім apk-файлу, його двійник, odex-файл. Наприклад, файл applikatoin.apk відповідає файлу applikatoin.odex.

Навіщо потрібен цей odex-файл? Якщо коротко (і спрощено), кожна програма складається з набору інструкцій, завдяки яким вона працює, і допоміжних даних, наприклад, картинок, що відображаються на екрані. Так от, у файлі odex і зберігається сам код програми.

Всі програми в системі Androidнаписані (закодовані) на мовою Javaі для того, щоб мозок пристрою - його процесор зміг виконати цей Java код, він перекладається зрозумілою для процесора мовою віртуальної Java-машиною "Dalvik".

У деодексованій прошивці код знаходиться всередині apk файлу. Apk файли упаковані так само, як і звичайний zip файлитому деодексована прошивка зазвичай має менший розмір.

Ви вже, мабуть, і самі зрозуміли, у чому перевага odexed прошивки. Її системні програми вже оптимізовані для роботи на конкретному устаткуванні.

Натомість код, який міститься в деодексованому додатку, може запускатися на будь-якому android пристрої та такі програми простіше модифікувати. Наприклад, щоб замінити в ньому зображення, достатньо розпакувати apk файл як звичайний zip архів, замінити зображення і запакувати додаток знову. З odexed програмами такий номер не пройде – після подібних змін програма може перестати запускатися взагалі.

Система Android під час першого запуску системних додатків deodexed прошивки, витягує з них код, перекомпілює та зберігає у спеціальному місці: у папці dalvik-cache і потім бере вже готовий код для потрібного apk-файлу з цієї папки. Тому і рекомендується при перепрошивці планшета або телефону робити очищення dalvik-cache (clear dalvik-cache) – програма новій прошивціможе змінитись, а система буде при її запуску використовувати старий код. І тому так довго запускаються deodexed прошивки вперше після їх встановлення на пристрій та очищення dalvik-cache.

Крім того, вважається, що odexed прошивки працюють швидше, ніж аналогічні але, деодексовані.

Рано чи пізно зіткнеться з таким поняттям, як Одекс та Деодекс. Особливо важливо знати про них у той момент, коли користувач вирішить змінити прошивку. Не всі можуть правильно пояснити, Odex і Deodex – що це? Іноді це заважає вибрати та встановити правильне програмне забезпечення на мобільний пристрій. У результаті робота смартфона або планшета не виправдовує очікування користувача. Справа в тому, що всіх користувачів умовно можна поділити на дві категорії. Перша цінує стабільну, швидку та надійну роботу. Такі користувачі рідко застосовують кастомні прошивки і на пристроях. Друга категорія, навпаки, вважає за краще повністю налаштовувати гаджет, виходячи з індивідуальних потреб. Такі користувачі часто використовують кастомні прошивки, отримують права rootі не бояться на свій страх та ризик змінювати важливі параметри, що впливають на роботу операційної системипланшет або смартфон. У будь-якому випадку інформація про те, в чому полягає різниця між Deodex і Odex, буде корисною для всіх категорій користувачів, незалежно від їх потреб у використанні мобільних гаджетів і ставлення до зміни важливих налаштувань.

Різниця між Odex та Deodex прошивками, а також їх переваги та недоліки

Що таке Odex та Deodex?

Odex – це загальне поняття, що має на увазі заводську прошивкумобільного гаджета, що функціонує на операційній системі Android. Іноді їх називають одексованими. Deodex – це кастомна версія прошивки або, як кажуть деякі, – деодексована.

Кожна програма має виконавчий розділ. У кастомній операційній системі, Андроїд знаходиться у файлі classes.DEX, при цьому оригінальна версія містить виконавчий розділ віртуальній машині Dalvik Virtual Machine, що операційної системи. Odex розшифровується як "Optimized Dalvik Executable File". Принцип роботи файлу Odex полягає в тому, що він дозволяє отримувати операційній системі дані безпосередньо, не здійснюючи пошуку та розархівування інформації з файлів з розширенням apk.

Що таке Deodex прошивки? Це варіант програмного забезпечення, при якому розділ програми, що виконується, перепакований у файл classes.dex, після чого знову переміщений у файл apk. Це дозволяє зберігати всі елементи програми в одному розділі, при цьому знижується ризик внести збій у роботу програми під час зміни налаштувань користувача.

Дізнатись про те, Odex або Deodex прошивка встановлена ​​на вашому мобільному пристрої, дуже просто. Для цього користувачеві необхідно використовувати файловий менеджер. Користувачу потрібно зайти в папку /system/app. Залежно від того, яке розширення буде мати файли, що містяться в папці, можна визначити тип системи. Розширення odex говорить про одексований варіант. Якщо ви не знаходите файл у системній папці, то це означає, що на мобільному пристрої встановлена ​​деодексована прошивка.

Переваги і недоліки

Не можна говорити однозначно, що краще – Odex чи Deodex? Обидва варіанти мають свої переваги та недоліки. Плюси одексованої версії полягають у тому, що запуск програм здійснюється набагато швидше. Це стає можливим завдяки попередньому завантаженню інформації системою. При цьому для файлів з розширенням apk потрібно менше пам'яті пристрою.

Переваги деодексованих систем полягають у тому, що набагато простіше деінсталювати непотрібний додаток. Для цього потрібно просто видалити файл apk, який відповідає за роботу програми. Також важливо відзначити, що набагато простіше відбувається модифікація операційної системи, оскільки дані розміщені в одному .

Одексовану оболонку набагато складніше «зламувати», оскільки вона бере дані із двох різних розділів. Існують особливості видалення програм, тому рекомендуємо уважно виконувати цей процес. Слід також видаляти файли з розширенням odex. До недоліків деодексованих оболонок відноситься повільніша робота, яка виникає через автоматичне очищення кешу, який зберігає дані найбільш затребуваних програм.

Як зробити Deodex-версію?

Існує простий спосіб, завдяки якому можна зробити Deodex-прошивку з одексованої. Для цього необхідно завантажити та встановити утиліту xUltimate. Потім слід виконати кілька простих дій.

Якщо ви активно цікавитеся світом Android, встановлюєте кастомні прошивки та різні моди, то, напевно, вже чули про те, що існують прошивки Odex і Deodex, що це означає? Дізнаєтесь з цієї статті!

Що означає Odex, Deodex

Навіщо потрібен Deodex?

Небагато забігаючи на перед, щоб все відразу розставити на свої місця: Deodex додатків у прошивці необхідний тим, хто хоче встановлювати різні моди - які можуть кардинально змінити зовнішній вигляд Android (змінити іконки, змінити рядок повідомлень, додати або прибрати меню). Тепер розглянемо, що таке взагалі odex і deodex.

Що таке Odex?

У будь-якій програмі є так звана виконавча частина, яка виконує введені дані користувача. В ОС Android даначастина винесена в окремий файл у classes. DEX

Однак як правило в офіційних прошивках ця частина програми винесена назовні, для прискорення запуску системи та обробки у віртуальній машині Dalvik Virtual Machine(До Android 4.4). Якщо виконавчу частину винесено назовні, то вона називається ODEX.З приходом нового середовища виконання Android-додатків під назв ARTAndroid Lollipop 5.0), великі зміни у роботі додатків, але потреба в deodex для любителів модів збереглася.

Плюси та мінуси Odex та Deodex прошивок

Odex

  • - Odex, важче модифікувати прошивку
  • + Odex, працює трохи швидше
  • + Odex, займає менше місця для встановлення додатків

Deodex

  • - Deodex - якщо пішло щось не так під час деодексації, то прийде перепрошити Android
  • + Deodex - легка кастомізація прошивки
  • - Deodex - більше займає пам'яті для встановлення програм

Як отримати Deodex прошивку?

Нижче будуть представлені програми, за допомогою яких можна виконати Deodex прошивки. Але для цього вам потрібно трохи підготуватись.

  1. Вам необхідно завантажити та встановити Java JDK на комп'ютер
  2. Встановіть менеджер файлів Root Browser і за допомогою його перейти до розділу /system і скопіювати наступні папки в внутрішню пам'ятьабо картку пам'яті:
    • /priv-app
    • /framework

Deodex прошивки за допомогою JoelDroid Batch Deodexer

Версії Android: Lollipop 5.x.x
Необхідно для роботи: NET Framework 4.5 та Java JDK
завантажити: JoelDroid Batch Deodexer

Як користуватися JoelDroid Batch Deodexer

  1. Папки Android (app, priv-app, framework) скопіювати в якусь одну на комп'ютері (наприклад MyRom)
  2. Запустити програму JoelDroid Batch Deodexer та вказати розташування, натиснувши на "Browse", папки де знаходиться (app, priv-app, framework)
  3. Натиснути "Start Process"

Deodex прошивки за допомогою Deodexer for Android Runtime

Версії Android: Lollipop 5.x.x, Marshmallow 6.x.x
Необхідно для роботи: Java JDK
завантажити: Deodexer for Android Runtime

Як користуватися Deodexer for Android Runtime

  1. Розпакувати архів, в якому знаходиться папка з програмою
  2. Папки Android (app, priv-app, framework) скопіювати в якусь одну на комп'ютері (наприклад system)
  3. Запустити програму Deodexer for Android Runtime та вказати розташування папки де знаходиться (app, priv-app, framework)
  4. Відзначити для deodex: app, priv-app, framework
  5. Натиснути кнопку Execute

Deodex прошивки за допомогою Jbart

Версії Android: Ginerbread 2.3.x - Marshmallow 6.x.x
Необхідно для роботи: Java JDK
завантажити: Jbart

Як користуватися Jbart

  1. Розпакувати архів, в якому знаходиться папка з програмою
  2. Запустити Jbart
  3. завантажити всю папку з /system c Android, перемістити на комп'ютер і запакувати в ZIP архів або вам знадобиться прошивка упакована в ZIP
  4. Вказати ZIP архів
  5. Вибрати версію Android (Rom API)
  6. Внизу справа натиснути на "D - (Deodex)"

От і все! Більше статей та інструкцій читайте у розділі Статті та Хакі Android. Залишайтесь разом із сайтом Android +1, Далі буде ще цікавіше!

Привіт Хабре!

Декілька років тому, коли я вперше познайомився з Android, я почув від свого колеги по роботі, що Android передбачає можливість встановлення модифікованих або саморобних прошивок. Зізнатись, тоді я був далекий від цього. І навіть півроку тому мене ледве цікавили подібні речі. Глибоко в душі, я був певен: те, що робить виробник, вже призначено для нормального використання.

Яке ж було моє розчарування, коли я придбав телефон із піднебесної, де заводськими налаштуваннями було заборонено використання Google, Skype, Facebook та інших додатків. В принципі, на деякі речі можна було заплющити очі, але коли мій телефон не припускав використання облікової запису Google- я взяв із себе обіцянки обов'язково розібратися у що б мені це не стало.

Пройшло півроку і мої кастомні прошивки з успіхом використовуються у всьому світі.

У цій серії статей йтиметься про те, як робити reverse програмування для Android, реалізовувати патчі, твікі та моди.

Преамбула

І так! Давайте спершу визначимося з поняттями, які будуть використовуватись у даноїстатті. Ваше звичне розуміння при цьому може сильно відрізнятися.

Патч- Зміна або заміна існуючого програмного кодуіз метою модифікації алгоритму програми.
Мод- як правило, додавання додаткового функціоналу до існуючого програмного коду без зміни алгоритму.
Твік- удосконалення функціоналу програми з метою полегшення доступу до параметрів системи.

Також хочу зауважити, що всі приклади буде взято для телефону HTCале це не означає, що дана інформаціяне можна використовувати на інших телефонах.

Підготовка середовища

Обійдусь без докладних інструкційяк користуватися тим чи іншим програмним забезпеченням. Якщо вам цікава ця стаття і ви дочитали до цих рядків, то я сподіваюся, що ви вже досвідчений користувач і маєте досвід використання, чи хоча б експериментування в даній галузі. Інструкцій, статей та результатів тестування повно в відкритому доступі, Втім, як і на Хабрі. Також обійдуся без опису деяких термінів, інакше стаття вийде дуже великою та нудною. Писатимемо лише у справі. Впевнений, що середовище у вас вже давно стоїть. Якщо ні, то пропоную завантажити та встановити.

1 . Android SDK. Це середовище розробки додатків для Андроїд. Для того, щоб робити модифікації, нам обов'язково доведеться перевіряти наш програмний код. Середовище розробки є найкращим, що ми можемо використовувати.
2 . Android Kitchen. Дана утиліта дозволить вам працювати з образами системних партій офіційної або неофіційної прошивки.
3 . JD-GUI. Декомпілятор програмного коду Java. Відразу зазначу, що це найкращий декомпілятор щодо зручності використання.
4 . DJ Java Decompiler. Ще один декомпілятор, або дизассемблер, як дехто любить називати, програмного коду мови Java. Не зручний у плані використання, але розбирає код, який інколи не розуміє JD-GUI.
5 . smali. Ще один дизассемблер, але вже дальвік коду. smali потрібен для дизассемблирования, а backsmali асемблювання коду.
6 . dex2jar. Утиліта для конвертації виконуваних файлів коду Dalvik.

Перетворення прошивки

Зрозуміло, прошивка, яка стоїть у вас на телефоні від виробника оптимізована з метою скорочення енергоспоживання. Щоб прошивку можна було змінювати, її необхідно перетворити на формат, що дозволяє змінювати код. Для цього використовується Android Kitchen. Можна звичайно й руками, як я й робив раніше, поки не знайшов цієї самої «кухні». Як витягувати системну область з телефону, встановлювати середовище, робити прошивки DEODEX, ви можете прочитати в інтернеті. Якщо вам уже нічого не зрозуміло, я думаю, варто почекати зі статтею, поки ви не наберете достатньо досвіду.

Після того, як прошивка з оптимізованого вигляду (ODEX - оптимізований dalvik виконуваний код, якщо мені не змінює пам'ять) стала DEODEX (тобто НЕ оптимізованою), всі файли, що виконуються, готові до модифікації.

Безпосередньо модифікації

Створення патчів
Як я вже й розповідав, мій телефон спочатку мав заборону використання Google. Ну хоч ти трісну, на Playstore не зайти, обліковий записне налаштувати, телефонна книгадо ладу не синхронізується. Навіщо потрібний такий Android? Довго копаючись у логах самого пристрою, я знайшов записи, які говорили про те, що використання Google заборонено. Найнезручніше в Android, ви бачите лог, але не знаєте, який системний додаток його виробляє. Щоб знайти від куди ноги ростуть, мені довелося розпатрати всі системні програми до дизассемблированного Java коду. Це зайняло достатньо часу, але я досі користуюся виконаною роботою при аналізі та пошуку потрібного коду. Етапи отримання такого інструментарію такі:
1 . Зробити DEODEX всієї прошивки
2 . Вашу нову DEODEX прошивку треба буде зібрати та прошити на телефон. Як це робиться – тема іншої статті.
3 . З кожного файлу, що знаходиться в /system/framework, витягнути файл classes.dex і переконвертувати в JAR за допомогою dex2jar.
4 . Кожен отриманий JAR відкрити в JD-GUI та пере-зберегти у вихідний код
5 . Розпакувати вихідний код із архіву.

У результаті у мене вийшло стільки папок, скільки було JAR файлов в /system/framework, і кожна папка мала структуру вихідних кодів Java.
Шляхом нескладних маніпуляцій, я швидко знайшов місце, яке генерувало записи в logcat.

Не розглядатимемо всю логіку заборони, тому що для кожного випадку це окрема історія. Мені довелося витратити пару годин, перш ніж я знайшов де проводяться перевірки, побудувати в голові блок схему алгоритму і зрозуміти куди треба лізти, щоб трохи «попсувати» алгоритм.

Виявилось все просто. Є підпрограма, яка на основі заздалегідь встановлених констант, при зверненні відповідала, чи ставиться телефон до Китаю чи ні.

Код знаходився у файлі HTCExtension.jar, а клас, який містив цю підпрограму, знаходився в

Розпакування та аналіз оригінального файлу
1 . Спершу нам треба взяти оригінальний DEODEX JAR файл, який відповідає за потрібну частину коду. У нашому випадку HTCExtension.jar.
2 . Відкрити будь-яким архіватором та витягнути від туди classes.dex
3 . За допомогою конвертера dex2jar перетворити його на JAR файл. Команда: dex2jar.bat classes.dex
4 . Відкрити отриманий файл classes_dex2jar.jar в JD-GUI.
5 . Так, найчастіше JD-GUI декомпілює код не оскільки він виглядає в оригіналі, воно і зрозуміло, але читати цілком можна. У вихідному джерелі ми бачимо, що підпрограма перевіряє параметри проекту та мовний прапор прошивки. У нашому сумному випадку повертається значення TRUE.
public static boolean isChina() ( if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23 g == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) return true;
6 . Щоб зробити патч, нам треба дизасемблювати сам код Dalvik. Для цього використовуємо baksmali. Найзручніше створити окрему папку і покласти туди три файли разом: HTCExtension.jar, smali.jarі baksmali.jar. Даємо команду java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar

Це API вашої версії Android. Для JB - це 16
- папка, де знаходяться всі фреймворки прошивки.

У моєму випадку це була команда
java -Xmx512m -jar baksmali.jar -a 16 -d S:\dev\Android\Android-Kitchen\WORKING_JB_15\system\framework -o HTCExtension -x HTCExtension.jar
7 . У нашій новоствореній папці з'явилася папка HTCExtension, а в ній наші файли з кодом Dalvik.
8 . Шукаємо файл по дорозі \com\htc\util\contacts\BuildUtils$Customization.javaі дивимося код:
.method public static isChina()Z .registers 3 .prologue const/4 v0, 0x1 .line 276 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, , v2, :cond_13 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0xda if-eq v1, v2, :cond_13 sget-short v1,Fc/ ;->Htc_PROJECT_flag:S const/16 v2, 0x17 якщо в1, v2, :cond_14 .line 297:cond_13:goto_13 return v0 .line 283:cond_14 sget-short v1, Lcom/tc/ Htc_PROJECT_flag:S if-ne v1, v0, :cond_1d .line 285 const/4 v1, 0x2 sget-short v2, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_LANGUAGE_flag:S if-eq. 291:cond_1d sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0x1b if-eq v1, v2, :cond_13 .line 297 const/4 метод
9 . Страшно, чи не так? Нічого не зрозуміло. Але, ця справа можна виправити. Створивши кілька своїх патчів і набивши цим руку, ви легко зможете модифікувати код без сторонніх коштів. У нашому випадку, у цьому коді
.prologue const/4 v0, 0x1 відбувається надання змінної v0 значення 1, тобто TRUE. Далі йдуть усілякі перевірки, і якщо телефон не китайський, то значення змінної змінюється:
.line 297 const/4 v0, 0x0 goto:goto_13
10 . Найпростіший спосіб врятувати батька російської демократії, це змінити код наступного:
.prologue const/4 v0, 0x0 , тобто поміняти значення змінної з 1 на 0. Тобто що б не було, завжди поверталося значення FALSE і в JD-GUI код виглядав би як public static boolean isChina() ( if (( HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || Flag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) return false;
11 . Так, метод, працюватиме. Але ж ми не шукаємо легких шляхів - це раз. По-друге, не зовсім красиво. Хочеться коду щось на зразок
public static boolean isChina() ( return false; )
12 . А як нам отримати Dalvik код цього вихідного коду? Для новачків ми зробимо невеликий трюк.

Створення коду Dalvik
1 . Відкриваємо Android SDK.
2 . Створюємо новий проект і в наш єдиний тестовий клас пишемо наступний код
package ru.habrahabr.test; public class test (public static boolean isChina() (return false;))
3 . Компілюємо наш проект і потім беремо зібрану програму з робочої області.
4 . Кладемо зібраний додаток до папки, де ми з вами потрошили JAR файл.
5 . Даємо команду java -Xmx512m -jar baksmali.jar -a -d -o test -x test .apk
6 . Ми дизассемблировали щойно зібраний додаток у код Dalvik.
7 . Відкриваємо наш файлик test.smali і бачимо там код
.method public static isChina()Z .registers 1 .prologue .line 7 const/4 v0, 0x0 return v0 .end method
8 . Все, код для патчингу готовий.
Накочування патча
1 . Dalvik код засмічений маркерами, що вказують на рядок коду в оригінальному вихідному файлі. Це потрібно при виведенні помилок, якщо такі є у вашій програмі. Без вказівок рядків код також чудово працює.
2 . Видаляємо рядки з нумерацією рядків, копіюємо та замінюємо метод (підпрограму) у нашому \com\htc\util\contacts\BuildUtils$Customization.javaфайл.
.method public static isChina()Z .registers 1 .prologue const/4 v0, 0x0 return v0 .end method
3 . Зберігаємо файл. Так, забув сказати, редактор потрібен нормальний, наприклад, Notepad++ або EditPlus. Кому який подобається.
Компіляція та складання патченого JAR файлу
1 . За допомогою backsmali ми розпатрали наш JAR файл, а тепер його треба зібрати назад.
2 . Даємо команду java -Xmx512m -jar smali.jar -a 16 HTCExtension -o classes.dex
3 . У нашій татці з'являється файлик classes.dex
4 . Знову відкриваємо HTCExtension.jarфайл архіватором та замінюємо в ньому існуючий classes.dexна наш щойно створений.
5 . Все, наш HTCExtension.jarмістить модифікований програмний код.
Заміна оригінального файлу на патчений
Зазвичай, для рядових користувачів створюються спеціальні скрипти, які замінюються через recovery. Але нам таке не цікаво. По-перше, довго і нудно, по-друге ми ж досвідчені користувачіі можемо собі дозволити деякі тонкощі.

1 . Замінити поточний робочий файл можна наступними командами, якщо у вас вже стоїть прошивка DEODEX і є root доступ:

Adb push HTCExtension.jar /sdcard/HTCExtension.jar adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar of=/system/framework/HTCExtension.jar.back dd if=/sdcard /HTCExtension.jar of=/system/framework/HTCExtension.jar chmod 644 /system/framework/HTCExtension.jar rm /data/dalvik-cache/system@ [email protected]@classes.dex reboot

Перша команда закидає патчений файл на флешку
Друга команда відкриває shell
Третя команда дає root доступ
Четверта команда монтує систему в режим читання/запису
П'ята команда робить резервну копіюфайлу
6-а команда перезаписує існуючий файл новим патченим.
7-а команда налаштовує дозволи
8-а команда видаляє кеш
9-а команда робить перезавантаження пристрою.

2 . Спасибі, що дочитали до цього пункту, залишилося небагато.
3 . Після перезавантаження ваш новий патчений код набуде чинності.
4 . Якщо код не працює або вискакує помилка, шляхом не хитрих комбінацій можна повернути назад резервну копію.
adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar.back of=/system/framework/HTCExtension.jar rm /data/dalvik-cache/system@ [email protected]@classes.dex reboot

Епілог

Так, комусь видалася ця стаття надто специфічною, комусь малозрозумілою, а комусь марною. Я спеціально обійшовся без поглибленої деталізації та ілюстрацій як це все виглядає живим і на практиці. По-перше, ця праця буде невдячна і тільки породить ще більше питань. По-друге, не хочу бачити армію користувачів на форумах, які скаржаться, що вбили телефон.

До наступної статті я розповім, як робити Твіки. Буде приклад використання автоматичного записутелефонних дзвінків засобами телефону. Дякую за вашу увагу.

P.S. Якщо щось не зрозуміло чи бентежить, ставте питання - завжди буду радий відповісти і пояснити.

Багато власників телефонів і планшетів на Android, хто стикався з їх прошивкою, звертали увагу на те, що прошивки бувають. odexedі deodexed. Але не багато хто розуміє, що ховається за цими поняттями, і які плюси та мінуси несе за собою той чи інший тип прошивки.

Сьогодні ви дізнаєтесь, що таке odexі deodex, і навіщо воно потрібне.

Якщо ви заглянете в папку із системними програмами system/appна вашому планшеті або телефоні з стокове (заводський) прошивкою, то неодмінно помітите, що всі додатки мають крім apk-файлу, його двійник, odex-файл. Наприклад, файл applikatoin.apk відповідає файлу applikatoin.odex.

Для чого потрібен цей 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прошивки як правило потрібен