В отличие от iOS, Windows Phone и некоторых других мобильных ОС, исходный код Android открыт, благодаря чему энтузиасты могут модифицировать систему каким угодно образом и оформлять свои модификации в виде свободно распространяемых прошивок, таких как CyanogenMod, Paranoid Android и OmniROM. Такие прошивки содержат в себе огромное количество полезнейших модификаций, однако не каждый готов идти на риск, устанавливая их. К счастью, существует способ получить все преимущества кастомов на любой стоковой прошивке.
XPOSED FRAMEWORK
Не так давно мы уже упоминали что для Android существует система Xposed — набор библиотек и приложений, которые, работая вместе, позволяют сторонним приложениям перехватывать обращения к любым Java-классам Android и подменять их на свои собственные. Проще говоря, аналог Cydia Substrate для iOS, с помощью которого пользователь может изменять поведение и внешний вид андроид.
Сам по себе Xposed предоставляет лишь средства для проведения перехвата, тогда как актуальная работа происходит в специальных приложениях, называемых модулями. В настоящее время подобных модулей насчитывается уже несколько сотен, а диапазон их функций простирается от таких мелочей, как вывод фотографии абонента при звонке на полный экран и эмуляции функциональности других прошивок, до движков тем и многофункциональных модулей «на все случаи жизни». Практически любую функцию любой сторонней прошивки сегодня можно получить с помощью модулей Xposed на обычной стоковой прошивке.
[ad name=»Redmi»]
Большинство модулей никак не зависят ни от марки, ни от модели девайса и способны работать в любом Android начиная с версии 4.0. Единственное серьезное ограничение — необходимость получения прав root, но сегодня эта процедура доступна даже полному нубу благодаря наличию специальных приложений для рутинга.
Как работает EXPOSED:
Xposed состоит из двух основных компонентов: модифицированной версии бинарника /system/bin/app_process, который в Android отвечает за запуск виртуальной машины Dalvik, и набора Java-классов XposedBridge.jar, который содержит код, способный перехватывать вызовы любых Java-классов и отдавать их другим классам.
Суть метода. Инсталлятор Xposed заменяет стандартный app_process на свой собственный. При загрузке операционная система стартует виртуальную машину с помощью подмененного app_process, который автоматически загружает XposedBridge.jar. По мере работы система форкает виртуальную машину для каждого запускаемого Java-приложения, включая графический интерфейс и множество системных компонентов, так что классы XposedBridge оказываются в каждом из них.
При установке Xposed-модуль реги стрирует себя в XposedBridge в качестве обработчика тех или иных Java-классов этих приложений, что дает ему возможность заменить их на свои собственные. Говоря другими словами, модули Xposed не изменяют систему, а подменяют ее компоненты на «фейковые», поэтому после отключения модуля или всего Xposed система автоматически вернется к перво начальному состоянию.
УСТАНОВКА И НАСТРОЙКА
Установить и настроить Xposed довольно просто. По своей сути это обычный APK-пакет, который
после запуска разворачивает все необходимые компоненты для работы системы Xposed в систему. Получить сам пакет можно на официальном сайте (goo.gl/61rOz7). Там же, кстати, находится репозиторий модулей, однако скачивать модули вручную не придется, так как все можно сделать с помощью самого приложения.
После скачивания и установки пакета переходим в раздел «Фреймворк» и нажимаем кнопку «Установить/обновить», далее нажимаем «Быстрая перезагрузка», чтобы система подхватила установленные компоненты Xposed при следующей загрузке. В большинстве случаев этого будет
достаточно для того, чтобы подготовить Android к установке модулей. Если же речь идет о смартфоне с залоченным разделом /system (S-ON), способ установки придется изменить на «Из режима восстановления» в меню «Фреймворк Режим установки». В этом случае после нажатия
кнопки «Установить/обновить» система уйдет в перезагрузку и архив с компонентами Xposed будет автоматически прошит с помощью консоли восстановления.
МОДУЛИ
После перезагрузки вновь запускаем инсталлятор Xposed и переходим в раздел «Загрузка». Здесь отображаются все доступные в репозитории модули, а также обновления самого Xposed. Для установки модуля просто выбираем нужный и нажимаем кнопку «Загрузка» напротив последней версии. Чтобы активировать модуль, переходим в раздел «Модули», ставим галочку напротив того, что установили, и перезагружаем смартфон.
Попробуем установить один из модулей. Для примера хорошо подойдет Tinted Status Bar. Находим его, устанавливаем, активируем в секции «Модули» инсталлятора Xposed и отправляем смартфон в перезагрузку. После загрузки пробуем запускать разные приложения. Эффект должен быть заметен сразу, это строка состояния, которая теперь меняет цвет в зависимости от цветовой схемы самого приложения (почти как в iOS 7). Вот и все, мы поменяли поведение системного компонента без установки кастомных прошивок и модификаций, прошиваемых через
recovery!
Далее я расскажу о самых интересных, необычных и полезных модулях Xposed, но сначала предупрежу о нескольких нюансах, которые надо знать перед тем, как приступить к их установке.
Первое — модули бывают преимущественно двух типов: те, что просто делают свою работу и нигде не светятся, и те, что поддаются настройке. Модули первого типа могут изменять внешний вид или поведение системы, но настроить их не удастся; либо они активны в настройках Xposed, либо отключены (пример такого модуля — Masterkey Multi-fix). Модули второго типа обычно тоже никак себя не проявляют, но создают иконку в меню приложений, которая открывает доступ к настройкам модуля. С их помощью можно активировать те или иные функции модуля и изменить его поведение (примеров таких модулей полно: App Settings, GravityBox и многие другие).
Второе — не все модули совместимы с любыми версиями Android. Некоторые из них рассчитаны на работу с определенными типами стоковых прошивок (например, с прошивками от Samsung или HTC) и могут вести себя непредсказуемо на других прошивках (хотя смартфон они не окирпичивают, конечно). Другие рассчитаны только на работу с определенной версией Android. Например, в репозитории есть два модуля GravityBox, один из которых рассчитан на работу в Jelly Bean (Android 4.1–4.3), другой — в KitKat (4.4). Чтобы не словить глюки, этот момент тоже нужно учитывать. Также следует быть осторожнее с планшетами на базе Android 4.0–4.1, в них используется несовместимый с телефонным интерфейс и многие модули не работают.
Отдельная история — кастомные прошивки. Обычно с ними никаких проблем не возникает, но случаются курьезы. Например, после установки GravityBox в OmniROM ты получишь два индикатора батареи. Происходит так потому, что в этой прошивке используется собственный, несовместимый со стоком механизм отображения индикатора батареи, о котором GravityBox ничего не знает. К счастью, проблема легко решается отключением индикатора либо в настройках самой прошивки, либо в GravityBox (останется только один индикатор).
[ad name=»UMI 600×313″]
Третье — модуль может быть не просто обособленным пакетом, а входить в состав обычного Android-приложения. Если ты установишь на смартфон приложение Greenify из Play Store, в Xposed появится соответствующий модуль. В случае с этим приложением он опционален и нужен для получения большего контроля над сном приложений. Многие другие приложения также используют Xposed для расширения своей функциональности: BubbleUPnP для стриминга аудиопотока из любого плеера, Cool Tool — для отображения разных данных в строке состояния и так далее.
Перейдем к модулям. В мой список самых самых вошли более двадцати модулей на любой вкус и цвет. Вот они:
GravityBox
GravityBox — один из самых известных и популярных модулей Xposed. Он не имеет какого-то определенного узко специализированного назначения, а представляет собой сборник из огромного числа различных твиков, направленных в первую очередь на изменение внешнего вида системы.
Модуль способен кастомизировать строку состояния, изменять набор и расположение тайлов в шторке, позволяет изменять поведение кнопок навигации или вообще их отключить, расширяет меню перезагрузки (на манер кастомных прошивок), включает в себя реализацию PIE из Paranoid Android (аналог LMT Launcher), позволяет применить экранные фильтры, изменить поведение хардварных кнопок, поведение светодиода уведомлений и зарядки и многое-многое другое.
Фактически GravityBox — это сборник лучших функций из сторонних прошивок, с помощью которых можно изменить Android. Все функции поддаются тонкой настройке, однако в отличие от кастомных прошивок настройка производится с помощью специального и не слишком удобного меню, доступного через иконку GravityBox в меню приложений. Кроме GravityBox, в репозитории
можно найти и другие «модули-комбайны», такие, например, как Wanam и Xblast Tools, но по функционалу они уступают.
App Settings
Еще один очень популярный и полезный модуль. Предназначен для изменения внешнего вида
и поведения отдельно взятых приложений. Включает в себя такие функции, как возможность изменения значения DPI (позволяет увеличивать или уменьшать размеры элементов управления
приложения), изменение размера шрифта, языка приложения. Позволяет принудительно включить полноэкранный режим для любого приложения или заблокировать гашение экрана, принудительно включить альбомную или портретную ориентацию (полезно в случае приложений, которые умеют работать только в одном режиме, например диалер) и многие другие. Одна из интересных функций — возможность показа приложения поверх экрана блокировки.
Кроме того, модуль имеет свой собственный механизм отзыва полномочий у приложений, работающий независимо от системы AppOps, которая появилась в качестве скрытой возможности
в Android 4.3. С ее помощью можно, например, запретить определенному приложению ходить в интернет или отправлять SMS. Очень удобно при борьбе с назойливой рекламой или подозрительным софтом.
XHaloFloatingWindow
Интересный модуль, имитирующий часть функциональности системы уведомлений Halo из прошивки Paranoid Android. Модуль позволяет запускать выбранные приложения в плавающем окне, размер и прозрачность которого можно менять как вздумается. По умолчанию никак себя не проявляет, и, чтобы получить возможность открывать приложение в плавающем окне, придется добавить его в «Белый список» в меню «Свойства» в настройках модуля. После перезапуска приложения оно будет открыто в отдельном окне.
[ad name=»MiBand2″]
Фактическая полезность модуля не так велика, но он хорошо подходит для запуска приложений, выполняющих одну простую функцию, которым весь экран не нужен в принципе (например, Wifi ADB). Также следует иметь в виду, что не все приложения комфортно чувствуют себя в условиях постоянных изменений размера экрана (именно так эмулируется плавающее окно) и могут вести себя неадекватно.
XMultiWindow
Еще одна реализация многооконного режима, на этот раз из прошивки OmniROM. В отличие от модуля, описанного выше, не создает отдельное окно для приложения, а разделяет экран на две части, в которых отображается интерфейс разных приложений. Это очень похоже на встроенную функцию прошивок от Samsung, но действует в отношении любого приложения, а не только ограниченного набора стандартных приложений прошивки.
Работает сразу после установки и перезагрузки; приложение, запущенное с рабочего стола, откроется в полноэкранном режиме, если же в момент запуска экран уже будет занят другим приложением, то он разделится надвое. Имеет те же проблемы совместимости, что и XHaloFloatingWindow, но сам по себе гораздо полезнее. Не поддерживает фирменные самсунговские возможности, такие как drag’n’drop между приложениями. К слову сказать, в настоящий момент многооконный режим из OmniROM выпилен (по причине падений некоторых приложений), поэтому можно использовать данный модуль для замены.
BootManager
Данный модуль выполняет одну простую функцию: запрещает отдельно взятым приложениям автоматически запускаться на этапе загрузки ОС. Дело в том, что по умолчанию Android не позволяет регулировать автозапуск приложений, как это можно сделать в любой настольной ОС. Приложение, имеющее полномочие android.permission.RECEIVE_BOOT_COMPLETED, будет автоматически запущено системой при загрузке, и сделать с этим ничего не получится.
Если тебе это не кажется проблемой, то рекомендую запустить любой менеджер процессом (как вариант таск-киллер) в только что загруженной системе. Там ты увидишь и телефон, и приложение для обмена и SMS, и еще кучу сторонних приложений. BootManager позволяет решить эту проблему, выбрав только тот софт, который действительно нужен сразу после загрузки смартфона.
Да, я знаю, что в маркете уже есть приложения для решения этой задачи, но BootManager выгодно отличается от них тем, что работает на самом низком системном уровне и делает блокировку загрузки приложений правильно и быстро.
StatusbarVolume
Один из моих любимых модулей. Заменяет плашку со слайдером регулировки громкости, кото-
рая появляется при нажатии кнопок управления громкостью и закрывает информацию на экране, на тонкий ползунок, который появляется поверх строки состояния и быстро исчезает. Кроме того, включает в себя набор опций для изменения поведения модуля, среди которых можно найти две архиважных: отключение автоматической регулировки громкости уведомлений вместе с изменением громкости звонка и отключение раздражающего звука «бип» при нажатии кнопок громкости.
Минус модуля — он платный. По умолчанию устанавливается триальная двухнедельная версия, а для покупки полной придется заплатить один доллар. Кстати, чтобы получить доступ к другим ползункам громкости (громкость мультимедиа и будильника), необходимо потянуть вниз чуть ниже статусбара, пока на последнем отображается основной ползунок.
Burnt Toast, Jelly Toast, EnhancedToast
Три модуля для изменения поведения и внешнего вида сообщений, появляющихся на экране при определенных событиях (toast message).
Burnt Toast добавляет к сообщению иконку приложения, его вызвавшего (с возможностью кастомизации). Jelly Toast заменяет ущербный стиль оформления сообщений в KitKat (со скругленными углами и широкой рамкой) на простой и лаконичный из Jelly Bean.
EnhancedToast объединяет в себе функции двух предыдущих модулей и позволяет блокировать сообщения от выбранных приложений (большинство из них действительно бесполезны), в том числе с возможностью фильтрации по regexp (будут показаны только те сообщения, что попадают под шаблон). Как дополнительный бонус предоставляется поддержка Tasker, с помощью которого можно настроить автоматическое управление функциями модуля.
[ad name=»Umi 600×217″]
CrappaLinks
Второй в моем личном списке наиболее полезных модуль (после StatusbarVolume). Делает одну простую вещь — автоматически разворачивает сокращенные ссылки перед их открытием в приложении. Зачем это нужно, когда любой браузер развернет их самостоятельно? Затем, что ссылка, ведущая, например на youtube.com, play.google.com или facebook.com, в стандартной ситуации открывается не в браузере, а в соответствующем приложении, что правильно и очень удобно.
Однако, если ссылка будет сокращена, система не сможет понять, кому ее отдать, и отправит дефолтовому браузеру, который появится на экране, развернет ссылку и лишь затем отдаст ее клиенту (и это в лучшем случае, в худшем — откроет внутри себя).
CrappaLinks решает эту проблему, перехватывая интенты, содержащие ссылку на HTTP-ресурс, и автоматически разворачивает ее в случае необходимости. Платить за это приходится некоторым замедлением при открытии ссылок, но это все равно быстрее, чем запуск браузера. В целом musthave-модуль для всех, кто часто сидит в твиттере или других соцсетях.
Xposed Call Blocker
Достаточно стандартный блокиратор звонков, отличие которого от других реализаций заключается в том, что он работает на самом низком уровне ОС, там, где происходит передача информации от демона rild к звонилке. В итоге встроенная звонилка даже не узнает о произошедшем звонке. Другие подобные приложения действуют на пользовательском уровне и, по сути, просто кладут трубку сразу после звонка, предварительно отключив звук; из-за этого можно словить множество глюков вроде кратковременного включения экрана, кратковременного звука звонка и проскакивающих иконок пропущенного звонка. Часть функционала доступна только после покупки ключа: блокировка исходящих звонков, блокировка звонков с приватных и скрытых номеров.
LightningWall
Простой брандмауэр, позволяющий отключать передачу данных для отдельно взятых приложений в зависимости от типа сети. По сути, представляет собой аналог DroidWall с более правильной реализацией: не зависит от iptables, которого нет во многих стоковых прошивках, активируется еще до начала загрузки основных компонентов ОС, благодаря чему утечки исключаются (DroidWall запускается уже после полной загрузки ОС), правила активны всегда, а не назначаются заново при изменении сетевого подключения.
[ad name=»Responbl»]
Другие модули
К сожалению, рассказать подробно обо всех интересных модулях в рамках одной статьи не представляется возможным, поэтому остальные интересности я приведу списком с кратким описанием каждого модуля.
Sense 5/6 Toolbox — набор твиков и хаков для стоковых прошивок от HTC.
HTC One Tweaker — твики и хаки для HTC One.
MotoGuide — сборник твиков и хаков для Moto X.
Chrome New Tab — заставляет Chrome всегда открывать новые ссылки в новой вкладке.
Phab7 — позволяет переключаться между телефонным и планшетным режимами.
Ok Google for 3rd party launchers — добавляет автоматическое распознавание голоса в сторонние лаунчеры.
Master Key multi-fix — закрывает знаменитый баг Master Key.
NetworkSpeedIndicator — добавляет в строку состояния индикатор скорости передачи данных.
CpuTemp in Statusbar — показывает темпера туру процессора в строке состояния.
Holo Themer — позволяет на лету переключаться между светлой и темной темой оформления приложений.
YouTube AdAway — блокирует рекламу в приложении YouTube.
Allow Fullscreen Youtube with HDMI — активирует по-настоящему полноэкранный режим при выводе картинки из плеера YoutTube по HDMI.
AppOpsXposed — открывает доступ к функции AppOps (см. выше).
Complete Action Plus — позволяет кастомизировать диалоги выбора файлов и приложений.
DitheredHoloBackground — делает задний фон приложений истинно черным, без градиента (полезно для AMOLED-дисплеев).
DoubleTapToSleep — отправляет смартфон в сон после двойного тапа по строке состояния.
Extended Xposed Translation Component — автоматически переводит на русский прошивку MIUI.
Hide Apps Xposed — позволяет скрыть приложения в меню стандартного лаунчера.
Instagram Downloader — позволяет скачивать фото из Instagram.
Vine Downloader — позволяет скачивать видео из Vine.
LG PIE Support — поддержка функции PIE для прошивок от LG.
Multiple Users for phone — активирует много пользовательский режим на смартфоне.
neXus navbarz — позволяет изменять внешний вид и поведение софтверных кнопок навигации.
ScreenOffAnimation — набор анимаций выключения экрана.
UnbelovedHosts — позволяет применять свои собственные версии файла /etc/hosts без изменения основного (для блокировки рекламы).
Xposed Full Screen Call Picture — выводит фото звонящего абонента на полный экран (без обрезания снизу).
Xposed GEL Settings — кастомизатор для Google Now Launcher.
ВЫВОДЫ
Xposed — прекрасный инструмент для того чтобы изменить андроид, аналогов которому практически нет (Cydia Substrate для Android я не рассматриваю). С помощью его модулей можно получить почти любую функциональность сторонних прошивок без необходимости прошивать смартфон. Даже если сам Xposed или один из его модулей по какимто причинам превратит смартфон в кирпич, его всегда можно вернуть к жизни, отключив Xposed с помощью прошивки специального ZIP-файла (на странице XDA, в конце) через консоль восстановления.
3 comments On Изменяем андроид без перепрошивки. 10 лучших твиков.
Pingback: Что такое CYANOGENMOD? - Cryptoworld ()
Ищу модуль позволяющий отключить меню приложений, как на айфоне. Есть ли такой в exposed?
Pingback: 15 хитростей в настройке андроид, что пригодятся всем. - Cryptoworld ()