Xposed framework что это

Обновлено: 06.07.2024

Если Вы находитесь на этой странице, то, вероятно, задаетесь вопросом: Xposed Framework что это за программа? Xposed Framework это способ изменить операционную систему Android на уровне системы, в котором не требуется установка кастомной прошивки android . Все что вам нужно это root-доступ . Предлагаем Вам подборку того, что можно сделать, используя Xposed Framework.

Все указанные модули Вы найдете в самом Xposed Framework. Установите Xposed Framework, запустите и, используя поиск по модулям, найдите модуль, который требуется и установите его.

Переназначение аппаратных кнопок

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

Управление разрешениями приложений

С помощью модуля App Ops в настройках Android появляется опция «Операции в приложениях». Этот интерфейс позволяет управлять разрешениями приложений, как на iOS от Apple.

Включение многозадачности

Старые версии Android не имеют возможность запустить два приложения на одном экране, но некоторые сторонние пользовательские прошивки могут это сделать. Чтобы не устанавливать новую прошивку Вы можете использовать модуль xMultiWindow для включения многозадачности на любом устройстве. Она, конечно, не идеальна, но можно ей воспользоваться. Можете смотреть видео на YouTube и одновременно заниматься веб серфингом.

Добавление опций в меню выключения

Пользовательские прошивки добавляют некоторые опции в меню выключение, которое появляется при долгом нажатии кнопки питания. Модуль для Xposed framework под названием Advanced Power Menu позволяет добавить некоторые функции в меню выключения, например, скриншот, перезагрузка или фонарик. Вы можете настроить опции, которые будут появляться в этом меню.

Отключение предупреждения о высокой громкости

Android отображает предупреждение «Поднять громкость выше безопасного уровня?» всякий раз, когда Вы увеличиваете громкость выше определенного уровня. Это может помочь некоторым людям, чтобы не повредить слух, но это глупое предупреждение, потому что разные типы наушников требуют различные уровни громкости устройства для вывода той же громкости звука.

Модуль NoSafeVolumeWarning отключает это предупреждение.

Включение «О’кей, Google» для сторонних лаунчеров

Если у Вас установлен Google Now Launcher, то Вы можете сказать «О’кей, Google», чтобы открыть диалог Google Now и использовать голосовые команды. Вы не можете сделать это в сторонних лаунчерах, но модуль «OK Google for 3rd party launchers / apps (4.4+)» позволяет использовать команду «О’кей, Google» в любом лаунчере.

Получение еще большего количества опций

Модули GravityBox и XBlast добавят огромное количество дополнительных опций для Вашего Android устройства. Цель GravityBox — собрать все настройки и опции, которые Вы нашли бы в пользовательских прошивках, в одном месте, позволяя изменить многие параметры без необходимости скачивать отдельные модули и перезагружать устройство.

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

В 2012 году пользователь с ником rovo89 на комьюнити XDA опубликовал исходные коды и готовый к использованию фреймворк, упрощающий кастомизацию прошивок, с подробной инструкцией и примерами, предложив альтернативу традицоинному, на тот момент, способу (деодексирование→ дизассемблирование → декомпиляция → рекомпиляция → тестирование → загрузка патчей в телефон): Часть 1, Часть 2, Часть 3, Часть 4

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

Rovo не забросил свое детище, а продолжил развитие. Когда в 2013-ом году вышла версия KitKat, все то же сообщество именитых девелоперов ответило: "Неа, это слишком опасно… хотя. "

Тем временем Google принял решение выпускать новую версию операционной системы ежегодно. Разумеется, стало накладно кастомизировать прошивки: не успеваешь сделать одну, как появляется новая версия ОС. Так в 2014-ом выходит версия Lollipop и разработчики наконец обращают внимание на фреймфорк с мыслями: "Может все же стоит посмотреть что это такое? Выглядит многообещающим".

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

Сейчас конец февраля 2017-го. Xposed под Nougat все еще не доступен, а толпы страждущих разработчиков и пользователей то и дело открывают темы под тип "Xposed не работает! Он мне нужен! Rovo, пожалуйста!"

Сегодня я расскажу об Xposed Framework.

Отказ от ответственности

Отступление

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

