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

Обновлено: 06.07.2024

Несколько лет назад такие операции, как рутинг, прошивка и тюнинг Android-смартфона, требовали достаточно глубоких знаний, специальных инструментов, совместимых только с настольной Windows, и массу терпения. Сегодня все стало намного проще и все эти действия можно выполнить с помощью специального софта для смартфона, доступного прямо в Google Play.

Введение

Обычно установка альтернативной прошивки на девственно чистый смартфон выглядит примерно так: сначала ты находишь в Google информацию по рутингу своей модели смартфона, затем обзаводишься необходимыми инструментами (Android SDK, adb, fastboot, скрипты), подключаешь смартфон к компу и пытаешься как можно точнее выполнить инструкции. Если все удалось, ты получаешь root и, в некоторых случаях, в довесок кастомную консоль восстановления.

Далее следует установить прошивку. Для этого ты вновь погружаешься в интернет и, спустя полчаса хождения по форумам и чтения информации о совместимости, находишь и скачиваешь zip-архив с прошивкой. Снова подключаешь смартфон к компу и скидываешь на него прошивку. Затем ты выключаешь смартфон, включаешь его, зажав кнопки уменьшения громкости и включения, и получаешь доступ к консоли восстановления. Пять минут походив по меню с помощью клавиш громкости, ты находишь свою прошивку на карте памяти и даешь команду на установку.

После окончания установки ты перезагружаешь смартфон и молишься, чтобы все получилось. Когда на экране появляется рабочий стол, ты с облегчением выдыхаешь и тут же вспоминаешь, что забыл скачать и установить приложения Google и ядро. Что ж, для этого ты еще полчаса проводишь в интернете, находишь искомые zip’ы, скидываешь их на карту памяти, дальше консоль восстановления, тыканье по меню, ожидание со скрещенными пальцами, и вот оно, рабочий стол… блин, надо было устанавливать другую прошивку…

Знакомая картина? Если да, то эта статья для тебя. Из нее ты узнаешь, как проделать все то же самое за десять минут, подключив смартфон к компу только один раз на две минуты.

Что ты хочешь и что ты получишь?

Итак, предположим, что ты держишь в руках совершенно новый смартфон. Твоя задача — установить на него CyanogenMod (как вариант — AOKP, ParanoidAndroid или популярный SuperVasyaAndroidModPlus) и ядро franco.kernel. И тот и другой распространяются в прошиваемых через консоль восстановления zip-файлах. Однако обычная конcоль их не примет из-за кривой цифровой подписи («не производителя это подпись, прощайте»). Поэтому тебе нужна кастомная консоль восстановления, которая не обращает внимания на цифровые подписи. Это может быть ClockworkMod или TWRP.

Бесплатная версия franco.updater не умеет ничего, кроме установки и обновления ядра

Бесплатная версия franco.updater не умеет ничего, кроме установки и обновления ядра

Но! Чтобы установить кастомную консоль восстановления, нужны права записи во внутреннюю память смартфона, то есть нужен root. А root в «не Nexus» устройствах всегда получают с помощью взлома защиты Android. Итого в целом картина действий выглядит так: получение root -> установка консоли восстановления -> прошивка CyanogenMod -> прошивка приложений Google -> прошивка ядра -> перезагрузка -> радость. Давай посмотрим, как все это сделать.

В CyanogenMod есть собственный механизм OTA-обновления прошивки

В CyanogenMod есть собственный механизм OTA-обновления прошивки

Перво-наперво нам нужен root. Сразу скажу, что это единственная задача, для решения которой придется подключить смартфон к компу. Здесь уж ничего не поделаешь, система безопасности Android не позволит сделать это Android-приложению. С другой стороны, плеваться тоже не стоит, так как все делается очень быстро и безболезненно. Общий алгоритм действий выглядит так:

По заявлению украинских разработчиков, iRoot действует в отношении любого смартфона под управлением Android 2.3–4.2.2, а не только устройств от Huawei, как можно было подумать, скачав и запустив приложение. После завершения работы и нескольких перезагрузок на смартфоне должно появиться приложение SuperUser и, конечно же, root-доступ, который откроет нам путь для установки рекавери и прошивок.

