Как пользоваться программой android tools

Обновлено: 07.07.2024

Привет всем. =) Как и обещал, выкладываю вторую часть материала статьи об энергосбережении на Android. На этот раз речь пойдет о возможностях c root-доступом.

О том, что такое Root, как его получить, возможные риски, полезный софт - в этой замечательной статье на 4PDA

Итак, если вы рутировали свой гаджет, то у вас открываются дополнительные возможности по экономии электроэнергии:

1. Удаление или отключение ("заморозка") любых приложений;

2. Управление частотой процессора;

3. Исключение программ из автозагрузки;

4. Поиск программ, не дающих "засыпать" устройству и/или чрезмерно нагружающих процессор;

5. Модули для Xposed для экономии электроэнергии.

Можно было бы добавить пункт "Правка файлов в разделе system вручную", но это еще более опасно, чем взаимодействие с system через специализированный софт, поэтому о нем упоминать не рискну.

С первого пункта и начнем. Как я уже писал в первой части, дополнительной экономии электроэнергии можно достичь с удалением/отключением программ. С наличием Root-доступа вы можете удалить/отключить любую программу. НО БУДЬТЕ ОЧЕНЬ ОСТОРОЖНЫ: удаление и/или отключение того-что-трогать-нельзя, может привести к негативным последствиям, вплоть до "окирпичивания". Приложения, от которых можно безболезненно избавиться, вы можете уточнить на тематических форумах. Либо, как вариант, воспользоваться программами Power Clean или менеджер приложений (ROOT) (ссылки на упомянутые приложения будут в конце поста). В первой программе выбираем Менеджер приложений, прокручиваем список до "Предуст. прил-я", где приложения делятся на те, что можно безопасно отключить и на те, которые трогать нельзя. Справедливости, ради, отключение Play Маркета, Hangouts, стандартного почтовика, которые приложение занесло в список "неприкасаемых", не нанесло моему телефону никакого вреда. Во втором при запуске формируется список системных приложений, который делится на три типа: "Можно удалить", "Лучше оставить" и "Удалять небезопасно".

Энергосбережение Android. Часть 2. Энергосбережение, Android, Совет, Длиннопост

Энергосбережение Android. Часть 2. Энергосбережение, Android, Совет, Длиннопост

Если написанное выше не испугало, начнем с менее радикального способа. Пожалуй, самой известной программой для отключения ("заморозки") является Titanium Backup. Точнее, это лишь одна из его множества полезных функций. Для заморозки приложения запускаем Тitanium, жмем вкладку Резервные копии, где находим нужное приложение, тапаем по нему и выбираем "Заморозка!". Но я, например, отключаю приложения через Lacky Patcher, еще одну утилиту, но с "уклоном" в сторону патчинга и взлома приложений. Нужно лишь в настройках в разделе "Фильтр" поставить галочки рядом со всеми пунктами, и тогда в списке будут отображаться все приложения. Ну а дальше все просто: тап по приложению > Инструменты > Отключить приложение (заморозить). У этого же автора есть Lucky App Manager - Lucky Patcher без "незаконных" функций.

Энергосбережение Android. Часть 2. Энергосбережение, Android, Совет, Длиннопост

Энергосбережение Android. Часть 2. Энергосбережение, Android, Совет, Длиннопост

Перечислю еще несколько программ с функцией отключения приложений: Link2SD, SD Maid, My Android Tools, System Cleanup.

Перейдем к удалению системных приложений. Тут скажу очень кратко: Все, что умеет замораживать приложения, почти наверняка умеет и удалять системные. А также многочисленные файлменеджеры с менеджерами приложений, отдельные менеджеры приложений, всевозможные "комбаины". Главное - чтобы они имели доступ к root-привилегиям.

Управление частотой процессора

ВНИМАНИЕ! Ручное изменение частоты CPU может привести к зависанию, нестабильной работе и теоретически даже к повреждению устройства!

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

Все современные устройства могут динамически управлять частотой своего процессора в зависимости от его загрузки, тем самым регулируя его производительность и энергопотребление. Но это не всегда может происходить правильно и наиболее оптимально, и у аппарата будет не экономичный расход энергии. При этом, при отсутствии активных приложений, выключенном экране, частота процессора снижается до минимального значения, прописанного в ядре прошивки, как правило это 15-30% от максимальной частоты. В правильно оптимизированном устройстве, со средней повседневной нагрузкой, большую часть времени процессор будет работать именно на минимальной частоте. Оценить оптимизацию энергопотребления процессора устройства можно посмотрев статистику работы процессора на той или иной частоте. Для этого открываем приложение Android System Info, выбираем вкладку Информация о системе и пункт Процессор. Если там вы видите, что большую часть времени процессор работает на максимальной частоте, значит, с оптимизацией есть проблема. При этом, в первую очередь нужно посмотреть графики загрузки процессора в программах мониторинга, например, SystemPanel. Если процессор не грузит какое-либо приложение, за счёт чего его частота поднимается, значит, неправильно работает штатный режим управления частотой.

