Официальная платформа Xposed Framework для Android Nougat уже здесь

После долгого ожидания разработчик Xposed Framework официально заявил, что проект теперь поддерживает Android Nougat. Установите модули Xposed прямо сейчас!

По мере того, как экосистема Android с годами развивалась, все меньше и меньше пользователей находят причины, по которым им следует рутировать свое устройство. Растет тенденция, когда пользователи предпочитают оставаться на стандартной прошивке либо потому, что они находят ее удовлетворительной, либо потому, что не хотят играть в игра в кошки-мышки с Google SafetyNet API. Но если бы вы спросили пользователя еще в начале 2016 года, почему он рутировал свои телефоны, возможно, причина номер один была бы в том, чтобы они могли установить Экспоузд Фреймворк. Это было прошло больше года с момента выхода Android 7.0 Nougat был впервые выпущен, но долгое ожидание наконец закончилось: наконец-то доступен официальный Xposed Framework для Android Nougat.

В течение прошлого года старший признанный разработчик XDA rovo89, ведущий разработчик Xposed Framework, предоставил

несколькообновления о ходе разработки Xposed Framework для Android Nougat. Для некоторых ожидание было терпимым в основном из-за огромного количества дополнительных функций, которые Xposed Framework предлагает в Андроид Зефир. Но многие другие перешли к жизни без Xpose на своих устройствах.

Мы увидели проблеск нового интереса к проекту, когда разработчик abforce выпустил Субмодуль ART для AOSP 7.1.2, но, как отмечает наш собственный GermainZ вам лучше дождаться официального Xposed Framework релиз, поскольку реализация abforce требовала интеграции платформы в пользовательские ПЗУ. Более того, эта неофициальная реализация была неполной, что приводило к нестабильному или ошибочному поведению некоторых Xposed. Модули.

Хотя abforce проделал огромную работу по обеспечению работы своего неофициального Xposed на Android 7.1 Nougat, его реализация пошла вразрез с видение rovo89 для Xped — это должно быть стабильное решение, обеспечивающее надежный и простой в использовании контракт для пользователей и разработчиков. одинаково. Под этим мы подразумеваем, что не только модули должны работать без проблем для пользователей, но и то, как модули устанавливаются. up должен быть единообразным среди пользователей, чтобы разработчики знали, виноват ли в приложении модуль Xposed. крушение.

Нам больше не нужно беспокоиться о таких проблемах, как rovo89 (после некоторой помощи признанного разработчика XDA). Ванам) теперь готова выпустить официальное обновление Xposed Framework и установщика, в результате чего совместимость с Android 7.0/7.1 Нуга. Это означает, что вам не придется устанавливать собственное ПЗУ или возиться с прошивкой нестабильных версий для наслаждайтесь Xposed — просто рутируйте свой телефон и установите последнюю версию приложения Xposed Installer (ссылка ниже) и тот Xpose Installer выполнит за вас волшебную установку Xposed..

Установщик Xposed, просматривающий репозиторий модулей

Некоторым это может показаться немного запоздалым, особенно с учетом того, что этот выпуск выходит более чем через месяц после выхода Android 8.0 Oreo. Имейте в виду, что очень немногие устройства будут иметь доступ к стабильной версии Android Oreo в течение многих месяцев. Андроид Орео — это только на 0.2% всех устройств Android (по сравнению с ~18% на Nougat) согласно последней статистике Google, но многие из наших пользователей любят устанавливать собственные ПЗУ, чтобы оставаться в курсе последних событий.

Распространение версий Android по состоянию на октябрь 2017 г. Источник: Google

Хотя даже если вы установите неофициальный порт Android 8.0 доступны на множестве устройств на наших форумах, многие из этих портов не являются ежедневным статусом драйвера. Так что, если вы не готовы выложить сотни долларов за совершенно новый Google Пиксель 2/2 XL, Sony Xperia XZ1/XZ1 Компактныйили предстоящее устройство, такое как Хуавей Мате 10, то вы, вероятно, сможете выжать из Xposed Framework несколько месяцев использования на Android Nougat.

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

Скачать Xpose Installer v3.1.2 (Приложение)

Установщик Xposed для Nougat 7.0 (SDK24) Скачать

Установщик Xposed для Nougat 7.1 (SDK25) Скачать