Я прождал около двух лет в надежде, что кто-то все же опишет на Хабре что такое Xposed Framework и как он может упросить процесс кастомизации приложений, но подозреваю, что мало кто знаком с этим чудным творением. Для своих нужд я написал несколько десятков модулей, некоторые даже публиковал в общем репозитарии, который на данный момент содержит более 1000 готовых к эксплуатации разработок. Каждый модуль — это может быть не одна единственная кастомизация, а целый набор функций с интерфейсом настроек или дополнительного функционала. Яркий пример тому GravityBox или Sense ToolBox.

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

Установка

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

Принцип работы «на пальцах»

В системе Android есть процесс под название «Zygote». Это и есть основная исполнительная система. Любой процесс запускается как его копия. Zygote запускается через /init.rc как только загружается основное ядро системы. Запуск приложений осуществляется через скрипт /system/bin/app_process, который подгружает необходимые классы и запускает инициализацию приложения через задекларированные методы.

Именно в этом месте на сцену выходит Xposed. При установке фреймворка модифицированный app_process копируется в /system/bin. Суть модификации в том, что в переменную среду добавляется дополнительная jar библиотека, которая может исполнять специальные методы при определенных условиях и случаях. Например, мы можем вмешаться сразу, как только создается виртуальная машина Dalvik или даже перед тем как будет вызван основной метод Zygote. Являясь частью процесса Zygote, мы можем вмешиваться в работу любых методов, даже синтетических и производить любые действия в их контексте.

Практическая ценность Xposed

Предположим, необходимо изменить какой-то метод, и, например, вместо булева значения TRUE вернуть FALSE. Вместо трудоемкого и затратного традиционного метода (разбираем-собираем-тестируем приложение) вы можете «перехватить» этот метод класса и «вживить» свой Java код, который произведет необходимую операцию (изменит, в данном примере, значение) и вернет нужный нам результат. При этом, с Xposed можно: модифицировать или просто посмотреть какие данные передаются в метод, либо после исполнения метода узнать результат обработки данных и в зависимости от требований изменить их или воспользоваться ими.

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

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

А теперь главное — зачастую не приходится даже изменять работу модуля (или производить минимальные доработки) с выходом новой версии прошивки/приложения! Это логично, ведь названия методов, классов и переменных, как правило, остаются прежними.

Не правда ли, удобно?

Создание модуля

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

Manifest.xml

При установке любого приложения Xposed проверяет наличие определенных заголовков в Manifest.xml. Если есть три нужные строки, то фреймворк сохраняет информацию о приложении в своих настройках и далее вы можете активировать установленный модуль (здесь и далее будут использоваться примеры кода разных модулей, в том числе и для из известных приложений).


С первой строкой все понятно.

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

Третья строка определяет как будет идентифицироваться ваше приложение в списке доступных или установленных модулей на вашем телефоне.

/assets/xposed_init

В корне вашего приложения необходимо создать папку assets и положить в него файл с названием xposed_init. Внутри этого файла вы просто пишите в каком Java классе описана работа вашего модуля. Я привык называть класс как XMain. В моем случае в файле присутствует строка

Java class

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

Метод initZygote исполняется тогда, когда ваш модуль загружается в память.
Весьма удобен, если в вашем приложении имеется Activity с настройками вашего модуля. Как правило, данные вашего приложения сохраняются в файл
/data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PACKAGE_NAME_preferences.xml . Во время загрузки вы можете единожды получить дескриптор и во время работы просто считывать с него ваши настройки. Также можно предопределить любые переменные, сделать проверки. По сути это аналог метода-конструктора.

Метод handleLoadPackage исполняется в тот момент, когда Dalvik загружает исходный код любого! приложения при запуске. Это очень важный момент. Если у вас в телефоне 10 различных модулей, то через этот метод исходники запускаемого приложения «прогонятся» во всех 10-ти случаях. Для фильтрации используется обычная проверка по названию пакета. Разумеется, если вы хотите изменить работу нескольких приложений, то ставите столько проверок сколько вам нужно.


Метод handleInitPackageResources нужен вам тогда, когда вы хотите подменить ресурсы приложения во время их загрузки в память. Здесь тоже самое как и с handleLoadPackage — вы фильтруете по названию приложения.


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

Примеры кода

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