Энергосбережение Android. Часть 2. Энергосбережение, Android, Совет, Длиннопост

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

SetCPU и CPU Control. Вторая дополнительно умеет понижать напряжение процессора.

Энергосбережение Android. Часть 2. Энергосбережение, Android, Совет, Длиннопост

Исключение программ из автозагрузки

Многие сталкивались с ситуацией, когда только что купленный смартфон радует своего владельца необыкновенной скоростью и отзывчивостью, но стоит установить в него весь комплект необходимых программ, как от былой резвости не остаётся и следа. Это происходит из-за того, что очень многие программы и сервисы добавляют себя в автозагрузку, стартуют вместе с операционной системой, а затем так и работают в фоновом режиме, отбирая системные ресурсы и съедая заряд вашего аккумулятора. Чтобы убрать программы из автозагрузки, существует несколько утилит, самая известная и популярная из которых - Autostarts. Посему расскажу подробнее именно о ней. При запуске программы на дисплее появляются вкладки, при нажатии на которые видно, какие приложения и службы запускаются при том или ином действии. Чтобы удалить какое-либо приложение, жмем на него и в открывшемся окне выбираем Запретить. Помните: даже после удаления Autostarts, все изменения внесённые в приложения сохранятся на постоянной основе. Если вы хотите исследовать правила запуска для каждой конкретной программы, то необходимо переключиться в настройках в режим

Энергосбережение Android. Часть 2. Энергосбережение, Android, Совет, Длиннопост

Как видите, в целом довольно просто. Подробнее тут и FAQ из самой программы.

Существуют и аналоги Autostarts:

Startup Manager, Autorun Manager, AutoRun Manager (да, разработчики иногда не заморачиваются с названиями) и другие программы, которые вы, при желании, можете найти в сети и Play Маркете.

Поиск "незасыпающих" и грузящих процессор программ

Некоторые программы работающие в фоне, могут своими запросами "будить" телефон находящийся в режиме "сна" (так называемые Wakelock) и не давать ему перейти в режим энергосбережения, при этом появляется та самая "невидимая" активность.

Далее описаны несколько способов вычисления виновника незасыпания:

Перед применением какого-либо способа, попробуйте сначала просто перезагрузить телефон (особенно при сильной "невидимой" активность или показателе Running

100%), этого порой бывает достаточно.

Устанавливаем программу Wakelock Detector и запускаем её перед сном. Утром смотрим как "спал" телефон, какие приложения его "будили". Если попадается в лидерах незнакомый процесс, гуглим за что он отвечает и делаем выводы.

Устанавливаем BetterBatteryStats, так же запускаем перед сном, утром смотрим результаты. Подробное описание здесь.

Устанавливаем SystemPanel, переходим "Меню->Настройки", ставим галку "Включить Мониторинг", остальные галки по желанию. Оставляем аппарат на некоторое время в покое, желательно на всю ночь. По прошествии времени переходим Меню->Мониторинг. Нажимаем кнопку "История" и видим графики. Можно задать интервал вывода информации (если мониторинг работал всю ночь, удобнее выставить "8 часов"). Находясь в Истории, нажимаем на кнопку в верхнем левом углу "график", выбираем там Топ-приложения и получаем список приложений и процессов. Нажимаем на наиболее активные процессы и видим информацию о процессе, внизу видим историю потребления. Нажимаем кнопку "Сравнить", и снизу добавляются общие графики. Поочередно просматривая графики всех процессов, в итоге находим виновников незасыпания.

Энергосбережение Android. Часть 2. Энергосбережение, Android, Совет, Длиннопост

Энергосбережение Android. Часть 2. Энергосбережение, Android, Совет, Длиннопост

Энергосбережение Android. Часть 2. Энергосбережение, Android, Совет, Длиннопост

Модули Xposed для экономии энергии

Если очень кратко, то Xposed - это программа для изменения настроек приложений и прошивок без необходимости их декомпиляции, компиляции и подписи. Нужный результат достигается с помощью т.н. модулей. И, как вы уже догадались, некоторые модули помогут сэкономить заряд аккумулятора. Рассмотрим подробнее несколько: Power Nap, Amplify Battery Extender - Root, Greenify, Boot Manager,

Power Nap - это аналог технологии Stamina от Sony, но теперь доступный для Android-устройств версии 4.1 и выше. Модуль останавливает фоновые процессы, когда отключен экран, но вы можете добавить в список исключений те приложения, от которых нужны уведомления: соцсети, мессенджеры, звонки и SMS и т.п.

