Приложения у кого есть root

Приложения у кого есть root Техника

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

Содержание статьи

Споры о нужности и ненужности прав root ведутся давно. Обладание правами суперпользователя накладывает на пользователя определенную ответственность, снижает безопасность хранения данных, зачастую приводит к частичной или полной потере гарантии, а на некоторых смартфонах (Samsung) безвозвратно блокирует возможность использования части оригинальных приложений. Все это может отпугнуть любых пользователей. Зато взамен ты получишь возможность использовать множество крутых штук.

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

Написание приложений с поддержкой прав root сильно отличается от традиционного программирования для Android. И не потому, что нам придется задействовать низкоуровневые системные API (хотя это тоже возможно), а потому, что, по сути, мы будем иметь дело с консолью и ее командами. То есть в буквальном смысле нажатия кнопочек на экране будут приводить к исполнению консольных команд. Поэтому первое, что мы должны сделать, — это научиться запускать команды без прав root.

Screen Standby

  • ОС: Android 2.0 и выше
  • САЙТ: goo.gl/JjJ8a
  • ЦЕНА: Бесплатно
За феерической мешаниной из дизайна Metro и Holo в Screen Standby скрывается куча полезностей
За феерической мешаниной из дизайна Metro и Holo в Screen Standby скрывается куча полезностей

Одна из наиболее удручающих особенностей реализации поддержки HDMI в Android — это необходимость держать экран включенным. По умолчанию картинка всегда выводится на основной экран смартфона или планшета, а при подключении внешнего экрана по HDMI она просто масштабируется и дополнительно выводится на «большой экран». Как результат, мы имеем две проблемы: отстойное качество картинки на телевизоре или мониторе из-за масштабирования и дублирование картинки на двух экранах. С первым ничего нельзя сделать по технической причине, зато вторую можно решить с помощью приложения Screen Standby, которое принудительно отключает заднюю подсветку экрана, так что можно спокойно смотреть видео или играть в игры, не отвлекаясь на копию изображения на планшете.

Screen Standby позволяет нажатием кнопки отключить подсветку, также у него множество весьма полезных настроек, например отключать экран разными способами (для LED- и TFT-экранов) и отключать подсветку самостоятельно при подсоединении HDMI-кабеля. Для этого достаточно включить опцию Auto HDMI/MHL Detection в разделе HDMI Detection (там же есть и настройки отключения при запуске приложения или помещения в док).

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

Xposed

  • ОС: Android 4.0 и выше
  • САЙТ: goo.gl/4lB2y
  • ЦЕНА: Бесплатно
xposed1
В инсталляторе Xposed достаточно просто нажать «Установить».
В инсталляторе Xposed достаточно просто нажать «Установить». Список модулей после установки будет пуст
Список модулей после установки будет пуст

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

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

Чтобы разобраться с этой проблемой, юзер rovo89 с XDA Developers придумал оригинальное решение. Он модифицировал системный фреймворк Android таким образом, чтобы любую его функцию можно было перехватить и поменять на собственную реализацию. В результате появилось приложение Xposed, которое позволяет заменить стандартный Android-фреймворк модифицированным и реализует интерфейс для подключения модулей, то есть модификаций, созданных другими разработчиками.

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

Теперь о том, как все это использовать. Для начала необходимо установить инсталляторXposed. После его запуска следует нажать кнопку «Установить/Обновить» на главном экране. Смартфон уйдет в перезагрузку, после которой он будет готов принять модули. Сами модули распространяются в виде обычных APK-пакетов, устанавливаемых стандартным способом. После установки модули необходимо активировать через вкладку «Модули» в инсталляторе Xposed, а затем тапнуть по иконке модуля в меню приложений для его настройки.

Интернет и реклама

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

AFWall+ — это брандмауэр. Блокировать разрешается любой софт, включая системные процессы вроде adb, drm и ota update. Таким образом, можно оставить доступ к интернету только одному приложению, например Opera Mini, или отрезать доступ к Сети отдельным приложениям, которым интернет нужен только для показа рекламы и слива пользовательских данных.

AdAway не умеет блокировать рекламу в YouTube. Для этой цели можно использовать модуль Xposed YouTube AdAway.