iRoot — получаем root в один клик

iRoot — получаем root в один клик

Установка Recovery

Установить кастомную консоль восстановления между тем очень просто. Для этого в маркете есть куча приложений, но я бы рекомендовал использовать Recovery-Tools, ROM Manager или TWRP Manager. Первая предназначена исключительно для установки рекавери и, по сути, состоит всего из двух кнопок: «Flash Clockworkmod Recovery» и «Flash TWRP Recovery». После нажатия одной из них будет установлена та или иная консоль восстановления. В принципе, неважно, какую из них устанавливать, отличие разве что в том, что TWRP удобнее управлять пальцем, но и эта функция нам безразлична — самостоятельно рыться в их настройках мы не будем, а положимся на специальный софт.

rom-manager1

ROM Manager предлагает нам установить ClockworkMod Recovery

ROM Manager предлагает нам установить ClockworkMod Recovery

По идее, Recovery-Tools должна сама определить модель смартфона и скачать правильный архив с консолью, однако этот механизм срабатывает не всегда, да и база данных неполная. Поэтому как запасной вариант можно использовать ROM Manager, предназначенный исключительно для установки ClockworkMod, но зато включающий в себя исчерпывающую базу устройств. Опять же все, что нужно сделать, — это нажать на кнопку Recovery Setup -> ClockworkMod Recovery, подтвердить модель телефона и дождаться окончания установки.

twrp-manager1

TWRP-Manager: простой и удобный способ управления TWRP Recovery

TWRP-Manager: простой и удобный способ управления TWRP Recovery

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

Recovery-Tools: простой и удобный способ установки рекавери

Recovery-Tools: простой и удобный способ установки рекавери

Установка прошивки

Теперь, когда смартфон оснащен кастомной консолью восстановления, он готов принять любую доступную для данной модели прошивку и проглотить ее, не поперхнувшись. Самостоятельно искать прошивки мы, конечно же, не станем. Мы автоматизируем этот процесс с помощью приложения GooManager. Для тех, кто не в курсе: еще с самого начала распространения кастомных прошивок в Сети появился сайт. Изначально на нем размещался проприетарный гугловский софт (типа Gmail или маркета), который авторы кастомных прошивок не могли использовать из-за лицензионных ограничений, но затем он превратился в открытый репозиторий всевозможных прошивок, а еще через некоторое время появилось приложение GooManager, позволяющее автоматически устанавливать как прошивки, так и гугловские приложения.

Это приложение замечательно тем, что дает выбор из доступных прошивок, основываясь на модели смартфона. В результате нам не придется ни самостоятельно искать прошивки, ни бояться за то, что какая-то из них может криво встать. В общем и целом алгоритм работы с приложением выглядит так: «Запуск -> Browse Compatible ROMs -> выбор прошивки по имени (например, aokp или cm) -> выбор версии -> Begin Download -> Order & flash selected -> Flash». И это все, прошивка будет скачана, а затем установлена автоматически. Смартфон при этом перезагрузится.

Установка, или, если быть точным, доустановка приложений Google производится еще проще: Download gapps packages -> Yes -> Order & flash selected. Хотя лучше, конечно же, скачать Gapps заранее, а лишь затем приступать к загрузке и установке прошивки. В таком случае на последнем шаге установки прошивки (Order & flash selected) появится возможность выбрать пакет gapps, и он будет установлен вместе с прошивкой. Установка сразу нескольких пакетов возможна только при наличии TWRP Recovery; в ClockworkMod эта функция заблокирована и работает только в сочетании с платной версией утилиты ROM Manager.

Отмечу также, что по умолчанию GooManager не делает вайп перед установкой прошивки, однако он это умеет. Поэтому каждый раз при кардинальной смене прошивки, то есть именно замене одной на другую, а не обновлении, в последнем окне (которое появляется после нажатия «Order & flash selected») следует ставить флажок напротив опции «Wipe data (factory reset)». Так ты избежишь возможных проблем с загрузкой и работой новой прошивки.