Программа Amplify прибивает основные системные процессы, пожирающие заряд батареи: NlpWakelock, NlpCollectorWakeLock, ALARM_WAKEUP_LOCATOR и ALARM_WAKE_ACTIVITY_DETECTION. Одно это позволяет ощутимо увеличить время жизни гаджета между зарядами, а за пожертвование доступны дополнительные функции.

Xposed Media Scanner Optimizer позволит вам взять под контроль процесс индексирования медиафайлов и настроить его по своему вкусу. Вы будете получать уведомления о начале работы сканера и его завершении, сможете запускать и приостанавливать этот процесс вручную, установить каталоги и типы файлов, которые будут индексироваться и многое другое.

Boot Manager делает то же, что и Autostarts: убирает программы и службы из автозагрузки.

Greenify - модуль для гибернации (усыпления) программ.

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

Список программ в комментариях (даю ссылки на 4PDA, т.к некоторые программы там русифицированы и есть полные версии. Но для скачивания нужна регистрация. Там же ссылки на Play Маркет, если данная программа там есть).

Tools — это инструмент для работы с XML-файлами в Android. Он поддерживает множество полезных атрибутов, особенно при вёрстке экранов. Чтобы воспользоваться его атрибутами, в файле XML нужно прописать namespace (пространство имен) этого инструмента в корневом элементе, по аналогии с примерами ниже:


И просто добавляете такую строку:



Получается так:

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

Представьте себе ситуацию: вы верстаете экран, на котором отображается список. Но самого списка у вас нет — он приходит с какого-то сервера. Или текстовые поля с именем и фамилией пользователя. Пользователи могут быть разные, поэтому заранее написать имя пользователя в полях нельзя. Просто написать атрибут для текста, чтобы увидеть, как имя будет выглядеть в вёрстке, нельзя. Ведь тогда пользователь будет видеть какое-то имя до того, как с сервера придёт обновление с правильным именем:


А вот если заменить android на tools, то во время вёрстки текст будет виден, и вы сможете посмотреть, как он выглядит. Но в финальную сборку этот атрибут уже не попадёт, и имя будет отображаться только тогда, когда оно загрузится с сервера. Удобно, не правда ли?


Давайте посмотрим, какие ещё возможности предоставляет инструмент tools.

Заменяем android на tools для любого атрибута

Мы уже говорили,как можно использовать tools для подстановки текста. Но, в принципе, его можно применять для любого атрибута. Например, кнопка не видна по умолчанию, но в вёрстке на неё можно посмотреть и убедиться, что она стоит на своём месте и выглядит как положено. Для этого мы, помимо видимости через invisible, прописываем видимость через tools только для себя.


Используем tools в работе со списками

Один из наиболее часто используемых элементов в вёрстке — список. И для него у tools есть много полезных атрибутов. ItemCount показывает на экране предпросмотра ровно столько элементов, сколько вы хотите увидеть.


Также можно посмотреть, как будет выглядеть типовой список. Для этого в Android Studio есть свои шаблоны. Чтобы не смотреть на список по умолчанию, можно отобразить элемент списка. Используйте для этого listitem, как в примере ниже.



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


Начнем с того, что тебе нужен Linux. В Windows ты сможешь только разобрать прошивку, но собрать обратно уже не получится по чисто техническим причинам. Теперь о прошивке. Обычно они распространяются в виде ZIP-архивов, прошиваемых через кастомные рекавери. Именно один из них нам и понадобится для опытов. Начинать путь ромодела я рекомендую с какой-нибудь максимально приближенной к AOSP кастомной прошивки, потому что в ней зачастую проще разобраться, чем в стоке.

Нужный ZIP можно найти на XDA Developers или 4PDA. Но имей в виду, что нужна прошивка конкретно для твоей модели аппарата, — у того же Galaxy S7 есть несколько модификаций для разных рынков, не всегда совместимых между собой.

Структура ZIP-файла с прошивкой

После загрузки распакуем архив с помощью любого архиватора. Внутри будет следующий набор файлов и папок:

  • META-INF — папка с метаинформацией о прошивке (сертификат автора, манифест со списком файлов, их контрольными суммами), скриптом обновления (updater-script) и инсталлятором (update-binary), который выполняет команды скрипта по монтированию разделов, копированию файлов и другим действиям с NAND-памятью;
  • boot.img — образ с ядром и RAM-диском (он прошивается в раздел boot);
  • system.new.dat — это, грубо говоря, и есть сама прошивка, а точнее образ раздела system, содержащий операционную систему Android за вычетом ядра;
  • system.transfer.list — содержит список команд, которые необходимо выполнить, чтобы поблочно скопировать содержимое system.new.dat в раздел system при установке прошивки;
  • system.patch.dat — используется для OTA-обновлений, то есть выборочного внесения изменений в прошивку; если прошивка «полная», он имеет нулевой размер.

