Ручная прошивка андроид. Процесс получения root прав. Общая структура каталогов и важные файлы

04.05.2019

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

Как сделать прошивку на Андроид самому

Для того, чтобы прошивка получилась качественной и телефон не превратился в кирпич важно произвести ряд мер для подготовки к созданию обновленного Андроида. Понадобится компьютер с установленной на нем операционной системой Linux , лучше UBUNTU. Устанавливать желательно 64х разрядную систему под новые версии Андроид.

Такая разрядность нужна для того, чтобы изменять прошивку версий Андроида выше 2.4.

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

Кроме самостоятельного изготовления из исходников, есть способ изменения уже готового файла.

Способы создания

Чтобы сделать прошивку Android из исходников рекомендуется проделать следующие шаги.

  • Установить UBUNTU. Только на ней получится добротная прошивка. Скачать UBUNTU можно на официальном сайте .
  • Затем подготовить рабочий стол и освободить достаточно места, как было написано выше. После переходим к самой сборке.
  • Установить программу Java.
  • Скачать исходники можно с форума 4pda .

Достоинство изготовления собственной прошивки заключается в том, что вы можете сами оптимизировать свой Андроид на столько, на сколько нужно. А также вы сможете избавить его от предустановленных программ, которые попросту засоряют его и не используются. Еще одним преимуществом является то, что вы сами можете сделать прошивку и обновить телефон до любой версии.

Конечно же отредактировать уже готовую сборку под себя гораздо проще. Для этого понадобится:

  • Установить ОС UBUNTU.
  • Скачать программы andimgtool и rkwintools . Они помогут вам расшифровать данные boot.img, recovery.img, system.img. а также и запаковать их.
  • Найти чистую прошивку. Главное, чтобы в названии были слова ROM. Сайт для загрузки выбираем на свое усмотрение, например desktoplinux.ru , или любой другой.

Сделать прошивку телефона из уже готового файла конечно гораздо легче и проще. В этом заключается преимущество редактирования уже готовой прошивки.

Инструкция по изготовлению прошивки Андроид самостоятельно

Собрать прошивку Android из исходников

Прежде чем приступить к созданию кастомной прошивки своими руками, рекомендуется установить виртуальную машину, а на нее ОС Linux.

Теперь необходимо отыскать прошивку, которую будете модифицировать. xda-developers.com – на этом сайте отыщете необходимую вам прошивку. Главное, чтобы они имели в имени слово ROM и были чистыми. Затем скачиваете его и разархивируете, используя Winrar.

Когда вы откроете папку с разархивированными файлами, вы отыщете элементы, перечисленные ниже:


Запустите андроид kitchen. Запуск сделайте через Линукс или же через программу Cygwin. Если запускаете в Линуксе, то введите команду cd kitchen, потом./menu.

Теперь распаковываете программу . Затем переходите в раздел 0 или advanced options. Отыскав команды для улучшения версии Андроида, нажмите на ту, которая необходима. Здесь вы добавляете собственные анимации, приложения, освобождаете память. После произведенных действий, наберите команду 99. Теперь нажмите build ROM fron working folder . Осталось только забрать архив с output_ZIP.

Редактирование готовой версии

Изучив изготовление прошивки из исходных файлов, сейчас будет рассмотрено, как видоизменить готовый файл. Для его редактирования файл надо скачать, ищем прошивку с именем: Pure Android 3.0 ROM. Это имя свидетельствует о том, что она является чистой.

После скачивания файла, разархивируйте его. Папки и файлы в нем являются составляющими прошивки. Они расположены обычно так:

  • Meta inf . Здесь лежат все данные о будущей системе. Сертификаты, контрольные суммы и скрипты тоже находятся здесь.
  • Boot . img . Это образ для того, чтобы вы могли загрузить прошивку и установить.
  • Папка system . Это Андроид без ядра. Здесь лежат все настройки системы и некоторые из установленных утилит.

Затем устанавливается программное обеспечение . Вы должны зайти в папку / system / app / и изменить набор утилит. То есть вы можете уничтожить папку с той утилитой, которая вам не нужна, или, наоборот, поставить необходимый софт. Вы можете установить утилиты, которые понадобятся будущей системе Андроид. Для этого они должны быть уже распакованы. Достаточно просто перетянуть в эту директорию все, что нужно и эти приложения автоматически предустановятся.