goomanager1

GooManager собственной персоной

GooManager собственной персоной

Установка ядра

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

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

  • franco.Kernel updater — «обновлятор» и конфигуратор одного из самых известных ядер для девайсов линейки Nexus (поддерживаются Samsung Galaxy Nexus, LG Nexus 4, Asus Google Nexus 7 и Samsung Nexus 10). Бесплатная версия умеет только устанавливать и обновлять ядро, но большего нам и не нужно;
  • Trinity Kernel Toolbox — аналогичное решение для ядра Trinity, поддерживающего все те же Nexus-устройства, а также Samsung Galaxy Note II и Galaxy S III. Помимо функции установки, также включает в себя инструменты управления всеми функциями ядра и стоит 114 рублей;
  • GLaDOS Control — практически копия предыдущего приложения, но в этот раз для, прямо скажем, не самого популярного ядра GlaDOS (Galaxy Nexus и Nexus 7). Включает в себя полный комплект для тюнинга и автоматическую обновлялку. Стоит 81 рубль.

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

  1. Идем на xda или 4pda, находим свой девайс, выбираем ядро (да, придется покопаться в многочисленных тредах) и скачиваем его на телефон. Обычно ядро весит 5–10 Мб, поэтому ждать придется недолго и стоить это будет копейки (если нет Wi-Fi).
  2. Устанавливаем и запускаем любой файловый менеджер, переходим в каталог Download на карте памяти, находим архив с ядром и копируем его в каталог goomanager, опять же в корне карты памяти.
  3. Запускаем GooManager, жмем на пункт Flash ROMs, ставим галочку напротив архива с ядром, жмем кнопку «Order & flash selected», а на следующем экране, ничего не меняя, нажимаем кнопку «Flash».

Обновление прошивки, ядра и gapps

К этому моменту у тебя уже должны быть кастомная консоль восстановления, кастомная прошивка, приложения Google и кастомное ядро; фул-хаус, все, что только нужно. Однако долго на этом всем мы не просидим, и вскоре уже выйдут новые версии прошивок, основанные на новой версии Android, еще более быстрые ядра и еще более фичастые консоли восстановления. Короче говоря, нужно обновляться. Но как?

Для обновления также предусмотрены свои собственные инструменты, но перед тем, как перейти к их обзору, поясню несколько специфичных моментов:

  • Консоль восстановления можно обновлять когда угодно и как угодно. Она находится в отдельном разделе, поэтому, даже угробив этот раздел, ты не угробишь Android. Обновлять можно с помощью все тех же Recovery-Tools, ROM Manager и TWRP Manager.
  • Ядро тоже находится в отдельном разделе, и его можно обновлять/менять когда угодно и как угодно, главное — учитывать совместимость с версиями Android и типами прошивок. Способы описаны выше.
  • Обновляется прошивка без всяких вайпов, однако, если было установлено кастомное ядро, его придется переустановить. Переустановка приложений Google не требуется.
  • Переход на другую прошивку производится с полным вайпом (factory reset) и последующей доустановкой приложений Google и ядра. Все данные, кроме файлов на карте памяти, будут потеряны (этого можно избежать, сделав бэкап с помощью Helium или Titanium Backup).

Теперь о том, как выполнять обновление. Рекавери и ядро обновляются с помощью специализированного софта либо, в случае использования редкого ядра, самостоятельного скачивания и прошивки вручную, как показано в предыдущем разделе. Обновлять прошивки можно разными способами. Если прошивка была установлена с помощью GooManager, то при появлении новой версии в репозитории goo.im тебе придет уведомление, нажав на которое можно скачать и установить новую версию. Никаких данных и приложений ты при этом не потеряешь, останется переустановить только ядро.