Ну и последнее приложение в этом разделе — RouterNet. Это Wi-Fi-репитер. Используя Wi-Fi Direct, приложение создает сеть Wi-Fi, которая получает интернет от другой сети Wi-Fi (как режим WISP на роутере), позволяя покрыть интернетом «слепые» зоны. Из-за особенностей работы приложения поддерживается только WPA2.

И пришел root

Как я уже сказал, функциональность root-приложений построена на том, чтобы запускать команды от имени пользователя root, то есть суперпользователя. В UNIX-системах (а ею Android является на самом низком уровне) эта операция выполняется с помощью команды su. По умолчанию она просто открывает шелл с правами root, но с помощью флага -c правами root можно наделить любую команду. Например, чтобы выполнить команду id, с правами root достаточно такой строки:

runCommand("su -c id");

Команда id, кстати говоря, возвращает идентификатор текущего пользователя (0 = root), так что сразу можно проверить, как все работает. Однако при таком методе запуска возникают проблемы с парсингом. Если ты укажешь дополнительные аргументы (например, su -c uname -a), команда просто не отработает. Обойти ограничение можно, передав ее как массив строк. Для удобства немного модифицируем код метода runCommand, заменив в нем первую строку:

public String runSuCommand(String cmd) {
      try {
          Process process = Runtime.getRuntime().exec(new String[]{"su", "-c", cmd});
          ...

Все, теперь с его помощью можно запускать хоть несколько команд одновременно, все с правами root:

runSuCommand("id; uname -a; cat /proc/cpuinfo");

В сущности, это все, и можно переходить к примерам, но есть еще один нюанс: смартфон может быть не рутован. Этот момент необходимо обязательно учитывать и проверять наличие прав root. Наиболее простой и эффективный способ проверки — посмотреть, есть ли бинарник su в системе. Обычно он располагается в каталоге /system/bin/ или /system/xbin/ (в большинстве случаев), поэтому просто напишем такую функцию:

private boolean checkSu() {
    String[] places = {"/system/bin/", "/system/xbin/"};
    for (String where : places) {
        if (new File(where + "su").exists()) {
            return true;
        }
    }
    return false;
}

Объяснять тут особо нечего, есть su — true, нет — false.

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

runSuCommand("mount -o remount,rw /system");

После этого можно спокойно работать с файлами системного раздела, если, конечно, на устройстве не используется блокировка доступа к /system (S-ON). По-хорошему, после окончания работы с файлами рекомендуется снова смонтировать /system с правами «только чтение»:

runSuCommand("mount -o remount,ro /system");

Однако это, скорее, правило хорошего тона, на работу системы смонтированный на запись раздел /system никак не влияет.

Дополнительно:  Как включить ноутбук без кнопки включения с клавиатуры — проверенный способ
Стандартное окно запроса прав root в CyanogenMod
Стандартное окно запроса прав root в CyanogenMod

DroidWall

  • ОС: Android 1.5 и выше
  • САЙТ: code.google.com/p/droidwall
  • ЦЕНА: Бесплатно

droidwall1

В DroidWall неугодным приложениям можно легко запретить доступ к 3G
В DroidWall неугодным приложениям можно легко запретить доступ к 3G

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

Именно это позволяет сделать простое приложение под названием DroidWall. По сути, оно просто выводит на экран список приложений и позволяет расставить галочки напротив тех, которые должны иметь доступ к интернету, и снять с тех, что не должны. Опционально можно раздельно регулировать доступ к мобильным сетям и Wi-Fi, благодаря чему можно серьезно сэкономить на мобильном трафике.

Full!screen

  • ОС: Android 3.0 и выше
  • САЙТ: нет
  • ЦЕНА: Бесплатно
Вместо строки состояния теперь небольшая кнопка в углу экрана
Вместо строки состояния теперь небольшая кнопка в углу экрана

Начиная с версии 3.0, в Android появилась строка наэкранных клавиш управления, которая заменила собой аппаратные кнопки «Домой», «Назад» и «Меню», а также включила в себя функциональность статусбара на планшетах. Это правильный и логичный шаг со стороны Google, однако благодаря толстой строке внизу экрана, которая скрывается только при использовании стокового плеера и YouTube, полезное пространство экрана исчезает в никуда (что особенно неприятно в случае со смартфоном).

Стандартной возможности скрыть строку в Android нет и никогда не появится, поэтому приходится выкручиваться собственными силами. Один из способов сделать это — установить приложение full!screen. Оно делает ровно то, о чем говорит его название, — скрывает строку и разворачивает интерфейс приложения на полный экран.

Чтобы оставить пользователю возможность возвращаться к предыдущему приложению или к домашнему экрану, full!screen создает в углу экрана (или даже в обоих углах) небольшую полупрозрачную кнопку, при нажатии на которую появляются стандартные клавиши навигации. То, какие клавиши будут доступны пользователю, какой будет кнопка и что вообще она будет делать, можно настроить через окно настроек приложения.

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

В CyanogenMod и многих других кастомных прошивках, кстати, такая функциональность встроена, и при ее активации описанных глюков не наблюдается.

Удобство управления

Права суперпользователя помогут значительно разнообразить, ускорить и сделать более удобной навигацию на устройстве. Например, Франсишку Баррозу (Francisco Barroso) сумел сделать новую систему жестов из MIUI 10 доступной практически для любых смартфонов со всеми анимациями и жестами. Для пользования достаточно установить приложение Fluid Navigation Gestures.

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

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

Прокручивать списки, не касаясь экрана, также можно с помощью Fingerprint Gestures. Приложение позволяет назначить действия на прикосновение к сканеру отпечатков пальцев, а также, при наличии прав root, включить прокрутку списков.

Также списки можно прокручивать с помощью клавиш регулировки громкости. Для этого есть модуль Xposed XUpDown.

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

Fluid Navigation Gestures
Fluid Navigation Gestures

LMT Launcher

  • ОС: Android 3.0 и выше
  • САЙТ: goo.gl/29Of4
  • ЦЕНА: Бесплатно
Так выглядит LMT. Просто и со вкусом
Так выглядит LMT. Просто и со вкусом

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

Через некоторое время подобная функциональность появилась в приложении LMT Launcher, предназначенном для создания альтернативной системы управления смартфоном в том случае, если у тебя отказали аппаратные клавиши навигации или если ты хочешь использовать все рабочее пространство экрана на смартфоне типа Galaxy Nexus. До этого в LMT Launcher были доступны довольно дурацкие способы замены, такие как многопальцевые жесты и создание невидимых кнопок управления в углах экрана.

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

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

К слову сказать, совсем скоро после LMT Launcher точно такая же функция появилась в прошивке Paranoid Android 3, откуда она в начале года была портирована в CyanogenMod, правда, в очень урезанном и не таком эффектном виде.

LagFix

  • ОС: Android 2.2 и выше
  • САЙТ: нет
  • ЦЕНА: Бесплатно
Без прав root тут никуда...
Без прав root тут никуда…

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

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

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

Чтобы избежать этого, можно запустить консольную команду fstrim, которая принудительно очистит ячейки, принадлежащие уже удаленным файлам, и, таким образом, позволит в будущем записывать данные сразу. Можно также воспользоваться приложением LagFix. Достаточно просто запустить его и нажать кнопку «Run!».

To root or not to root?

Термин root (дословно «корень») пришел в Android из мира Linux, где этим словом принято именовать пользователя с безграничными возможностями администратора. Однако если в Linux для получения прав этого пользователя достаточно набрать команду «sudo -s» и ввести свой пароль, то в Android так просто этого не сделаешь. По умолчанию Android запрещает использовать права root всем, кроме самой операционной системы. Причем это не просто запрет, это техническое ограничение; в системе нет утилит su и sudo, которые позволили бы получить права другого пользователя.

Дополнительно:  Неверный пароль root

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

Присоединяйся к сообществу «Xakep. ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку!
Подробнее

Paragon NTFS & HFS+

  • ОС: Android 2.3.3 и выше
  • САЙТ: www.paragon-software.com
  • ЦЕНА: Бесплатно
paragon1
Paragon можно использовать и для подключения ФС вручную.
Paragon можно использовать и для подключения ФС вручную. Точку подключения можно выбрать самостоятельно
Точку подключения можно выбрать самостоятельно

По умолчанию на внешних накопителях Android поддерживает только файловые системы FAT и exFAT. Это не очень хорошо, так как многие предпочитают форматировать карты памяти больших объемов, а также флешки и внешние жесткие диски в более подходящие для этого файловые системы. Линуксоиды — в ext2, пользователи Windows и OS X — в NTFS и HFS+.

Однако если проблема первых решается довольно просто с помощью уже интегрированного в ядро драйвера, то вторым живется похуже. По умолчанию стоковые ядра вообще не включают в себя драйверы NTFS и HFS+, а кастомные если и включают, то не позволяют их использовать, что называется, из коробки. К счастью, решить эту проблему довольно просто, если воспользоваться приложением Paragon NTFS & HFS+.

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

AppSync

  • ОС: Android 2.2 и выше
  • САЙТ: goo.gl/w9QZS
  • ЦЕНА: Бесплатно
К сожалению, можно синхронизировать данные не всех приложений
К сожалению, можно синхронизировать данные не всех приложений

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

Приложение AppSync позволяет полностью автоматизировать процесс обмена настройками между несколькими приложениями одной Wi-Fi-сети. Для этого достаточно установить AppSync на оба девайса, указать имя устройства и пароль для доступа к нему. Сразу после запуска AppSync на другом устройстве оно появится в списке. Далее можно выбрать необходимые приложения, и их данные будут загружены на устройство. Pro-версия приложения также поддерживает синхронизацию через NFC и облачные диски.

Командуем

Запуск внешних команд в Android выполняется точно так же, как и в Java, а именно с помощью такой строки:

Runtime.getRuntime().exec("команда");

Правда, в коде придется обрамить ее try/catch:

try {
    Runtime.getRuntime().exec("команда");
} catch (IOException e) {
      throw new RuntimeException(e);
}

Метод exec() запускает шелл и команду в нем в отдельном потоке. После завершения команды поток дестроится. Все просто и понятно, но вот толку нам от этого мало — вывода команды мы все равно не видим. Чтобы решить эту проблему, мы должны прочитать стандартный выходной поток, для чего понадобится примерно такая функция:

public String runCommand(String cmd) {
      try {
          // Выполняем команду
        Process process = Runtime.getRuntime().exec(cmd);

          // Читаем вывод
        BufferedReader reader = new BufferedReader(
            new InputStreamReader(process.getInputStream()));
        int read;
        char[] buffer = new char[4096];
        StringBuffer output = new StringBuffer();
        while ((read = reader.read(buffer)) > 0) {
            output.append(buffer, 0, read);
        }
        reader.close();

          // Дожидаемся завершения команды и возвращаем результат
        process.waitFor();
        return output.toString();
    } catch (IOException e) {
        throw new RuntimeException(e);
    } catch (InterruptedException e) {
        throw new RuntimeException(e);
    }
}

Теперь у нас есть возможность запускать команды и видеть результат их работы, но что это нам дает? Ну, как вариант — мы можем прочитать инфу о процессоре. Создаем простую формочку с одной кнопкой сверху и TextView ниже нее. Далее в теле метода onCreate пишем такой код:

// Наш TextView
final TextView textView = (TextView) findViewById(R.id.textView);
// Кнопка
final Button button = (Button) findViewById(R.id.button);
// При нажатии кнопки
button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
          // Запускаем команду и размещаем вывод в TextView
        String cpuinfo = runCommand("cat /proc/cpuinfo");
        textView.setText(cpuinfo);
    }
});
Собственный CPU-Z в две строки
Собственный CPU-Z в две строки