Для многих новых пользователей, которые не совсем знакомы с тем, для чего можно использовать Xposed Framework и как он работает, мы ниже кратко объяснит Xposed Framework, почему вы должны быть в восторге и почему разработка этого проекта заняла столько времени делал.


Зачем устанавливать Xposed Framework?

Хотите получить пользовательские функции ПЗУ без установки специального ПЗУ? Мать всех модулей Xposed для настройки вашего ПЗУ, известная как Гравитибокс, ты прикрылся. Хотите настроить параметры отображения для каждого приложения отдельно? Пытаться Настройки приложения. Как насчет настройки определенных приложений, таких как Hangouts? Или модифицируйте Instagram, чтобы вы могли скачивайте любые посты, которые вам нравятся?

Xposed дает разработчикам возможность изменить практически все, что они хотят— в основном нацелены на отдельные приложения, но могут быть изменены даже общесистемные функции. Перечисленные нами примеры — это лишь верхушка айсберга. Количество дополнительных функций, которые вы можете добавить, или приложений, которые вы можете изменить, невероятно — просто выполните поиск по официальный репозиторий модулей Xposed чтобы убедиться в этом сами. Имейте в виду, что некоторые модули, возможно, потребуется обновить для этой новой версии и для поддержки Nougat, поэтому обязательно проверьте их перед установкой на свой Nougat ROM!

Как работают модули Xposed?

Суть в том, что Xposed Framework позволяет модулям «подцепиться» к методам Java любого приложения— будь то установленное пользователем или системное приложение. Xposed позволяет модулям выполнять свои собственные методы до, во время или вместо оригинальные методы целевого приложения.

Например, представьте себе метод, используемый в приложении Gmail, который отправляет уведомления о новых электронных письмах. По умолчанию метод создает новое уведомление с кнопками для архивации/удаления или ответа на электронное письмо. Модуль Xposed можно подключить к этому методу и добавить новую кнопку, например «Отметить как прочитанную». (Да, есть уже есть модуль именно для этого.)

Вышеупомянутое является чрезмерным упрощением конечного результата того, что Xpose Framework позволяет делать своим модулям. Сама платформа невероятно сложна, и ее практически универсальная работа на устройствах с root-правами без необходимости использования специального ПЗУ — вот почему создание Xpose for Android Nougat заняло так много времени.

Почему разработка Xposed занимает так много времени?

Магия Xposed, позволяющая модулям подключаться к методам других приложений, требует глубоких знаний о том, как Zygote и Android-среда выполнения (АРТ) работает. Эти требования уже не позволяют большому количеству людей участвовать в проекте, но проблема усугубляется тем фактом, что rovo89 был основным автором Xposed в течение последних 5 лет..

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

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

Таким образом, лучшее, что мы могли сделать, — это дать rovo89 время поработать над его любимым проектом. Экспоузд — это не его полная и даже неполная работа. Это просто хобби, которым он занимается на благо общества уже 5 лет. Такой сложный проект, как Xposed, требует времени для работы и последующего тестирования — времени, которого у него часто не было из-за других обязанностей. Прогресс был создавался в течение прошлого года, как это документировал rovo89 в нескольких своих публичных обновлениях по этой проблеме, пока, наконец, и сама Xposed Framework, и Xposed Installer не были готовы к выпуску.

Что сделал rovo89, чтобы Xpose работал в Nougat?

Новые выпуски Android иногда вносят изменения в работу ART, что может потребовать переделки некоторых частей Xpose. В Android 7.0 Nougat появился JIT-компилятор для ART, который, например, помогает повысить производительность приложений во время выполнения. Но неофициальный Xposed Framework от abforce просто отключает многие оптимизации ART, чтобы перехват методов мог работать правильно.

ART-оптимизации в Android Nougat. Источник: Google

Напротив, реализация rovo89 сохраняет все оптимизации ART в Android Nougat путем перекомпиляции вызывающего метода с использованием JIT и сохранения перехватчиков метода. Это означает, что вы можете пользоваться преимуществами модуля Xposed, не жертвуя при этом производительностью, принудительно отключив оптимизацию ART.

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

Полное заявление от rovo89

Ядром Xposed, очевидно, является его способность перехватывать методы Java, т. е. позволять модулям выполнять код до, после или вместо этих методов. На этом основаны практически все остальные функции, поэтому очень важно, чтобы они всегда работали должным образом. Общая концепция осталась той же, что и с тех пор, как я придумал Xpose пять лет назад, она требует изменения точки входа метода. Это начинает давать сбой, когда точка входа не проверяется во время выполнения - что на самом деле имеет место с некоторыми оптимизациями в ART.