Для видоизменения графики рекомендуется обратиться к папке framework/framework-res.apk . Пользователю следует разархивировать элемент и вставить туда две папки: res/drawable-*, куда он сможет скидывать свои картинки и фон с разрешением.png. И res/layout-* — сюда будут вложены файлы с разрешением.xml. После произведенных манипуляций вы должны собрать все снова в один файл.

Видоизменить анимацию или поставить новую можно разархивировав архив с соответствующими файлами. Затем пользователь изменяет файлы и запаковывает их обратно.

Если пользователь хочет улучшить производительность собственного смартфона, то он должен ввести такие команды: ro.mot.buttonlight.timeout=0 – для подсвечивания кнопок после включения телефона. debug.sf.nobootanimation=1 – отключение анимации, когда телефон загружается. Многие из них лежат в папке system/build.prop.

Когда завершены все видоизменения, надо будет архивировать их командой $ cd ~/rom; zip -r my-rom.zip *.

Редактирование без использования компьютера

Чтобы редактировать прошивку Андроид не используя компьютер, владелец телефона должен скачать ее в архиве. Запустить Total Commander, эта программа умеет работать с архивированными пакетами. Разархивировать пакет.


Есть еще один вариант – если пошивка в формате zip.

В этом случае процедура идентична. Но перед и после процесса необходимо сначала распаковать, а затем запаковать без сжатия файл прошивки. С помощью Nandroid backup делаем бэкап, и шьем устройство через любое удобное приложение.

Давно мечтали собрать сами своими руками прошивку Android из исходного кода, но ни как получалось из за отсутствия внятного материала? подготовил вам подробную интересную статью!

Предисловие

И так перед тем как начать повествовать статью, немного слов для кого она написана: вы уже знаете что такое Linux и установить Ubuntu, Mint, Fedora, OpenSuSe, по крайней мере устанавливали хотя бы один раз из этих ОС, уже знаете что такое командная строка или терминал, команда cd , ls , sh знакома и не вводит в ступор. Отлично, тогда продолжаем изучать статью. Статья Только для устройств Nexus!

Задача научить подготовить систему для компилирования вашей первой Android прошивки, а не научить устанавливать Linux, изучить команды итп.

Необходимое для создания Android прошивки из исходного код

  1. Компьютер или мощный ноутбук
  2. LTS версия ОС UBUNTU 64-разрядная (12.04 или 14.04)
  3. Количество свободного места в разделе /home не менее 100 GB

Не открывайте, не закрывайте, не перемещайте, делайте все как написано в инструкции — последовательно, шаг за шагом, перезагружайте компьютер когда это указано.

Подготовка

1. Перейдите в параметры системы UBUNTU

2. Раздел «Программы и обновления»

3. Вкладка «Программное обеспечение UBUNTU» установить Загрузить с: Основной сервер

4. Вкладка «Другое ПО», установить галочки на Партнеры Canonical иПартнеры Canonical (исходный код)

5. Нажать внизу кнопку Закрыть и после Обновить

6. Запустить программу «Обновление приложений» и обновить систему и перезагрузить компьютер

7. Запустите терминал (горячими кнопками CTRL+ALT+T)

Для Ubuntu 16.04:

sudo apt - get install openjdk - 8 - jdk

Для Ubuntu 14.04:

Вместо android-5.0.2_r1 указывать необходимую версию Android

Загружаем исходный код на компьютер:

Данная процедура будет длится долго (не менее 3 часов) и будет загружено около 30 GB

Сборка проекта

25. После того как скачается весь исходный код Android начнем сборку прошивки Android, введите команду:

source build/envsetup.sh

Перед вами появится окно со списком устройств возможных для создания AOSP прошивки, выбираем цифру и нажимаем ENTER

26. Запускаем сборку Android прошивки

make -j2 otapackage

Вместо j2 стоит указать количество ядер процессора и потоков, если процессор 2 ядреный и включена технология hyper threading (если она доступна), то у вас будет 4 потока (j4 ), если процессор 4 ядерный и выключена технология hyper threading, то также 4 потока (j4 ), а если включена то 8 (j8 ).

В зависимости от мощности и количества ядер участвующих в процессе сборки прошивки зависит и время сборки прошивки, от 20 минут до 24 суток.

Установка