В CyanogenMod есть собственный механизм обновления, который также автоматически предупредит тебя о выходе новой версии и предложит скачать ее и установить. По умолчанию он работает только со стабильными версиями прошивки, но его можно переконфигурировать, так что предупреждения будут приходить и после выхода ночных сборок. Для этого идем в «Настройки -> О телефоне -> Обновление CyanogenMod». В опции «Проверка обновлений» выбираем «Ежедневно», в опции «Тип обновления» — «Новые версии (Включая ночные сборки)».

Единственная проблема такого метода обновления в том, что каждая прошивка будет весить около 200 Мб — накладно, если производить обновления каждый день или несколько раз в неделю. Поэтому я бы рекомендовал использовать инструмент CyanDelta, который позволяет выкачивать только патчи с измененными компонентами прошивки вместо всего архива целиком. При использовании этого инструмента каждое обновление будет весить всего 2–10 Мб, так что для выкачивания подойдет даже сотовая сеть. Пользоваться очень просто: после первого запуска софтина предложит загрузить всю прошивку целиком (на нее в дальнейшем будут накладываться патчи), после чего повиснет в фоне и будет уведомлять о появлении обновлений.

CyanDelta позволяет скачать новую версию Android, потратив всего 3 Мб трафика

CyanDelta позволяет скачать новую версию Android, потратив всего 3 Мб трафика

Бэкап

Обычно бэкап Nandroid выполняется вручную прямо из меню кастомного рекавери, однако мы воспользуемся приложением Online Nandroid Backup, которое создает резервную копию системы прямо во время ее работы. Приложение это бесплатное и доступно в Google Play. После установки оно установит скрипт бэкапа (это, кстати, придется делать после каждого обновления прошивки) и предложит выполнить первоначальную настройку, которая сводится к выбору способа автогенерации имени бэкапа (по умолчанию текущее время), а также выбору формата бэкапа. Обычный Clockworkmod-формат универсален и будет совместим с любым кастомным рекавери, однако если на смартфоне установлен именно ClockworkMod, то в опции Backup Mode лучше выбрать CWM Incremental. В этом случае каждая новая резервная копия будет содержать только отличия от предыдущей, из-за чего потеряется совместимость с TWRP, но удастся сохранить солидный кусок свободного места на карте памяти.

![Nandroid Manager позволяет вытащить из бэкапа практически любые данные](nandroid-manager1.jpg, nandroid-manager2.jpg)

![Online Nandroid Backup: делаем резервную копию прямо во время работы смартфона](online-nandroid1.jpg, online-nandroid2.jpg)

В прошивке AOKP есть масса скрытых настроек, активировать которые можно, установив бесплатное приложение AOKP.co.

TWRP Manager позволяет выполнять практически все операции TWRP Recovery прямо из Android: установка прошивок, вайп, бэкап и восстановление, перезагрузка в разных режимах.

Выводы

Сегодня процесс прошивки и кастомизации смартфона под управлением Android — это уже не тот зубодробительный квест, каким он был во времена первых версий Android. Как ты смог заметить, все делается очень просто, без чтения длинных мануалов и поиска совместимых прошивок. Но даже в том случае, если что-то пойдет не так, если ты окажешься столь невезучим, что запорешь не только установленный Android, но и консоль восстановления, boot-сектор все равно останется на месте и ты сможешь вернуть свой смартфон к жизни, подключив его к компу и воспользовавшись фирменными инструментами прошивки от производителя.

Евгений Зобнин

Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.

Несколько лет назад, когда я впервые познакомился с 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, а класс, который содержал данную подпрограмму находился в \com\htc\util\contacts\BuildUtils$Customization.java

Распаковка и анализ оригинального файла

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.

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 и смотрим код:

9. Страшно, не правда ли? Ничего же не понятно. Но, это дело поправимое. Создав несколько своих патчей и набив тем самым руку, вы легко сможете модифицировать код без сторонних средств. В нашем случае, в этом коде
происходит присваивание переменной v0 значение 1, то есть TRUE. Далее идут всякие проверки, и если телефон не китайский, то значение переменной изменяется:

10. Самый простой способ спасти отца русской демократии, это изменить код на следующий:
, то есть поменять значение переменной с 1 на 0. То есть что бы ни было, всегда бы возвращалось значение FALSE и в JD-GUI код выглядел бы как
11. Да, метод ,будет работать. Но мы же не ищем легких путей - это раз. Во-вторых не совсем красиво. Хочется кода что-то вроде

12. А как нам получить Dalvik код данного исходного кода? Для новичков мы сделаем небольшой трюк.

Создание Dalvik кода

1. Открываем Android SDK.
2. Создаем новый проект, и в наш единственный тестовый класс пишем следующий код

3. Компилируем наш проект и затем берем собранное приложение из рабочей области.
4. Кладем собранное приложение в папку, где мы с вами потрошили JAR файл.
5. Даем команду
8. Все, код для патчинга готов.

Накатывание патча

1. Dalvik код замусорен маркерами, указывающими строку кода в оригинальном исходном файле. Это нужно при выводе ошибок, если таковые имеются в вашей программе. Без указаний строк код также прекрасно работает.
2. Удаляем строки с нумерацией строк, копируем и заменяем метод (подпрограмму) в нашем \com\htc\util\contacts\BuildUtils$Customization.java файле.

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 доступ:

2. Спасибо что дочитали до этого пункта, осталось немного.
3. После перезагрузки ваш новый патченный код вступит в силу.
4. Если код не работает или выскакивает ошибка, то путем не хитрых комбинаций можно вернуть назад резервную копию.

Эпилог

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

К следующей статье я расскажу как делать Твики. Будет пример использования автоматической записи телефонных звонков родными средствами телефона. Спасибо за ваше внимание.

Прикрепленное изображение

В - Вопрос
О - Ответ
П - Причина
В : emulator: ERROR: no search paths found in this AVD's configuration.
Weird, the AVD's config.ini file is malformed. Try re-creating it.
П : В пути присутствует кириллица.
О : По пути «c:\Documents and Settings\ИМЯ ПОЛЬЗОВАТЕЛЯ\.android\avd\» есть файлик «ВАШЕ НАЗВАНИЕ ВИРТУАЛКИ.ini». Открыть блокнотом и отредактировать путь. У вас он примерно будет выглядеть как, «c:\Documents and Settings\АБРАКАДАБРАЧЕГОТОТАМ\.android\avd\название эмуля.avd». Заменить «АБРАКАДАБРАЧЕГОТОТАМ» на ваше имя пользователя и сохранить.
Это всё проверено на WinXP.
Сам архив тут.
В : adb не является внутренней или внешней командой, исполняемой программой или пакетным файлом
П : Вы не добавили adb в системные переменные или указали там неверный путь к файлу adb.

Теперь нам надо создать свой AVD (Android Virtual Devace), говоря проще создаём наш виртуальный девайс.
Идём в Пуск -> Выполнить -> набираем cmd и жмём ОК

В командной строке пишем android create avd -n <name> -t <targetID>
<name> - это имя нашего девайса (например HTC)
<targetID> - если поставим значение 1, то у нашего девайса будет Android 1.1; если поставим значение 2, то у нашего девайса будет Android 1.5

Так же при создании AVD можно указать и другие параметры для нашего будущего девайса в виде -<option> <value>, где <option> - это параметр, а <value> - значение. Список параметров можно посмотреть тут

Прикрепленное изображение

После создания AVD мы можем изменить железные характеристики нашего виртуального девайса. Для этого идём в директорию где находится наш виртуальный девайс, по умолчанию C:\Documents and Settings\имя_пользователя\.android\ на Windows XP, и C:\Users\имя_пользователя\.android\ на Windows Vista. В файле config.ini дописываем то что хотим изменить, список параметров тут

Удалить виртуальный девайс можно набрав в командной строке android delete avd -n <name>

Для запуска созданного нами виртуального девайса идём в командную строку. Там набираем emulator -avd <avd_name>, где <avd_name> - имя нашего девайса.


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

  • Процессор Intel Core i3-3217U (2 х 1,8 ГГц)
  • Видеоускоритель Intel HD Graphics 4000 (16 х 350 МГц)
  • Разрешение экрана 1920 х 1080
  • Оперативная память 4 Гбайт DDR3L (1 х 1600 МГц)
  • Операционная система Windows 10 x86-64