Реверс малвари

Распаковываем system.new.dat

Файлы system.new.dat и system.transfer.list представляют для нас наибольший интерес. Точнее, не они, а содержащаяся в них система. Но добраться до нее не так просто.

Скрипт

Самые ленивые могут разобрать прошивку с помощью скрипта System_Extractor-Linux.

  1. Распаковываем архив с прошивкой в любую папку.
  2. Качаем скрипт по ссылке и разархивируем в любую папку.
  3. Запускаем файл ext (если будет ругаться на отсутствие Java, просто пропусти, нажав y ; Java нужна только для запаковки).
  4. Теперь выбираем распаковку, нажав кнопку 1, а затем Enter.
  5. Новая папка с именем extract_* появится рядом с файлом ext и папкой tools . Копируем в нее файлы system.new.dat и system.transfer.list .
  6. После копирования файлов нажимаем Enter и ждем. Через некоторое время нужно будет опять нажать Enter, ввести пароль администратора и еще раз тапнуть Enter.
  7. Готово. Содержимое system в папке extract_*/output .

Ручной способ

Распаковываем архив с прошивкой в любую папку (например, в rom ):

Скачиваем нужные нам инструменты в эту папку:

Он преобразует файл system.new.dat в raw-образ с именем system.img . Монтируем образ к подпапке mnt :

Содержимое образа system

Содержимое образа system

Структура каталогов Android

После распаковки system появится следующая каталоговая структура:

  • app — предустановленные приложения со стандартными привилегиями;
  • priv-app — предустановленные приложения с повышенными привилегиями, в том числе некоторые компоненты системы;
  • bin — бинарные файлы формата ELF, аналог каталогов /bin и /usr/bin в Linux. Содержит различные системные компоненты, используемые более высокоуровневыми компонентами системы;
  • etc — файлы настроек. Полный аналог /etc в Linux, используемый, однако, только теми самыми системными компонентами. Приложения Android хранят индивидуальные настройки в каталогах /data/data/ ;
  • fonts — шрифты. По умолчанию содержит только фирменные шрифты Roboto;
  • framework — библиотеки Java-классов, используемых системой и приложениями. Тут же лежит файл framework-res.apk , содержащий полное описание интерфейса операционной системы, включая все графические файлы;
  • lib и lib64 — Linux-библиотеки, используемые низкоуровневыми компонентами системы. Аналог каталогов /lib и /usr/lib в Linux, включая такие стандартные библиотеки, как libc, libz, libssl. На устройствах с архитектурой ARMv7 и ниже каталог lib64 будет отсутствовать;
  • media — медиафайлы: рингтоны, звуки уведомлений, звуки интерфейса и анимация загрузки ОС;
  • tts — файлы, необходимые синтезатору речи;
  • usr — каталог, который обычно содержит файлы, необходимые для работы приложений из каталога bin. По сути, аналог /usr/share ;
  • vendor — файлы, поставляемые производителем устройства. Обычно содержит бинарный firmware для различных железных компонентов, например модуля Wi-Fi;
  • xbin — необязательный каталог; кастомные прошивки используют его для хранения таких вещей, как интерпретатор bash, SSH, PowerTOP, BusyBox, и других полезных инструментов;
  • build.prop — файл, содержащий информацию о сборке, а также различные низкоуровневые настройки;
  • addon.d — содержит скрипты, запускаемые после установки прошивки. Сюда же GApps прописывают свой скрипт, благодаря которому возрождаются после переустановки прошивки.

Ознакомившись с базовой структурой Android, начнем вносить изменения.

Удаляем и добавляем приложения

Все предустановленные программы можно найти в двух папках:

Друг от друга они отличаются привилегиями доступа. Если программы из app имеют такие же полномочия, как сторонние программы (например, установленные из Play Store), то приложения из priv-app могут использовать привилегированные API (права privileged). Подробнее об этом можно узнать из нашей статьи.

Для предустановки приложения в прошивку просто кинь ее APK-файл в /system/app/ . Можно, конечно, создать отдельную папку, но в нашем случае в этом нет смысла, потому что папка служит для хранения библиотек и odex-файлов, которых у нас попросту нет. Для удаления просто удали папку с ним.

Можно пойти дальше и поменять стоковые приложения на аналоги. К примеру, для замены календаря удаляем папку Calendar и копируем в /system/app наш любимый com.rpagyc.simplecalendar.apk . А можно и не копировать. Тогда прошивка будет без календаря.

Главное, помни: стоковые программы могут быть связаны между собой. Поэтому удаление одной проги вполне может привести к полной неработоспособности другой (к примеру, CalendarProvider и Calendar: удалив первый, ты сделаешь неработоспособным не только стоковый, но и любой другой календарь). К счастью, в чистых AOSP-прошивках взаимосвязей не так много.

Меняем анимацию загрузки

Анимация хранится в виде PNG-картинок, упакованных в архив /system/media/bootanimation.zip без сжатия. Внутри архива находятся:

  • desc.txt — файл, описывающий анимацию;
  • part0 — папка с файлами анимаций, которые воспроизводятся первыми;
  • part1 — папка с файлами анимаций, которые воспроизводятся вторыми;
  • .
  • part? — крайняя папка, изображения с которой воспроизводятся в конце.

Файл desc.txt может содержать нечто вроде

Назначение этих строк интуитивно понятно: 1920 × 1080 — разрешение картинки, 60 — число кадров в секунду. Part0 и part1 указывают на папки, из которых будет воспроизводиться анимация, и последовательность воспроизведения. Вообще, может быть как одна часть, так и несколько (три и больше).

Изображения, находящиеся в папках part, пронумерованы пятью цифрами в порядке воспроизведения: 00000.jpg , 00001.jpg , 00002.jpg . Эти изображения можно поменять на свои, тем самым создав оригинальную анимацию. А можно просто удалить файл bootanimation.zip . Тогда девайс будет показывать анимацию из стандартного Android. Или воспользоваться уже готовой коллекцией анимаций на 4PDA.

Четыре части в bootanimation.zip для LineageOS

Четыре части в bootanimation.zip для LineageOS

Изменяем звуковое оформление

Фактически все звуки, которые воспроизводит система, хранятся в папке /system/media/audio . Внутри нее ты найдешь следующие папки:

  • alarms — мелодии будильника;
  • notifications — звуки уведомлений;
  • ringtones — мелодии звонка;
  • ui — системные звуки, например низкий заряд батареи, фокусировка камеры, выбор элементов интерфейса.

В alarms, notifications, ringtones можно накидать сколько угодно любых мелодий. Взять их можно, например, здесь:

И маленький лайфхак: удаление файлов из папки ui приведет не к сбоям и ошибкам, а к исчезновению системных звуков. Поэтому ты можешь легко отключить звук создания снимка с камеры, снятия скриншота, просто потерев содержащие эти звуки файлы (их имена интуитивно понятны).

Добавляем шрифты

Шрифты хранятся в fonts . Найти архивы с файлами шрифтов можно на 4PDA и XDA. Для установки достаточно скопировать с заменой ttf-файлы из архива в папку fonts .

Меняем системные настройки (build.prop)

В образе system есть интересный файлик build.prop , содержащий множество полезной информации о железе устройства и настройках, устанавливаемых по умолчанию, для различных стоковых приложений. Справедливости ради замечу, что это не всегда так. Например, в Gigaset ME и ME Pro build.prop разделен на две части. В одной части содержатся настройки для Gigaset ME, а для ME Pro некоторые строки продублированы, но ключи (название смартфона и так далее) в них другие. Это было сделано, чтобы обеспечить более-менее корректную работоспособность одной и той же прошивки на разных аппаратах.

Дополнительный файл для Gigaset ME и ME Pro

Дополнительный файл для Gigaset ME и ME Pro

Build.prop содержит (или может содержать) огромное количество настроек. Некоторые из них ничего не меняют, некоторые улучшают одно за счет ухудшения другого, но есть те, которые действительно полезны:

  • ro.product.model и ro.product.manufacturer — модель смартфона и имя производителя. С помощью замены этих строк можно заставить Play Store думать, будто у тебя другой смартфон, что откроет доступ к большему количеству софта. Для всяких малоизвестных китайских смартфонов эти строчки могут стать спасительными;
  • hw.qemu.mainkeys — принимает только два значения: 0 — показать наэкранные клавиши навигации, 1 — не показывать кнопки. Отсутствие строки соответствует 0;
  • debug.sf.nobootanimation — значение 1 отключает анимацию загрузки, что немного поднимает ее скорость. Установка 0 или удаление строки возвращает анимацию на место;
  • ro.telephony.default_network — говорит системе, в какой режим должна быть переключена мобильная сеть при загрузке;
  • ro.sf.lcd_density — DPI дисплея, наиболее точное значение для дисплея можно посчитать через удобный сайт. Но никто не запрещает поставить и большее или меньшее значение по своему вкусу: более высокие значения делают элементы интерфейса крупнее, низкие — меньше;
  • ro.config.vc_call_vol_steps — количество шагов громкости во время разговора (по умолчанию 8);
  • ro.config.media_vol_steps — количество шагов громкости мультимедиа (по умолчанию 15).

Внедряем в прошивку Google Apps

Почти всегда кастомные прошивки поставляются без сервисов Google и магазина приложений. Разработчики предлагают нам установить их отдельно с помощью пакета GApps. Однако его можно интегрировать прямо в прошивку.

Для начала необходимо скачать пакет GApps. Я рекомендую брать архивы Open GApps. Выбираешь версию Android, архитектуру процессора и вариант комплектации (Pico, Nano, Stock. ), который определяет, сколько различных приложений Google содержит архив. Я рекомендую скачать версию Pico. Она содержит только Play Store и набор необходимых для его работы библиотек.

Интеграция GApps в прошивку выполняется так:

  1. Распаковываем ZIP-архив GApps с помощью любого архиватора.
  2. Переходим в папку Core.
  3. Видим множество архивов с расширением .tar.lz . Извлекаем с помощью lzip.
  4. После распаковки копируем файлы из папок в соответствующие папки в system. Что куда кидать, нетрудно догадаться по структуре каталогов в архиве. Например, configupdater (со скриншота) нужно кидать в папку priv-app .
  5. Переходим в папку GApps (находится рядом с Core) и проделываем пункты 3 и 4 для файлов в ней.
  6. Все, мы интегрировали GApps в нашу прошивку!

Свободное место

Необходимо понимать, что место для установки прошивок ограниченно. Нельзя установить прошивку, размер которой перевешивает размер раздела system устройства. Посмотреть его значение можно, используя ADB:

Инфа о разделе system

Инфа о разделе system

Второй вариант: поставить на устройство терминал и набрать команду

Размер раздела в байтах можно узнать, установив на смартфон BusyBox и выполнив в терминале команду

Или то же самое с помощью ADB:

Место, занимаемое прошивкой, будет приблизительно равно размеру system в распакованном виде. Вообще, при создании прошивки необходимо учитывать, что юзер также может прошить поверх нее различные модификации (SuperSU, Xposed) или перенести приложения в раздел system. Например, минимальный пакет приложений Google (Pico) требует минимум 150 Мбайт дополнительного пространства для установки.

При необходимости размер файла прошивки можно уменьшить, удалив не только ненужные программы из /system/app ( /system/priv-app ) и звуки вызова из system/media/audio и bootanimation.zip , но и:

  • /system/tts/lang_pico — языки примитивного голосового движка Pico TTS, голосовой движок Google это не затронет;
  • /system/usr/srec/config/ — офлайн-языки. Можно будет скачать потом онлайн, если понадобится.

Сборка

После внесения изменений нужно собрать все обратно. Сначала запакуем раздел system в system.new.dat . Скачиваем нужные нам инструменты:

Преобразовываем нашу папку обратно в RAW-образ. Назовем его system_new.img :

1073741824 меняем на размер раздела system в байтах. Желательно даже сделать его чуть меньше. Делаем из RAW-образа sparse-образ:

Преобразуем наш образ в system.transfer.list и system.new.dat , которые и нужно кидать в архив с прошивкой, но сначала удалим старые файлы:

Отделим файлы прошивки от лишней шелухи (файлов, которые мы загружали для работы. Для этого удобно пользоваться архивом с прошивкой). Удалили? Теперь нужно запаковать прошивку в ZIP-архив (любым архиватором).

Осталось подписать архив. Сделать это можно как на самом Android с помощью ZipSigner, так и на ПК (потребуется установленная Java):

Подводные камни

Во время сборки system.new.dat ты можешь столкнуться с несколькими проблемами, вызванными постоянными изменениями в механизмах формирования прошивок Android. Описанный выше способ должен хорошо сработать в случае основанной на Android 5.1 прошивки, в более новых могут возникнуть сложности, так что потребуется использовать другие версии инструментов сборки. К сожалению, мы не можем описать все нюансы сборки, поэтому, возможно, придется погуглить.

Установка

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

Выводы

Эта статья описывает лишь верхушку огромного айсберга под названием «модификация прошивок». «Серьезные» прошивки не только дополняют ядро и саму прошивку со стоковыми приложениями множеством функций (которые зачастую вырваны из других ядер и прошивок), организовывая или даже меняя принципы их взаимодействия, но и вполне могут кардинально менять принципы работы ОС. Правда, такая поделка — это уже не Android, а отдельная ОС, даже если Play-сервисы получится туда поставить (кстати, такие действия, мягко говоря, не поощряются Google). Ну и не забываем: все оболочки от производителей — TouchWiz, ZenUI, HTC Sense и так далее — всего лишь обычные кастомы, максимально привязанные к железу устройства и друг к другу.


Работая над статьями о 30 лучших библиотеках и проектах Android 2019 г. и 25 лучших библиотеках и проектах Android 2020 г., я наткнулся на множество замечательных инструментов и проектов, которые могут пригодиться в разработке приложений для Android — ниже они приведены в случайном порядке. Пользуйтесь.

1. AinD — Android (Anbox) в Докере

AinD запускает приложения Android, помещая контейнеры Anbox в Докер.


В отличие от аналогичных проектов на основе виртуальных машин, AinD может выполняться на экземплярах IaaS без поддержки вложенной виртуализации. Docker Hub: aind/aind .

Совместимость с Android (через облако) для планшетов на iOS и Windows

2. Booster

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


Booster — это набор модулей для оценки производительности, оптимизации многопоточности, встроенного индекса ресурсов, сокращения числа избыточных ресурсов, сжатия ресурсов, исправления системных ошибок и т. д. Booster позволяет повысить стабильность приложения на 15–25% и снизить размер пакета на 1–10 МБ.

Документация очень хорошая, лицензия — Apache 2.0.

3. Shake

Shake — один из лучших инструментов для обнаружения ошибок, изучения действий пользователя для воспроизведения ошибки и сбора скриншотов или видео с ошибками. Благодаря ему работа с ошибками при бета-тестировании и в публичной версии сильно упрощается — инструмент определенно стоит того, чтобы попробовать.

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

4. Scabbard

Scabbard помогает с визуализацией и анализом графика зависимостей Dagger 2.

Scabbard визуализирует точки входа, схемы зависимостей, взаимосвязи компонентов и области действия. Добавить этот инструмент в проект очень легко: он хорошо интегрирован с Gradle, а также с Android Studio и IntelliJ (нажав значок на левом поле в редакторе, можно просмотреть схему для @Component или @Subcomponent ).

Документирован проект отлично: есть множество примеров и подсказок.

Лицензия — Apache 2.0.

5. Can I Drop Jetifier?

Как известно, иногда перейти со старой библиотеки поддержки на AndroidX не так просто, особенно в крупных проектах с большим количеством устаревшего кода. Успех перехода во многом зависит от использования инструмента Jetifier (преобразует зависимости, которым для работы с классами AndroidX всё еще требуются старые артефакты), который замедляет сборку.

«Всё больше и больше библиотек переходят на AndroidX, поэтому в какой-то момент необходимость включать этот инструмент отпадает. Этот плагин определяет, какие из используемых библиотек нужно перенести на AndroidX — или избавиться от них, если уже вышла новая версия», — Can I Drop Jetifier?


Документация понятная, проект выпущен под лицензией Apache 2.0. Очень рекомендую!

6. ADB Event Mirror

ADB Event Mirror позволяет отражать события касания экрана, нажатия клавиш и кнопок одного устройства на одно или несколько других устройств в реальном времени.

«Этот сценарий не адаптирует разрешение, плотность пикселей, ориентацию и макет приложения. Поэтому лучше всего он работает с эмуляторами, созданными с одинаковой конфигурацией», — ADB Event Mirror

Инструмент дает возможность протестировать приложение одновременно на эмуляторах различных типов.

7. Android Emulator Container Scripts

Android Emulator Container Scripts — набор небольших сценариев для запуска эмулятора в контейнере для различных систем (например, для Докера) с целью внешнего использования. Сценарии совместимы с Python версий 2 и 3. Этот репозиторий довольно популярен и пригодится, если нужно запускать много эмуляторов на удаленных машинах.

Проект выпущен под лицензией Apache 2.0 и хорошо документирован.

8. Autoplay

Autoplay — это плагин для Gradle, предназначенный для публикации артефактов Android в Google Play.


Его можно считать очень простой альтернативой Gradle Play Publisher или Fastlane. Опубликовать приложение можно как apk или набор App Bundle.

Оптимизирован для использования в CI/CD.

Удобен для разработчиков.

Надежен и перспективен.

У проекта хорошая документация, версия на момент написания статьи — 1.3.0 , лицензия — Apache 2.0.

9. Плагин Gradle для статического анализа

Плагин статического анализа Gradle — комплексная замена для всех значимых инструментов статического анализа кода, включает в себя следующее:

FindBugs [ПОДДЕРЖКА ПРЕКРАЩЕНА] [удален в Gradle 6.0]

Смысл в том, что вам не нужно будет настраивать все эти инструменты самостоятельно — их можно без особых усилий включить в свою кодовую базу. Плагин выпущен под лицензией Apache 2.0 и отлично документирован (есть даже пример проекта).

10. AndroidUtilCode

AndroidUtilCode — функциональная и простая в использовании библиотека для Android, которая инкапсулирует функции, обычно используемые при разработке Android с демонстрационными версиями и модульными тестами. Инкапсулированные API позволяют значительно повысить эффективность разработки.

Проект состоит в основном из двух модулей: utilcode (используется в разработке часто) и subutil (используется редко, но позволяет упростить основной модуль).


Версия проекта — 1.29.0 , лицензия — Apache 2.0.

11. Hijckr

«Hijckr вмешивается в инфляцию макета Android и перенаправляет названные элементы в другие классы».


Это довольно интересный инструмент. Например, если файл макета содержит TextView , Android обычно загружает android.widget.TextView , но вместо этого можно перехватить xml -теги и загрузить com.myapp.TextView .

Описание проекта довольно подробное и позволяет быстро начать работу с инструментом (который полностью написан на Java).

12. Roomigrant

Roomigrant — это вспомогательная библиотека для автоматической генерации миграций библиотеки Android Room с использованием формирования кода во время компиляции. Она использует созданные библиотекой Room файлы схемы и генерирует миграции на основе разницы между ними — то есть, создание схемы Room должно быть включено в файле build.gradle , что хорошо описано в README.

Проект выпущен под лицензией MIT, версия 0.1.7 .

13. RoomExplorer

После переноса базы данных на Room неплохо бы просмотреть ее: RoomExplorer позволяет просматривать все данные таблиц в табличном формате, удалять таблицы, вставлять, изменять и удалять строки и т. д.

Инструмент хорошо документирован, лицензия — Apache 2.0.

14. Android Framer

Инструмент android-framer добавляет рамки и заголовки к скриншотам в Google Play. Источник вдохновения — fastlane frameit.


Инструмент написан на Python и использует ImageMagick. Настроить рамки (фоны) можно, например, с помощью Facebook Design. Также можно менять шрифт, кегль, размер рамки и т. д.

Лицензия — Apache 2.0.

15. Dependency Tree Diff

Dependency Tree Diff — это «интеллектуальный инструмент сравнения для вывода задачи dependencies Gradle, который всегда показывает путь к корневой зависимости».


Можно установить инструмент через brew или просто использовать jar -файл.

Лицензия — Apache 2.0.

16. Gradle Doctor

Gradle Doctor — это плагин для сканирования сборки Gradle. Функциональность: настраиваемые предупреждения о проблемах со скоростью сборки, измерение временны́х затрат на инструменты обработки аннотаций Dagger, установка переменной JAVA_HOME и проверка ее соответствия JAVA_HOME в IDE, простое отключение кеширования тестов, остановка сборки в случае, если найдены пустые каталоги src (поскольку это может быть причиной несовпадений в кеше), и многое другое.

У инструмента отличная документация, проект выпущен под лицензией Apache 2.0.

17. GloballyDynamic

GloballyDynamic — это «набор инструментов, направленных на обеспечение всеобщей доступности Dynamic Delivery, независимо от магазина приложений или платформы распространения, которые также предоставляют единый унифицированный клиентский API для Android и простой интерфейс для разработчиков».


Большинство других платформ — в сочетании с сервером GloballyDynamic (например, Amazon App Store, Samsung Galaxy Store, Firebase App Distribution или локальная разработка).

Рекомендую прочитать README и подробнее ознакомиться с этим инструментом.

Лицензия — Apache 2.0.

18. Dagger Browser

Dagger Browser — еще один инструмент (прогрессивное веб-приложение) для удобной навигации по схеме Dagger в проекте.


«Данные схемы заполняются с помощью SPI-плагина Dagger, а средство просмотра написано с помощью CRA (create-react-app) и TypeScript», — Dagger Browser

Есть и пример приложения, в котором показано, как инструмент работает. Всё это выпущено под трехпунктовой лицензией BSD.

19. Wormhole

Wormhole — «путешествующий во времени инструмент преобразования байт-кода, добавляющий в android.jar будущие API-интерфейсы, которые можно десахаризовать на все уровни API с помощью D8 и R8».

Wormhole обеспечивает обратную совместимость с более новыми API. Приведу пример.

«В Android R есть новые методы из Java 9 — например, List.of . Благодаря D8 и R8 они не являются эксклюзивными для API 30 и мгновенно превращаются в совместимые с API 1. В D8 и R8 есть набор методов десахаризации для API, которых еще нет в android.jar . И можно не ждать, пока они появятся — этот проект дает возможность использовать их сразу же».

20. MNML

MNML (произносится как «minimal» — «минимальный») — простое бесплатное приложение для записи экрана в Android.


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

Лицензия — Apache 2.0.

Заключение

Вот и всё. Надеюсь, список вам понравился и какие-то инструменты смогли вас вдохновить. До встречи!

О переводчике

Перевод статьи выполнен в Alconost.

Alconost занимается локализацией игр, приложений и сайтов на 70 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.

Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.

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