27. После сборки вы обнаружите пакет в папке AOSP/out/target/product/кодовое_имя_nexus/ архив ZIP

28. Переместите данный архив ZIP на устройство NEXUS

31. Установите архив ZIP и после сделайте обязательно wipe

Вот и все! Ничего сложного нет! Статья подошла к концу, подписывайтесь социальные группы и оставайтесь вместе с сайтом !

Андроид – операционная система. Такая программа используется для планшетов и телефонов. Прошивка андроид дает возможность установить систему на устройство, чтобы гаджет нормально функционировал. Однако, как и в любой другой программе, здесь могут возникнуть сбои или она может устареть. Чтобы восстановить функции системы или установить новую версию, выполняется перепрошивка. Такую манипуляцию может осуществить даже новичок. Как перепрошить андроид?

Что такое прошивка?

Прошивка android – установка программы на микрочип устройства. Такая манипуляция выполняется на заводе-производителе. Исходя из этого, несложно догадаться, что перепрошивка – обновление программы. Манипуляцию выполняют в следующих ситуациях:

  • если версия операционной системы устарела и необходимо установить новый вариант;
  • если в работе программы возникли какие-либо сбои;
  • если необходимо сменить язык системы на русский;
  • если необходимо взломать защиту программе при блокировке гаджета.

Как перепрошить андроид?

Если говорить о том, как перепрошить телефон андроид самостоятельно, то успех мероприятия во многом зависит от правильной подготовки. Первое, что рекомендуется сделать – зарядить устройство. Далее через меню следует выяснить точное наименование устройства и программного обеспечения.

Перед выполнением манипуляции нужно понять, какое будет устанавливаться программное обеспечение – официальное или стороннее.

До начала нужно выполнить действия:

  • найти в интернете файл с прошивкой, подходящей для конкретного типа устройства;
  • скачать программу на компьютер для того чтобы выполнить обновление программного обеспечения и подготовить кабель-USB в том случае, если манипуляция выполняется через персональный компьютер;
  • если прошивка выполняется через стороннее программное обеспечение, то следует скачать на гаджет программу Recovery;
  • выполнить резервную копию того программного обеспечения, которое установлено на устройство.

Только после этого выполняется повторная прошивка смартфона или любого другого гаджета.

Прошивка телефона при помощи CWM Recovery

Если говорить о том, как прошить android при помощи CWM Recovery, то на устройство сначала необходимо установить соответствующую утилиту. Далее выполняется манипуляция:

  1. Осуществляется вход в R Чтобы выполнить такую манипуляцию, устройство отключают. Далее нажимают некоторые клавиши для входа в программу. Комбинация зависит от производителя гаджета. Какой именно набор подходит для того или иного устройства, можно определить экспериментальным путем. Для этого следует выполнить одну комбинацию, а если это не дает результат, то попробовать другой вариант. Можно нажать следующие клавиши:
  • увеличение громкости и отключение;
  • уменьшение громкости и отключение;
  • увеличение или уменьшение громкости и отключение, а также «домой»;
  • обе клавиши громкости и отключение.

Если все выполнено правильно, то система выдаст меню программы. Чтобы им управлять, следует использовать клавиши увеличения и уменьшения громкости для передвижения вверх и вниз, а также отключения для выбора действия.

  1. Выполняется сброс всех настроек до тех, которые были установлены на заводе первоначально. В меню выбирается пункт «wipe data/factory rese» и подтверждается совершенное действие. Обычно система выдает строку, в которой одним из вариантов стоит yes или ok;
  2. Далее последовательно выбираются следующие пункты меню: «Install zip» — это первое действие и «Choose zip from /sdcard» — это второе действие. После этого следует выбрать тот файл, в котором была сохранена изначальная прошивка. Далее подтверждаются действие.
  3. Предыдущее действие запускает процесс перепрошивка системы. По его окончанию на экране высветиться Install from sdcard complete.
  4. Выполняется вход в программу CWM R После этого гаджет рекомендуется перезагрузить. Однако сделать это можно не с помощью кнопки включения, а выбрав в меню пункт «reboot system now».

Когда все действия выполнены, гаджет перезагружается и перепрошивается. Обычно это занимает 10 минут, но может потребоваться как больше, так и меньше времени, в зависимости от марки устройства.

Как прошить телефон андроид при помощи TWRP Recovery?