BlueStacks 2

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

  • быстрая отправка приложений на смартфон;
  • доступные «из коробки» магазины Google Play, AMD AppZone, Amazon Appstore;
  • удобный и интуитивно понятный интерфейс на русском языке;
  • очень простой способ обмена файлами с ОС Windows;
  • возможность запуска приложений Android TV;
  • приложения запускаются в отдельных вкладках и могут работать параллельно.

Очень серьезный недостаток — отсутствие таких элементарных настроек, как изменение разрешения экрана, объема используемой оперативной памяти. Однако эти настройки можно изменить с помощью отдельной программы BlueStacks Tweaker.

Лайфхак

Добавь BlueStacks в исключения Punto Switcher, чтобы не было зависаний при вводе символов с клавиатуры.

Когда этот эмулятор запущен, наблюдаются небольшие фризы в ОС Windows. А приложения, активно использующие ресурсы системы (я запускал браузер Chrome и Microsoft Word), начинают изрядно тормозить. В самом эмуляторе двумерные приложения работают вяло (Instagram, ВК). Фризов нет, но количество кадров в секунду часто проседает явно ниже тридцати. Даже браузер, установленный по умолчанию, подтормаживает при просмотре простых интернет-страниц. Однако все тестовые приложения, кроме нескольких бенчмарков, смогли запуститься и нормально работали.

Игры. Angry birds 2 играбельна. Около 25 FPS. Clash of clans работает примерно с такой же скоростью. Bad piggies вылетала при запуске. Asphalt 8 выдал отличный результат, FPS выше 30. К сожалению, разрешение экрана в этом эмуляторе фиксированное.

Программа полностью бесплатна. Обладает огромным количеством настроек (от смены типа эмулируемого GPU до редактирования IMEI). Ее преимущества таковы:

  • синхронизация с мобильными устройствами;
  • возможность использовать смартфон в качестве джойстика;
  • трансляция экрана Android на ПК.

Общая папка находится по адресу %userprofile%\Andy\ . Все файлы после копирования в нее будут доступны с помощью файлового менеджера по адресу /storage/sdcard0/Shared/Andy/ .

Был протестирован с разными виртуальными GPU. В AnTuTu лучшие результаты оказались у Adreno 225. Но в GFXBench T-Rex всегда одинаковые результаты (8,6 FPS). Кстати, в Quadrant результаты оказались очень слабыми по сравнению с конкурентами. Обычные же приложения работают довольно шустро.

Игры. Bad piggies работает очень быстро. Иногда случаются микрофризы. Clash of clans выдает FPS меньше 30, но работает стабильно. Angry birds показывает такие же результаты, но выдает больше кадров в секунду.

Лайфхак

Если у тебя не запустилось приложение — измени в настройках маскируемый GPU (щелчок правой клавишей мыши по значку программы в системном трее, далее Settings → Advanced → Set GPU Type).

NOX App Player

NOX App Player

NOX App Player

В качестве оболочки используется Nova Launcher. Русскоязычный интерфейс в самом эмуляторе отсутствует, но в настройках можно переключить Android на русский язык. По умолчанию выбрана низкая скорость работы, чтобы минимально грузить систему. Включить максимальное быстродействие можно, кликнув по значку шестерни справа вверху и выбрав вкладку Advanced.

  • камера в компьютере работает «из коробки»;
  • возможность запустить несколько копий эмулятора (иконка Multi-Drive);
  • создание ярлыков для быстрого запуска установленных приложений в папке на рабочем столе.

В результатах тестов нет ничего выдающегося. Грузит систему меньше, чем BlueStacks (и это после установки в настройках Full HD разрешения и назначения эмулятору двух ядер процессора). Браузер Chrome, запущенный в хост-системе, подвисает не очень сильно, в Word и проводнике почти отсутствуют фризы. NOX смог запустить все приложения, которые запускал BlueStacks. Работают эти приложения заметно шустрее, чем у конкурента. Браузер, установленный «из коробки», работает довольно сносно, но при скроллинге страница все равно чуть-чуть подвисает.