Все, результат, как говорится, налицо. Вместо команды cat /proc/cpuinfo можно использовать и что-то поэкзотичнее, например uname -a, которая выводит версию ядра Linux, или cat /system/build.prop для просмотра файла системных настроек. Однако так мы далеко не уедем, система не даст нам сделать что-то серьезнее, чем чтение некоторых файлов или запуск простых команд. Хардкор начнется только при наличии прав суперпользователя.

INFO

Брандмауэр есть и в некоторых антивирусных продуктах, например в Avast Mobile Security.

Интересно, что, если поискать в маркете другие приложения Paragon Software, 90% из них окажутся различными словарями, стоимость которых доходит до 1000 рублей.

Возможность устанавливать сразу несколько файлов прошивки есть, кроме ROM Manager, в приложении Auto Flasher.

ROM Manager

  • ОС: Android 2.2 и выше
  • САЙТ: clockworkmod.com
  • ЦЕНА: Бесплатно / 185 руб.

rom-manager1

В ROM Manager множество полезных настроек. Автор даже не навязывает рекламу
В ROM Manager множество полезных настроек. Автор даже не навязывает рекламу

Для выполнения таких операций, как установка прошивок или создание Nandroid-бэкапа текущей прошивки, в Android-девайсах используется консоль восстановления (recovery), в которую приходится самостоятельно перезагружаться, зажав специальные клавиши, а затем долго ходить по меню в поисках нужных функций и файлов прошивки. Чтобы облегчить этот процесс, Кушик Дутта, автор ClockworkMod Recovery, написал приложение ROM Manager, которое позволяет проделать многие из этих операций, вообще не касаясь консоли восстановления.

Бесплатная версия приложения позволяет установить консоль восстановления, скачивать и устанавливать прошивку и создавать Nandroid-бэкапы с помощью нескольких тапов. Заплатив 185 рублей, ты получишь в придачу возможность выкачивать дельта-обновления прошивок, автоматическое уведомление о выходе новой версии прошивки, автоматические бэкапы, а также возможность управлять через браузер и сохранять бэкапы на удаленном сервере. Особый плюс — так называемые цепочки установок, то есть возможность последовательной установки сразу нескольких файлов прошивки, например, сначала саму прошивку, затем кастомное ядро и Gapps.

Pimp My Rom (Beta)

  • ОС: Android 2.1 и выше
  • САЙТ: androguide.fr
  • ЦЕНА: Бесплатно

pimp-my-rom2

Выбираем алгоритм энергосбережения в Pimp My Rom
Выбираем алгоритм энергосбережения в Pimp My Rom

Pimp My Rom — это один из самых богатых на возможности root-инструментов, доступных в маркете. С его помощью к Android можно применить практически все существующие твики, установить модификации, включить экспериментальные функции, разогнать процессор и многое, многое другое. Фактически я бы мог написать целую статью об этом инструменте, и мне бы даже не хватило места, чтобы сказать обо всем. Тем не менее писать целую статью все-таки излишне, так как значительная часть твиков не пригодится большинству пользователей, а некоторые просто не сработают. Вместо этого я расскажу, как с помощью Pimp My Rom выполнить частые и наиболее необходимые настройки и твики. Итак, хит-парад из десяти моих любимых настроек:

  • Активация поддержки init.d. Каталог /etc/init.d в Linux-системах выполняет функцию системы автозагрузки. Любой скрипт или команда, скопированная в него, будет выполнена во время загрузки девайса. Стоковые прошивки не имеют поддержки init.d, но ее легко в них добавить с помощью Pimp My Rom: Tools -> Universal Init.d Support -> Activate.
  • Разгон, алгоритм энергосбережения и планировщик ввода-вывода. Все это можно изменить с помощью раздела Tools -> Pimp My CPU. В качестве алгоритма энергосбережения (Governor) лучше выбрать interactive(x) или smartass, а в качестве планировщика ввода-вывода (IO Scheduler) — sio или deadline.
  • Запрет выгрузки приложений из памяти. Если ты часто используешь какое-либо приложение или несколько приложений, то есть смысл запретить их выгрузку при нехватке свободной памяти: Tools -> Lock Apps in Memory. В этом случае выбранные софтины всегда будут запускаться моментально. С другой стороны, при запуске тяжелого софта (например, игр) их придется вручную выгружать из памяти с помощью таск-киллера.
  • Инженерное меню смартфона. В Android есть скрытое меню настроек, с помощью которого можно изменить некоторые параметры устройства (например, запретить переходить на 2G в условиях плохого сигнала 3G), но, чтобы получить к нему доступ, необходимо набрать в номеронабирателе комбинацию ##4637## или просто зайти в меню Tools -> Device Hidden Menu программы Pimp My Rom.
  • Включение сжатия оперативной памяти. Linux-ядро некоторых прошивок включает в себя драйвер zRAM, который позволяет превратить часть оперативной памяти устройства в виртуальный своп со сжатием данных. Включение этого драйвера позволяет расширить объем оперативной памяти практически задаром. Сделать это с помощью Pimp My Rom можно так: Tweaks -> Multitasking -> zRam Compression -> 128mb.
  • Отключение проверки на ошибки и проверки байт-кода при установке приложений. В Android есть два механизма проверки кода приложений на безопасность. Это проверка кода Dalvik во время установки приложения и проверка на ошибки исполнения запуска нативного кода. Отключив их, мы получим более быстрое исполнение и установку приложений: Tweaks -> Dalvik VM -> Dalvik JNI Error Checking / Dalvik Bytecode Verification — Off.
  • Принудительная отрисовка с помощью графического процессора. Начиная с версии 4.0, Android умеет отрисовывать интерфейс приложений с помощью GPU, благодаря чему достигается высокая плавность его работы. Однако, чтобы это происходило, приложение должно подтвердить необходимость такой отрисовки, иначе все пойдет по старинке, через CPU, с тормозами. Чтобы заставить Android рисовать интерфейс всех приложений с помощью GPU, можно установить такой флажок: Tweaks -> Force GPU Rendering -> On. Имей в виду, что это может привести к сбоям приложений.
  • Запрет на выгрузку рабочего стола из памяти. Наверняка ты сталкивался с таким поведением смартфона, когда после нажатия на кнопку «Домой» сначала появлялся черный экран, а лишь затем рабочий стол, иконки и виджеты. Это происходит потому, что рабочий стол был выгружен из памяти и теперь запускается снова. Чтобы избежать этого, можно заставить систему всегда держать его в памяти: Tweaks -> Lock Launcher in Memory -> On. Однако это будет стоить тебе 30–50 Мб памяти.
  • Оптимизация баз данных. Android использует базы данных SQLite везде, где только возможно. Со временем эти базы данных фрагментируются, и выборка информации из них происходит медленнее. Чтобы избежать этого, можно заставить смартфон оптимизировать базы данных при каждой загрузке системы: Tweaks -> Optimize sqlite3 Databases.
  • Сохранение заряда батареи. Есть множество способов сократить расход батареи. Все их можно применить с помощью одной настройки: Tweaks -> Battery Savings.