Повторная прошивка телефона с помощью этой программы осуществляется следующим образом:

  • Выполняется перемещение файла, в котором сохранились данные о прошивке гаджета, в память телефона, чтобы потом можно было его извлечь и запустить обновление;
  • выполняется вход в программу так же, как и в случае с CWM, то есть используют для этого различные комбинации клавиш: уменьшение или/и увеличение громкости + отключение, увеличение или уменьшение громкости и отключение, а также «домой», обе клавиши громкости и отключение;
  • производится сброс программ до первоначальных настроек, а по завершении действия выполняется переход в главное меню TWRP Recovery;
  • выбирается пункт «Install» и запускается файл с изначальной прошивкой, который в самом начале был сохранен в памяти устройства.

После этого выполняется перепрошивка гаджета. Когда процесс будет завершен, рекомендуется перезагрузить телефон или планшет.

Установка обновлений при помощи ROM Manager

ROM Manager дает возможность выполнить обновление системы и сохранить все установленные приложения, скаченные файлы и другие данные системы. После завершения операции можно быстро восстановить все данные гаджета.

Чтобы выполнить перепрошивку этим способом, на устройстве должен иметься доступ к root правам. Благодаря этому система получает доступ к внутренним файлам устройства.

Нужно скачать файл с прошивкой устройства. После этого выполняются следующие манипуляции:

  • архив прошивки переносят в память гаджета с помощью ZIP расширения;
  • выполняют вход в утилиты;
  • выбирают действие установить ROM с карты SD;
  • отыскивают архив прошивки и выбирают этот файл;
  • в меню выбирают пункт для установки новой программы и автоматической перезагрузки гаджета.

После подтверждения действия запускается процесс перепрошивки устройства.

Как прошить андроид через компьютер?

Прошивка телефона андроид с помощью персонального компьютера производится через утилиту, название которой Fastboot. Она подходит для большинства устройств за редким исключением.

Перед выполнением манипуляции необходимо получить доступ к ядру системы. Разработчики в большинстве случаев специально перекрывают этот доступ, чтобы пользователи не могли самостоятельно выполнять перепрошивку устройства. Чтобы снять блокировку, можно воспользоваться загрузчиком операционной системы Bootloader. Такая манипуляция требует внимательного изучения инструкции по работе в программе.

Перед тем как начинать перепрошивку, необходимо подсоединить гаджет компьютеру с помощью USB-кабеля и включить отладку устройства. Важно использовать качественный кабель. Если на проводе имеются повреждения, то в любой момент может быть прервано соединение и процедуру придется начинать заново.

Краткая инструкция по установке ZIP прошивки при помощи Fastboot

  • выполняется копирование архива ZIP с файлом первоначальной прошивки в заводских условиях, и он перемещается в папку с ADB;
  • активизируется утилита Fastboot и в соответствующей строке вводится данные значения: fastbooflash zip имя_файла.zip.

После этого запускается перепрошивка устройства. После завершения процесса рекомендуется перезагрузить гаджет.

Перепрошивка система – это возможность обносить программу на усовершенствованную версию, а также избавиться от некоторых неполадок в работе системы. Манипуляцию можно выполнить самостоятельно, если придерживаться некоторых правил перепрошивки. Если процедура проведена неправильно, то гаджет может полностью блокировать доступ к любым программам и приложениям. В итоге пользователь получает бесполезный кусок железа. Чтобы этого не произошло, рекомендуется внимательно изучить все рекомендации по самостоятельной перепрошивке устройства. Если речь идет о китайском устройстве, то любые подобные манипуляции недопустимы. В этом случае рекомендуется обратиться в сервисный центр.

Всех приветствую! В сегодняшней статье я расскажу вам, как прошить телефон андроид через компьютер. В настоящее время все люди пользуются телефонами. Кто-то использует Андроид, кто-то Айфон. Но согласно статистике большинство людей предпочитают телефоны на основе Андроида. Всё бы было замечательно, если бы не возникали проблемы с прошивкой.

Сколько стоит прошить телефон андроид?

Со временем могут возникнуть проблемы с гаджетом, в связи, с чем может потребоваться перепрошивка. Если же пользователь желает обновить функционал или ускорить работу устройства, то опять же на помощь придет прошивка. На самом деле, процедура прошивки не сложна, но все же могут возникнуть определенные трудности. Обычно, узнав это, люди задумываются: «А стоит ли вообще производить прошивку самостоятельно?». Дабы не столкнуться с этим, предлагаю вместе разобраться, как правильно прошить андроид.

