Меняем интерфейс Android. Шаг 2 — компиляция и декомпиляция приложений

Vladimir Medvedev

Владимир Медведев — автор PureGoogle.ru. Начал использовать Android с версии 1.5 и остается поклонником этой мобильной ОС по сей день.

Итак, в прошлом уже была налажена работа Apktool, теперь пришло время научится ею пользоваться. С помощью этой утилиты мы будем разбирать приложения .apk и собирать их обратно после изменения.

Преамбула

Стоит отметить, что я опишу здесь лишь изменение таких apk-файлов, как SystemUI.apk и framework-res.apk. Все остальные декомпилируются похожим образом, но о них речи идти не будет, во всяком случае пока. Во всех статьях в качестве основы будет выступать AOSP Android Jelly Bean, то есть описанное здесь может не подходить для прошивок разных производителей, мы будем работать с чистым роботом. Важно понимать, что для создания мода ваша прошивка должна быть деодексирована, то есть каждый системный apk-файл не должен сопровождаться файлом .odex, этот файл должен быть уже встроен в приложение. Проверить это тоже легко: берём любой архиватор и открываем им приложение, внутри будет несколько файлов и папок, один из них — classes.dex. Все стоковые прошивки одексированы! Если вы пользуетесь таковой — моды не ваше дело.

О том, где же взять эти файлы: SystemUI.apk можно отыскать в вашей прошивке по пути \system\app, framework-res.apk по пути \system\framework. Взять их можно непосредственно из телефона, а также из zip-архива с прошивкой.

Вполне очевидным должно быть то, что открытие apk-файла архиватором в целом нам не подходит. Таким образом мы ничего не добьёмся. Однако так можно делать в случае быстрой замены картинок или уже готовых ресурсов. Об этом будет рассказано далее.

Декомпиляция приложений

Кладём SystemUI.apk и framework-res.apk в корень любого локального диска, мне удобен диск D.

Первое, что нужно сделать — установить framework-res.apk, чтобы все приложения разбирались, скажем так, с проверкой по нему, всё же это главная кладовая графических ресурсов системы. Делается это командой apktool if file.apk. В нашем случае файл лежит в корне диска D, поэтому придётся указать до него путь, получим следующее:

 

mods_2_1

Файл установится в папку пользователя, то есть путь будем примерно следующим C:\Users\username\apktool\framework. Всегда устанавливайте framework-res из прошивки, с которой ведётся работа, повторная установка этой командой другого файла лишь заменит уже существующий.

Теперь можно разбирать приложения. Делается это командой apktool d file.apk, но для нашего удобства мы положили файлы в корень диска D, там их и оставим, указав место, в которое они декомпилируются. Начнём с основного:

 

mods_2_2

В данном случае мы разобрали файл в новую папку framework-res для своего же удобства. Имя папки может быть любым, от этого ничего не зависит.

mods_2_8

Поступим схожим образом и с SystemUI.apk:

 

mods_2_3

На этом всё закончилось, можно порадоваться и побродить по ресурсам приложений, но менять ничего мы пока не будем. Нужно научиться их собирать.

Компиляция приложений

Предположим, что мы что-то изменили в приложении, теперь собираем. Делаем это при помощи команды apktool b ***, где *** — имя папки, в которую было разобрано приложение. И у нас это папки framework-res и systemui в корне диска D. Поступать следует так:

 

mods_2_4

 

mods_2_5

Приложения собраны! Новые apk-файлы можно найти в папке dist, которая теперь существует внутри папок, куда разбирались приложения, например, D:\framework-res\dist

mods_2_7

Стоит отметить, что некоторые системные приложения нужно разбирать и собирать с проверкой по framework-res.apk, в таком случае нужно вводить команды, показанные на скриншоте, они отличаются лишь парой символов:

 

mods_2_6

Обычно, кстати, компилирую/декомпилирую SystemUI.apk именно так.

Поделиться
Плюсануть
Класснуть
  • Рубрика: Моддинг
  • Олег Донец

    Владимир, скажите, а Вы «ломали» SystemUI в 4.4.2? На моё устройство обнов не будет, а толковых альтернативных прошивок не наблюдается, вот хочу «допилить» своё устройство.