Дополнительно:  При включении ноутбука черный экран: что делать, если ноут не включается

Несколько примеров

В маркете полно разнообразных root-приложений с, казалось бы, действительно крутой функциональностью. Это и софт для запуска ADB в сетевом режиме, и приложения для установки recovery и ядер, и софт для перезагрузки напрямую в recovery. Сейчас я покажу, насколько на самом деле сложны эти приложения. Итак, первый тип софта: bloatware cleaner, приложение для очистки Android от системных (неудаляемых) приложений. Реализуется с помощью трех (можно одной) строк:

String apk = "/system/app/Email.apk";
runSuCommand("mount -o remount,rw /system");
runSuCommand("rm " + apk);

Все! Мы удалили системное приложение Email. Добавь сюда интерфейс с возможностью выбора приложений (на основе списка, сформированного из содержимого /system/app/ и /system/priv-app/), и у тебя есть полноценный bloatware cleaner. Можно прикручивать рекламу и выкладывать в маркет. Только имей в виду, что, начиная с Android 5.0, приложения в каталоге /system/app/ располагаются в собственных подкаталогах, так что придется смотреть, какая версия ОС стоит, и при необходимости использовать уже другой код:

String app = "/system/app/Email";
runSuCommand("mount -o remount,rw /system");
runSuCommand("rm -rf " + app);
В Android 5.0 каждое приложение располагается в своем собственном подкаталоге
В Android 5.0 каждое приложение располагается в своем собственном подкаталоге

ОK, а как насчет приложения для перезагрузки в recovery? В кастомах это штатная функция, доступная в Power Menu, но в стоковых прошивках для этого приходится использовать специальный софт. Все сложно? Отнюдь:

runSuCommand("reboot recovery");

Да, это всего одна команда. То есть полноценное приложение с кнопкой «Перезагрузиться в recovery» уместится в 15–20 строк. Неплохо, не так ли? Ладно-ладно, возьмем более сложный пример — прошивку кастомной консоли восстановления прямо из Android. Звучит круто? Конечно, но в коде это выглядит так:

String recoveryImg = "/sdcard/recovery.img";
String recoveryPtn = "/dev/block/platform/msm_sdcc.1/by-name/recovery";
runSuCommand("dd if=" + recoveryImg + " of=" + recoveryPtn);

Стоит отметить, что это пример для чипов Qualcomm, в устройствах на базе других SoC путь до раздела recovery будет другим. Ну и в целом пример не вполне корректный, по-хорошему надо писать интерфейс выбора образа recovery (здесь это /sdcard/recovery.img), а дальше прописывать его в переменную recoveryImg. Но в любом случае исходник полноценного приложения вряд ли будет длиннее тридцати строк.

Кстати, проверить, какой чип используется в девайсе, можно с помощью все того же /proc/cpuinfo:

String cpuinfo = runCommand("cat /proc/cpuinfo");
if (cpuinfo.contains("Qualcomm")) {
      // Имеем дело с Qualcomm, отлично, продолжаем
} else {
      // Другой SoC
}

Идем дальше, на очереди приложения в стиле WiFi ADB (это реальное название). В маркете таких полно, и все они выглядят одинаково: экран с одной кнопкой для включения/выключения режима отладки по сети (ADB over WiFi). Функция очень удобная, а потому приложения пользуются популярностью. Как реализовать то же самое? Как всегда, очень просто:

runSuCommand("setprop service.adb.tcp.port 5555; stop adbd; start adbd");
runSuCommand("setprop service.adb.tcp.port -1; stop adbd; start adbd");

Ну и в завершение поговорим о настройщиках ядра. Таких в маркете достаточно много, один из наиболее популярных — TricksterMod. Он позволяет изменять алгоритм энергосбережения ядра, включать/выключать ADB over WiFi, настраивать подсистему виртуальной памяти и многое другое. Почти все эти операции TricksterMod (и другой схожий софт) выполняет, записывая определенные значения в синтетические файлы в каталогах /proc и /sys.

Реализовать функции TricksterMod не составит труда. К примеру, нам надо написать код, изменяющий алгоритм энергосбережения процессора (governor). Для выполнения этой операции следует записать имя нужного алгоритма в файл /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor, однако для начала следует выяснить, какие алгоритмы поддерживает ядро. Они перечислены в другом файле, поэтому мы напишем простую функцию для его чтения:

private String[] getGovs() {
    return runCommand("cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors").split(" ");
}

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

private boolean changeGov(String gov) {
    runSuCommand("echo " + gov + " > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor");
    String newgov = runCommand("cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor");
    if (newgov == gov) {
        return true;
    }
    return false;
}

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

Есть и множество других файлов для тонкой настройки алгоритма энергосбережения
Есть и множество других файлов для тонкой настройки алгоритма энергосбережения

Вместо выводов

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

Сторонние библиотеки

Приведенный мной способ выполнения команд с правами root отлично работает, но имеет небольшой недостаток. Дело в том, что права суперпользователя будут запрашиваться во время каждого исполнения функции RunSuCommand(), а это значит, что, если юзер не поставит галочку «Больше не спрашивать» в окне запроса прав root, он быстро устанет от таких запросов.

Решить проблему можно один раз, открыв root-шелл, а затем выполняя все нужные команды уже в нем. В большинстве случаев такой метод запуска избыточен, так как обычно нам необходимо выполнить только одну-две команды, которые можно объединить в одну строку. Но он будет полезен при разработке сложных root-приложений вроде комплексных настройщиков ядра и просто комбайнов.

Выводы

Это только малая часть полезных root-приложений, которые я посчитал наиболее востребованными и необходимыми в повседневной жизни. Поискав в маркете по слову «root», можно найти огромное количество другого софта. Большинство окажется ржавым хламом, однако и в нем можно найти настоящие жемчужины, не хуже описанных в статье.

Оцените статью
Master Hi-technology
Добавить комментарий