Конечно же, в интернете много информации, как самому прошить телефон, но если вы не хотите заморачиваться с самостоятельной прошивкой, то отдайте телефон мастеру, и он вам все сам сделает. Однако ничего бесплатного нет, поэтому вам придется немного потратить деньги. Стоимость прошивки будет зависеть от многих факторов. На это будет влиять: версия Андроида, текущее состояние и версия установленной прошивки.

Во многих регионов прошить «телефон кирпич» можно от 500 до 900 рублей. Средняя цена в Москве – 600 рублей. При этом процедура длится не более 30 минут. У специалиста под рукой есть все необходимые инструменты, и это очень важно, поскольку если вы решите самостоятельно проделать прошивку, у вас таких инструментов может не оказаться.

Подготовка к прошивке телефонного устройства

Если не серьезно подойти к вопросу прошивки телефона, то вполне возможно вызвать серьезные проблемы, которые решаются довольно-таки сложно. Перед процедурой требуется проделать такие действия, как:

  1. Убедитесь, что ваше устройство заряжено на все 100%. Это очень важно, поскольку отключение гаджета во время процедуры может привести к потере данных.
  2. В настройках, а именно в раздел «О телефоне» нужно посмотреть версию устройства, версию ядра и номер сборки.
  3. И, наконец, на основе этих данных требуется скачать новую прошивку. Она должна полностью соответствовать вашему телефонному устройству.

Как прошить телефон без компьютера?

Если нужно восстановить работоспособность java устройства, то лучше всего применять откат прошивки к заводским показателям. Если же пользователь собирается сменить прошивку, то нужно учитывать, что процедура существенно отличается. Между этими двумя вариантами есть главные различия – использование программы во втором случае, для установки неофициальной прошивки.

Это можно сделать в домашних условиях. Если вы решили применить второй вариант, то предварительно установите программу. Нажмите две кнопки recovery: кнопку громкости и кнопку включения. Теперь через рекавери сбросьте настройки и очистите кэш. Более подробная прошивка телефона без компьютера видео, на примере самсунга:

Как прошить китайский телефон через ПК?

Многие задаются вопросом, как прошить телефон андроид в домашних условиях? Прошивка с Виндовс на андроид делается посредством различных программ.

Как уже стало известно, рынок мобильных телефонов довольно-таки многообразен: Nokia, Zte, Samsung, Sony Ericsson, lenovo a5000, lenovo a319, Fly и т.д. Для обновления прошивки телефонов необходимо скачать программу, кстати говоря, для каждого производителя она своя. Так, Nokia можно прошить с помощью программ Phoenix либо JAF. Для каждой модели Samsung существует отдельная программа, но универсальной является Toolbox. Прошить аппараты производителя Sony Ericsson возможно при помощи:

  • Far Manager,
  • XS++,
  • SETool2Lite.

Как уже говорилось ранее, перед прошивкой нужно зарядить устройство, чтобы не потерять данные. На ПК требуется установить софт, драйвера (для каждой модели они будут разными). Перезагрузка компьютера нужна после установки программы и драйверов. Сперва необходимо подсоединить кабель к отключенному компьютеру и уже, затем включить его. Теперь запустите программу и следуйте инструкциям. В каждой программе отдельные инструкции, это зависит от режима прошивки. Если всё выполнить правильно, то успех гарантируется. После завершения работы установите стандартные программы.

Важно: все программы, драйвера можно скачать с официального сайта разработчика, и нигде более!

Через флешку и через sd карту можно перекинуть на ПК нужную прошивку.

Как прошить выключенный телефон?

Что делать, если телефон не включается , как быть? Если вы столкнулись с этой проблемой и ваш телефон, так сказать, «мертвый », то обратитесь к специалисту или проделайте такую процедуру дома с особой внимательностью.

Подготовьтесь к процедуре: скачайте программу «Phoenix » и прошивку, а также отыщите на аккумуляторе устройства код издателя.