Одним из примеров является то, что точка входа уже известна во время компиляции, тогда вызывающие программы могут напрямую перейти к этому адресу, не ища его. Другой пример — встраивание. Рассмотрим этот пример:

ART достаточно умен, чтобы заметить, что метод дважды() очень прост и поэтому встраивает логику прямо в метод doSomething(), вот так:

Вы по-прежнему можете подключить метод дважды(), но он больше не будет вызываться из doSomething() во время выполнения, как и ваш обратный вызов. ART еще умнее: он понимает, что магии всегда 42, и поэтому условие никогда не может быть выполнено. Таким образом, весь метод doSomething() на самом деле является пустым:

В предыдущих версиях Xposed полностью отключал эти оптимизации и принудительно перекомпилировал все. Это имело несколько недостатков. Прежде всего, разработчики ART проделывают фантастическую работу по максимизации производительности с помощью своих оптимизации, и их отключение частично обязательно приводит к снижению производительности (я никогда не измерял, насколько хотя). Кроме того, сама перекомпиляция не всегда проста и вызывает у меня много головной боли, особенно поначалу. Наконец, перекомпилированные файлы занимают место в дополнение к предварительно скомпилированным файлам в /system.

Неофициальные версии Nougat также отключают эти оптимизации, но не требуют принудительной перекомпиляции (поскольку порт изначально был создан для интеграции в ПЗУ). Поэтому иногда перехватчики могут не выполняться.

В официальной версии вы сможете сохранить оптимизированный код и иметь надежные перехватчики. Как это работает? Ну, Xpose записывает все сделанные звонки. Это происходит во время компиляции APK или на отдельном этапе для предварительно оптимизированного кода. Эти дополнительные данные не занимают много места, но позволяют Xpose узнать, где мог быть встроен определенный метод. Таким образом, когда метод перехватывается, все его вызывающие программы будут деоптимизированы, т. е. их код больше не будет использоваться. Это гарантирует, что обратный вызов перехватчика обязательно будет вызван. А если вызывающий объект интенсивно используется, он будет просто перекомпилирован с помощью JIT, на этот раз с учетом того, что метод перехвачен и, следовательно, некоторые оптимизации не применяются. Это означает, что эффекты методов перехвата сведены к минимуму. Ура!

Теперь идите и попробуйте. Обязательно используйте Xpose Installer 3.1.2, так как путь конфигурации пришлось изменить для поддержки шифрования на основе файлов.

читать далее

Заключение

Мы надеемся, что вы так же, как и мы, воодушевлены выпуском Xposed для Android 7.X Nougat. Ожидание было долгим, но неизбежным, учитывая явную сложность Xposed. Если вы все еще не понимаете, что такое Xposed и как он работает, не волнуйтесь. Очень немногие люди (включая нас) действительно понимают, как это работает. Такие разработчики, как rovo89, делают все возможное, чтобы упаковать свою работу, поэтому вам не нужно понимать, что происходит под капотом.

Вам нравится Xposed Framework? Рассмотрите возможность пожертвования rovo89 за потрясающую работу, которую он делает. Если вы считаете, что у вас есть все необходимое, чтобы внести свой вклад в проект, посетите страницу rovo89 на GitHub ниже.

Пожертвовать на rovo89

Внесите свой вклад в Xposed

Ищете модули Xposed? Посетите наш подфорум модулей Xposed Framework или загрузите приложение XDA Labs и просмотрите нашу коллекцию модулей Xposed.

Форум модулей Xposed

Скачать лабораторию XDA

Android Oreo Прогресс

Если вам интересно, вот как обстоят дела с получением Xposed для Android Oreo:

Я уже начал работу над Android 8.0. Есть несколько новые возможности языка на это мне придется посмотреть, но общая концепция все равно должна работать. Сюда входит вся работа по аннулированию скомпилированного кода всех вызывающих программ при перехвате метода, что занимало больше всего времени, когда я работал над Nougat. Так что я действительно уверен, что на этот раз буду намного быстрее. Андроид 8.1не должно сильно отличаться, поэтому я не ожидаю много дополнительной работы над этим.