Что такое кастомные прошивки (модифицрованные) на Android?
25 апреля 2017 | Просмотров: 3223 | |
Любое устройство на базе Android, будь то смартфон, планшет, умные часы или TV Box, представляет собой компьютер. А, как все знают, каждому компьютеру нужна операционная система (в случае мобильных устройств — прошивка). Прошивка для смартфона или планшета представляет собой саму ОС Android + набор всех необходимых драйверов и программного обеспечения, для корректной работы всех комплектующих устройства (например — тачскрина или модуля камеры). В подавляющем большинстве случаев, разработчиком прошивки является производитель устройства. Такие прошивки называются официальными. Однако помимо них, встречаются кастомные прошивки — то есть модифицированные. В этой небольшой статье мы расскажем об основных преимуществах и недостатках кастомных прошивок. Плюсы модифицированных (кастомных) прошивок
Минусы модифицированных (кастомных) прошивок
После теоретической части, возникает вопрос: «Стоит ли устанавливать кастомную прошивку?». Ответить «да» или «нет» не получится. Если у вас нет опыта и вы хотите «побаловаться». то не стоит тратить собственное время и рисковать жизнеспособностью мобильного девайса. Если у вас есть соответствующие навыки и вы четко осознаете, что вас не устраивает в текущей прошивке — то стоит попробовать кастом. В любом случае, перед началом всех процедур, не забывайте делать бекапы и заряжать свои гаджеты. Источник Модификация стоковых прошивок для Android. Часть 1Несколько лет назад, когда я впервые познакомился с Android, я услышал от своего коллеги по работе, что Android предусматривает возможность установки модифицированных или самодельных прошивок. Признаться, тогда я был далек от этого. И даже пол года назад меня едва интересовали подобные вещи. Глубоко в душе, я был уверен: то, что делает производитель, уже предназначено для нормального использования. Каково же было мое разочарование, когда я приобрел телефон из поднебесной, где заводскими настройками было запрещено использование Google, Skype, Facebook и других приложений. В принципе, на некоторые вещи можно было закрыть глаза, но когда мой телефон не подразумевал использование учетной записи Google — я взял с себя обещания обязательно разобраться во что бы мне это не стало. Прошло пол года и мои кастомные прошивки с успехом используются по всему миру. В данной серии статей пойдет речь о том, как делать reverse программирование для Android, реализовывать патчи, твики и моды. ПреамбулаИ так! Давайте сперва определимся с понятиями, которые будут использоваться в данной статье. Ваше привычное понимание, при этом, может сильно отличаться. Патч — изменение или замена существующего программного кода с целью модификации алгоритма программы. Также хочу заметить, что все примеры будет взяты для телефона HTC, но это не значит, что данная информация не может быть использована на других телефонах. Обращаю ваше внимание, что я, как автор, не несу ответственности за возможную потерю данных на вашем телефоне в результате использования информации ниже. Подготовка средыОбойдусь без подробных инструкций как пользоваться тем или иным программным обеспечением. Если вам интересна данная статья и вы дочитали до этих строк, то я надеюсь, что вы уже опытный пользователь и имеете опыт использования, ну или хотя бы экспериментирования в данной области. Инструкций, статей и результатов тестирования полно в открытом доступе, впрочем, как и на Хабре. Также обойдусь без описания некоторых терминов, иначе статья получится очень большой и нудной. Будем писать только по делу. Уверен, что среда у вас уже давно стоит. Если нет, то предлагаю скачать и установить. 1. Android SDK. Это среда разработки приложений для Андроид. Для того чтобы делать модификации, нам обязательно придется проверять наш программный код. Среда разработки самое лучшее, что мы можем использовать. Преобразование прошивкиРазумеется, прошивка, которая стоит у вас на телефон от производителя оптимизирована с целью сокращения энергопотребления. Для того чтобы прошивку можно было изменять, ее необходимо преобразовать в формат, позволяющий изменять код. Для этого используется Android Kitchen. Можно конечно и руками, как я и делал раньше, пока не нашел эту самую «кухню». Как вытаскивать системную область из телефона, устанавливать среду, делать DEODEX прошивки, вы можете прочитать в интернете. Если вам уже ничего не понятно, я думаю стоит повременить со статьей, пока вы не наберете достаточно опыта. После того, как прошивка из оптимизированного вида (ODEX — оптимизированный dalvik исполняемый код, если мне не изменяет память) стала DEODEX (то бишь НЕ оптимизированной), все исполняемые файлы готовы к модификации. Непосредственно модификацииСоздание патчейКак я уже и рассказывал, мой телефон изначально имел запрет на использование Google. Ну хоть ты тресни, на Playstore не зайти, учетную запись не настроить, телефонная книга толком не синхронизируется. Зачем нужен такой Android? Долго копаясь в логах (logcat) самого устройства, я нашел записи, которые говорили о том, что использование Google запрещено. Самое не удобное в Android, вы видите лог, но не знаете какое системное приложение его производит. Чтобы отыскать от куда ноги растут, мне пришлось распотрошить все системные приложения до дизассемблированного Java кода. Это заняло достаточно времени, но я до сих пор пользуюсь проделанной работой при анализе и поиске нужного кода. Этапы получения подобного инструментария следующие: В итоге у меня получилось столько папок, сколько было JAR файлов в /system/framework, и каждая папка имела структуру исходных кодов Java. Не будем рассматривать всю логику запрета, так как для каждого случая это отдельная история. Мне пришлось потратить пару часов, прежде чем я нашел где производятся проверки, построить в голове блок схему алгоритма и понять куда надо лезть, чтобы алгоритм чуть чуть «попортить». Оказалось все просто. Есть подпрограмма, которая на основе заранее установленных констант, при обращении отвечала, относится ли телефон к Китаю или же нет. Код находился в файле HTCExtension.jar, а класс, который содержал данную подпрограмму находился в \com\htc\util\contacts\BuildUtils$Customization.java Распаковка и анализ оригинального файла1. Сперва нам надо взять оригинальный DEODEX JAR файл, который отвечает за нужную нам часть кода. В нашем случае HTCExtension.jar. 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 В моем случае это была команда 9. Страшно, не правда ли? Ничего же не понятно. Но, это дело поправимое. Создав несколько своих патчей и набив тем самым руку, вы легко сможете модифицировать код без сторонних средств. В нашем случае, в этом коде 10. Самый простой способ спасти отца русской демократии, это изменить код на следующий: 12. А как нам получить Dalvik код данного исходного кода? Для новичков мы сделаем небольшой трюк. Создание Dalvik кода1. Открываем Android SDK. 3. Компилируем наш проект и затем берем собранное приложение из рабочей области. Накатывание патча1. Dalvik код замусорен маркерами, указывающими строку кода в оригинальном исходном файле. Это нужно при выводе ошибок, если таковые имеются в вашей программе. Без указаний строк код также прекрасно работает. 3. Сохраняем файл. Да, забыл сказать, редактор нужен нормальный, например Notepad++ или EditPlus. Кому какой нравится. Компиляция и сборка патченного JAR файла1. С помощью backsmali мы распотрошили наш JAR файл, а теперь его надо собрать обратно. Замена оригинального файла на патченныйОбычно, для рядовых пользователей создаются специальные скрипты, которые через recovery заменяются. Но нам такое не интересно. Во-первых долго и нудно, во-вторых мы же опытные пользователи и можем себе позволить некоторые тонкости. 1. Заменить текущий рабочий файл можно следующими командами, если у вас уже стоит DEODEX прошивка и имеется root доступ: 1-ая команда закидывает патченный файл на флешку 2. Спасибо что дочитали до этого пункта, осталось немного. ЭпилогДа, кому-то показалось данная статья слишком специфичной, кому-то мало-понятной, а кому-то бесполезной. Я специально обошелся без углубленной детализации и иллюстраций как это все выглядит в живую и на практике. Во-первых, данный труд будет неблагодарный и только породить еще больше вопросов. Во-вторых, не хочу видеть армию пользователей на форумах, которые жалуются, что убили свой телефон. К следующей статье я расскажу как делать Твики. Будет пример использования автоматической записи телефонных звонков родными средствами телефона. Спасибо за ваше внимание. Источник |