Теперь перейдите к самой процедуре…

  1. В режиме администратора установите и запустите программу «Phoenix». Напротив «Connections» проверьте наличие записи «NO CONNECTION». Нажмите на кнопку меню «File» и выберите «Open Product».
  2. Теперь понадобиться код, который вы смотрели на аккумуляторе. В списке выберите его. Кликните по меню «Flashing», выберите пункт «Firmware Update». В новом окне нажмите на кнопку с изображением 3-х точек и укажите нужный языковой пакет.
  3. В окне Firmware Update отметьте «Dead Phone USB flashing», нажмите «Update Software» и дождитесь завершения прошивки. Готово!

Важно! Эта инструкция не гарантирует восстановление жизни мобильного устройства.

Как прошить андроид через sd карту?

Скачайте требуемую прошивку и сохраните ее в корневом каталоге карты памяти. После чего зайдите в меню ClockworkMod Recovery. Для этого на выключенном устройстве зажмите кнопки громкости и включения. Далее найдите «Wipe data/factory reset». Все действия в данном меню реализовываются посредством кнопок громкости и кнопки «назад».

Теперь отыщите скачанный раздел, который пишет меню как «Install zip from sdcard». В нем выбирайте «Choose zip from sdcard». Далее просто укажите необходимую прошивку, просто выбрав ее из списка.

Как прошить телефон андроид через компьютер через Flashtool?

Через флеш тулс можно прошить телефонное устройство. Для этого проверьте все драйвера, при необходимости установите их. Запустите FlashTool . В открывшемся окне выберите «scatter-loading file», затем откройте папку со скачанной прошивкой и выберите её.

Отметьте галкой поле «DA DL All with check sum». Нажмите «firmware-upgrade». Подключите телефонное устройство. Теперь, когда вы установили новую прошивку, можете включить телефон и проверить полученный результат.

Такой способ подойдет практически для всех телефонов, в том числе и для смарт старт .

Таким образом, вы теперь знаете, как прошить телефон андроид через компьютер. Я надеюсь, вам все стало понятно, и вы не будете больше задаваться вопросом «Можно ли самостоятельно прошить телефон?». Для многих телефонов принцип один и тот же, остается лишь делать всё внимательно. Если у вас есть ко мне вопросы обязательно задавайте их в комментариях, будем разбираться вместе. Всем пока!

Здравствуй Хабр!

Несколько лет назад, когда я впервые познакомился с 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 . Еще один дизассемблер, но уже dalvik кода. smali нужен для дизассемблирования, а backsmali ассемблирования кода.
6 . dex2jar . Утилита для конвертации исполняемых файлов Dalvik кода.

Преобразование прошивки

Разумеется, прошивка, которая стоит у вас на телефон от производителя оптимизирована с целью сокращения энергопотребления. Для того чтобы прошивку можно было изменять, ее необходимо преобразовать в формат, позволяющий изменять код. Для этого используется Android Kitchen. Можно конечно и руками, как я и делал раньше, пока не нашел эту самую «кухню». Как вытаскивать системную область из телефона, устанавливать среду, делать DEODEX прошивки, вы можете прочитать в интернете. Если вам уже ничего не понятно, я думаю стоит повременить со статьей, пока вы не наберете достаточно опыта.

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

Непосредственно модификации

Создание патчей
Как я уже и рассказывал, мой телефон изначально имел запрет на использование Google. Ну хоть ты тресни, на Playstore не зайти, учетную запись не настроить, телефонная книга толком не синхронизируется. Зачем нужен такой Android? Долго копаясь в логах (logcat) самого устройства, я нашел записи, которые говорили о том, что использование 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)); while (((HtcBuildFlag.Htc_PROJECT_flag == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) return true; return false; }
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, 0xd8 if-eq v1, 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, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0x17 if-ne v1, v2, :cond_14 .line 297:cond_13:goto_13 return v0 .line 283:cond_14 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->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 v1, v2, :cond_13 .line 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 v0, 0x0 goto:goto_13 .end method
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) || (HtcBuildFlag.Htc_PROJECT_flag == 23)); while (((HtcBuildFlag.Htc_PROJECT_flag == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) return false; 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

1-ая команда закидывает патченный файл на флешку
2-ая команда открывает shell
3-ая команда дает root доступ
4-ая команда монтирует систему в режим чтения/записи
5-ая команда делает резервную копию файла
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. Если что-то не понятно или смущает, задавайте вопросы - всегда буду рад ответить и пояснить.

Похожие статьи