Игры. Angry birds 2 запустилась, но некоторые текстуры остались черными, однако это не помешало пройти несколько уровней с приемлемым фреймрейтом. Clash of clans тоже запустилась, были резкие падения FPS и подвисания. В целом — играть можно. Переход из оконного режима в полноэкранный занял больше минуты. При повторном переключении приложение зависло. Bad piggies запустить не удалось.

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

  • относительно гибкие настройки;
  • поддержка нескольких окон;
  • копирование файлов в эмулятор с помощью drag’n’drop.

В бенчмарках MEmu показал результаты немного выше среднего. Кушает ресурсы ОС Windows примерно так же, как и NOX. Во время работы эмулятора Chrome в Windows работает, но с подвисаниями и фризами. Зато в самом эмуляторе никаких фризов нет. Все работает относительно гладко.

Игры. Angry birds 2 работает быстро. Clash of clans лагает, как и в NOX. Bad piggies не запустилась.

AMIDuOS

Разработан фирмой American Megatrends (да-да, это ее BIOS установлены в большинстве компьютеров). DuOS использует функции гипервизора, то есть запускает Android рядом с Windows и позволяет ей работать почти без эмуляции. Стоимость составляет 9,99 доллара, но доступна демоверсия, которая работает 30 дней без ограничений. Обладает очень минималистичным интерфейсом. Даже при первом запуске следом за надписью Android открывается обычный рабочий стол. Это единственный из протестированных эмуляторов, в котором отсутствует привязка свайпов и координат точек к клавишам на клавиатуре (проблема решается установкой кеймаппера). В настройках на главной вкладке можно задать общие с Windows папки.

Лайфхак

Настройки у этой программы находятся в «Настройки → AMIDuOS® Configuration Tool».

Интерфейс работает очень плавно. В AnTuTu результаты тоже впечатлили: больше 68 тысяч баллов. Да и в Quadrant результаты порадовали. А GFXBench не только запустился (во всех других эмуляторах, кроме Andy, он падал), но и выдал 36 FPS в тесте T-Rex вне экрана (это примерно равно результату на Android-x86 на реальном железе). Но поддерживается только OpenGL ES 2.0. Безусловно, это лидер по скорости работы в сегодняшнем тесте (Android-x86 не считаем).

Instagram не запустился, но другие программы работали стабильно и быстро.

Игры. При разрешении дисплея 1920 х 1080 Clash of clans шла очень плавно и без артефактов. При установке Angry birds и Bad piggies, к сожалению, возникала ошибка.

Droid4X

Этот эмулятор дает возможность подключения папок к Windows. Интерфейс программы на английском, но Android внутри позволяет выбрать русский. Обмен файлами очень прост. Шестеренка справа вверху, далее Other settings → Share folder. Теперь осталось выбрать нужную папку, и она отобразится во встроенном файловом менеджере.

  • поддержка технологии мультитач;
  • использование смартфона в качестве геймпада;
  • интерфейс Android почти не подвергся изменениям.

Результаты в бенчмарках средние. Все приложения, как и интерфейс, работают довольно быстро даже в Full HD разрешении. Операционная система во время работы этого эмулятора ведет себя как ни чем не бывало. Даже браузер Chrome листает страницы с обычной скоростью. Пожалуй, этот эмулятор грузит ОС меньше всех.

Игры. Запустить удалось только Clash of clans. Но результат очень удивил — игра работает почти так же плавно, как в DuOS.

Genymotion

Главное преимущество Genymotion — огромный набор реальных Android-устройств для эмуляции, список которых постоянно расширяется. Но их отличие только в версии Android, разрешении экрана, а также в других мелких параметрах. Прошивка будет установлена примерно одна и та же (чистый Android без сервисов Google). Основная аудитория — разработчики ПО.