Выглядит это примерно так:


В первую очередь нам надо обернуть наши «хуки» в try/catch, так как если в вашем коде будет ошибка, без обертки основное приложение может завершить работу c ошибкой, а полный трейс может попасть разработчику, который станет в курсе, что на его приложение наложили модуль. При обертке весь трейс можно вывести в лог Xposed и понять где у нас произошла ошибка и почему.

В findAndHookMethod первый параметр — это название класса, вторая — ссылка на загрузчик класса, третья — название нужного нам метода, далее идет перечисление в виде строк какие переменные передаются в метод и в конце наш callback метод.

Вот пример как можно заполучить контекст класса и воспользоваться им


или если необходимо изменить передаваемые переменные в метод, то сделать это можно через

Помимо XC_MethodHook можно использовать XC_MethodReplacement. Название говорит само за себя. Мы полностью заменяем какой-то метод нашим собственным. Вот типичный пример когда мне захотелось избавиться от всплывающего уведомления, когда я подключаю телефон по USB к ноутбуку

В данном void методе вызывалось уведомление. Я его просто заменил и забыл что мне когда-то это мешало.

Были случаи и посложней. Я своими модулями исправлял ошибки в системных приложениях. Ждать, когда производитель исправит баг в новом ОТА приложении меня не особо прельщало, поэтому я исправлял сам.

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

Доступ к переменным и методам класса осуществляется через класс XposedHelpers. Например:


Если объект является доступным импортируемым классом, то можно полученный объект сразу привести к нужному типу


и облегчить дальнейший код. Если же объект является каким-то типом внутреннего класса, который нам не доступен для импорта, в дальнейшем использование его методов и свойств также доступно через XposedHelpers.

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

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

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

Заключение

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

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

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

Что такое Xposed Framework и зачем нужен

android exposed framework

Xposed Framework представляет собой «каркас» для установки различных модулей — небольших приложений, вносящих существенные изменения в систему. Модуль направлен на конкретный результат и выполняет одно или несколько действий. Например, блокирует рекламу в соцсетях и позволяет скачивать фото с Instagram. Без фреймворка такие приложения не работают, поэтому установка Xposed обязательна.

До недавнего времени Xposed Framework являлся самостоятельной программой, но теперь это модуль для Магиска. Звучит немного запутанно, так что расшифруем подробнее. В первую очередь устанавливается Magisk Manager, потом для него скачивается Xposed, и уже на базе последнего ставятся модули, предназначенные именно для фреймворка. К слову, для Магиска тоже есть множество модулей, но об этом мы говорили в другой статье.

Что нужно для работы Xposed Framework

Итак, сам по себе Xposed бесполезен. Он нужен именно в качестве платформы для установки модулей, которые самостоятельно не функционируют. В свою очередь, для работы Xposed обязателен Magisk. И поверх этого располагается главное требование — наличие root-прав. Без них не будет работать ни фреймворк, ни Магиск.

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

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

Скачивание и установка фреймворка на Xiaomi

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

EdXposed

Если ваш смартфон работает под управлением Android 9 или 10 ( MIUI 11/MIUI 12), нужно установить программу под названием EdXposed . Стандартная утилита Xposed Framework не подходит для вышеуказанных версий программного обеспечения. Также EdXposed должна нормально функционировать на MIUI 12.5 под управлением Android 11, но точно гарантировать работоспособность мы не можем.

Приступаем к операции:

1.Запустите приложение Magisk Manager и зайдите во вкладку «Репозиторий».

2.В поисковую строку вбейте название модуля « Magisk manager for recovery mode ( mm )». Данный патч понадобится, если смартфон перестанет запускаться после установки фреймворка. Кликнете по стрелке возле названия модуля и выберите «Установить». Далее тапните по желтой кнопке для перезагрузки.

3.Таким же образом скачайте и установите модули « Riru — core » и « Riru — EdXposed », которые тоже находятся в репозитории Магиска. Модификацию выбирайте от YAHFA или SandHook , разницы нет. Не нашли патчи в репозитории — тогда самостоятельно скачайте их и установите через кастомное рекавери.

4.Перезагрузите мобильное устройство.

5.Теперь скачайте само приложение EdXposed Manager с форума 4 pda или GitHub . Установите программу из проводника, как обычный apk файл.

6.Опять перезагрузите смартфон.

7.Откройте установленный фреймворк. Если на стартовой странице есть надпись « EdXposed активирован», значит, вы все сделали правильно.

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

Что делать, если фреймворк не устанавливается

Бывает, что программа выдает оповещение « Xposed установлен, но не активирован». Это значит, что на телефоне отсутствует один из двух необходимых патчей: « Riru — core » или « Riru — EdXposed ». Обязательно проверьте наличие этих модулей в Магиске. Если установка через репозиторий оказывается недейственной, воспользуйтесь custom recovery . Еще не забудьте перезагрузить смартфон.

Какие модули выбрать и как установить

Есть три метода установки модулей для EdXposed. Первый вариант самый простой: открываем программу и в строку поиска вводим название нужного патча, или просто просматриваем вкладку «Модули» и загружаем подходящие. Принцип такой же, как в Magisk. После установки перезагружаем девайс.

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

EdXposed Framework

Теперь рассмотрим наиболее популярные патчи, которые можно поставить через EdXposed:

Найти множество полезных модулей можно как на официальном сайте Xposed , так и на XDA - Developers и GitHub .

Полное удаление программы

Первым делом удалите из Магиска патчи «Riru — core» и «Riru — EdXposed». Для этого откройте раздел «Модули» и кликнете по изображению корзины возле модулей. От приложения EdXposed Manager избавьтесь стандартным способом, зажав на несколько секунд ярлык на рабочем столе и кликнув «Удалить».

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

Это надстройка над Android, которая предоставляет широкие возможности для кастомизации установленных приложений и самой ОС.

Ранее для тонкой настройки системы под себя пользователи устанавливали сторонние прошивки, часто уступающие официальным версиям в плане стабильности и безопасности. С помощью Xposed Framework можно существенно менять Android, не перепрошивая аппарат.

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

Как её установить

Xposed Framework можно поставить не на каждый аппарат. Во-первых, на вашем устройстве обязательно должны быть разблокированы права супер-пользователя (Root). Во-вторых, программа лучше всего подходит для гаджетов на чистом Android. На MIUI, TouchWiz и других сильно изменённых версиях этой ОС Xposed Framework может не работать.

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

1. В системных настройках разрешите установку программ из сторонних источников.

2. Скачайте на устройство (не на карту памяти) zip-архив с подходящей версией Xposed Framework (Android 5.0 или Android 5.1). Когда перейдёте по ссылке, увидите разные типы архитектуры: arm (v7), arm64 и x86. Выбирайте тот из них, который соответствует вашему процессору. Тип своего процессора вы можете определить с помощью приложения Hardware Info.

3. Скачайте на аппарат установщик Xposed Installer в виде apk-файла, а также утилиту FlashFire.

4. Полностью зарядите устройство и убедитесь, что оно отключено от компьютера и электросети.

5. Запустите FlashFire. Если появится запрос, предоставьте программе Root-доступ. Затем нажмите на кнопку с плюсом, выберите Flash ZIP or OTA и в открывшемся проводнике укажите архив, скачанный на втором шаге. Оставьте опцию Auto-mount выключенной и нажмите Flash. После этого аппарат может перезагружаться в течение 10-30 минут.

6. Найдите apk-файл Xposed Installer, скачанный на третьем шаге, и нажмите на него. После инсталляции на рабочем столе появится установщик модулей — приложение, через которое вы сможете изменять Android.

Как подключать модули и управлять ими

Модули можно найти через приложение Xposed Installer или на ресурсе Xposed Module Repository, который содержит их описание и ссылки на загрузку через Google Play или сторонние источники. После скачивания все они появляются в Xposed Installer, где вы можете активировать их, настраивать и отключать. После активации каждого модуля необходимо перезагружать устройство.

Как удалить Xposed Framework

Одно из главных преимуществ модификации Android с помощью Xposed Framework заключается в том, что этот процесс обратим. Вы можете удалить фреймворк с устройства, вернув аппарат в начальное состояние. Для этого достаточно скачать zip-архив с деинсталлятором, который соответствует типу вашего процессора (arm (v7), arm64 или x86), и запустить его в утилите FlashFire.

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