Присутствует интеграция с Android Studio и Eclipse, командный интерфейс для скриптинга, симуляция СМС, входящих вызовов, разряда батареи, симуляция сбоев в работе интернета и много других интересных вещей. Кстати, в этом эмуляторе можно создать новое устройство и настроить в нем множество разных параметров (в том числе получить root). К сожалению, программа не бесплатна. В бета-версии присутствует множество ограничений.

«ВКонтакте» и Instagram установить не удалось: выскакивала ошибка. Зато эмулятор вообще не влияет на работу Windows, браузер Chrome работает так, будто никакого эмулятора не запущено.

Игры. Запустилась и заработала без проблем и зависаний Bad piggies. Clash of clans тоже запустилась и шла очень плавно. Angry birds 2 при запуске выдавала только черный экран. Стоит отметить, что плавная работа, скорее всего, обусловлена пониженным разрешением экрана в демоверсии приложения.

Windroy

YouWave

Так и не удалось установить. Возникала ошибка во время установки.

Полезное и интересное

    . Представляет собой обычный плагин для браузера. Предназначен для запуска приложений прямо в браузере. Все уставленные приложения можно найти в стандартном менеджере приложений Chrome. Запустить не удалось ни одного. Они запускались две-три секунды (даже включалась начальная заставка), а потом вылетали. . Не эмулятор, а WebOS (запускается на удаленном сервере). Работает во всех современных браузерах. Картинка обновляется очень медленно, многие приложения не запускаются. В общем, для полноценной работы он не годится, но задумка оригинальная. Мне не удалось запустить на нем ни AIDA64, ни AnTuTu, хотя результаты были бы очень интересны. . Android для обычных ПК на базе x86. В тесте сугубо для оценки производительности других эмуляторов. 223 тысячи баллов в AnTuTu и 34 FPS вне экрана на GFXBench в T-Rex говорят сами за себя. Но Quadrant и другие тесты не запустились. В отличие от всяких эмуляторов, присутствует поддержка OpenGL ES 3.0.
  • В VirtualBox, QEMU или другой виртуальной машине можно установить Android-x86. Это позволит запускать приложения Android даже в таких экзотических ОС, как Solaris OS или BSD.

Перед запуском приложения в ARC Welder
Результат теста GFXBench в Android-x86

Заключение

Итак, протестировав несколько эмуляторов, я пришел к выводу, что при всем их многообразии принцип работы каждого примерно одинаковый. Все они заметно уступают по скорости работы настоящему Android, запущенному без всяких эмуляторов. Единственное серьезное преимущество этих приложений в том, что они позволяют пользоваться приложениями Android прямо из ОС Windows и легко обмениваться с ней файлами, обладают встроенным «из коробки» кеймаппером (в DuOS его нет).

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

В скорости работы безусловным победителем оказался, конечно же, DuOS. Однако он поддерживает только Windows и не все игры. Самый серьезный недостаток — отсутствие привязки координат точек и свайпов к клавишам на клавиатуре. Частично проблема решается установкой кеймаппера. Второй по скорости работы — Droid4X (к тому же он поддерживает OS X). Пользователям Linux я бы порекомендовал Andy.

Что касается разработки и тестирования, то здесь безусловный лидер — Genymotion. Он предоставляет почти безграничные возможности разработчикам софта для Android, благодаря симуляции разных событий в системе, наличию списка реальных устройств с уже установленными параметрами, тесной интеграции с Android Studio и Eclipse и поддержке скриптинга.

Пара советов

Если не удается запустить нужное приложение или игру (или оно работает с ошибками), рекомендую попробовать утилиту GLTools. Она устанавливает альтернативный драйвер OpenGL, который поддается гибкой настройке. Это может быть маскировка названия видеоускорителя, включение или отключение сглаживания и так далее.

Если привязка координат точек и свайпов к клавишам на клавиатуре в эмуляторе отсутствует или работает некорректно, то можно поставить кеймаппер (приложение для передачи на экран нажатий и действий с разных манипуляторов). Среди самых известных: Tincore Keymapper, GKM Touch. Для их корректной работы понадобятся права root.

Читайте также: