Неофициальный Xposed Framework для Android 7.1 Nougat

click fraud protection

Теперь доступен флэш-архив, который переносит Xposed Framework в ПЗУ Android 7.1 Nougat. ZIP работает на OnePlus 3T, а также на многих других телефонах!

После нескольких месяцев ожидания мы наконец-то получили поддержку Xpose Framework для прошивок Nougat (хотя и неофициально). Благодаря талантливым разработчикам на наших форумах XDA, теперь вы можете установить Xposed Framework на Android Nougat ROM с помощью флэш-архива.

До сих пор будущее Xposed на Nougat выглядело немного шатким. Rovo89 — разработчик Xposed Framework — предоставил обновленную информацию о поддержке Android Nougat чуть больше недели назад. По сути, Rovo89 заявил, что предстоит проделать еще много работы, чтобы Xposed правильно работал на Nougat, и что нам просто нужно набраться терпения.

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

На данный момент доступны три версии для разных платформ, включая Xposed SDK25. ARM64, Экспоузд SDK25 РУКАи Xposed SDK25 Икс86. Команда PurifyOS протестировала эту новую версию Xposed на OnePlus 3T под управлением OxygenOS на базе Android 7.1, но она должна работать и на другие телефоны под управлением Android Nougat, и пользователи уже сообщают, что им удалось успешно установить его на разные ПЗУ и устройства. Например, несколько пользователей OnePlus 5 сообщили, что он работает (неудивительно, учитывая, что он работает на OnePlus 5). 3T просто отлично), но пользователь, использующий ПЗУ на основе AOSP для Samsung Galaxy S6, также сообщил, что у него это работает.

Придется разобраться со своими особенностями, и не всем пока удалось заставить его работать, а некоторые пользователи сталкивались с принудительным закрытием и другими странностями. Однако даже в этом случае вы все равно можете попробовать, если ждали появления Xpose на Nougat с момента выпуска предыдущей версии ОС Android. Не все существующие модули Xposed Framework будут работать сразу, но, как сообщается, некоторые действительно популярные модули, такие как Amplify, работают.

Обязательно делайте регулярные резервные копии и внимательно читайте ветку, прежде чем рискнуть, если вы не уверены, поддерживается ли ваше устройство или ПЗУ. Наконец, обязательно используйте функцию «поиск», прежде чем оставлять повторяющийся вопрос. Возможно, Android O уже не за горами, но, как говорится, "лучше поздно, чем никогда." Кроме того, многие пользователи не собираются видеть Android O на своих устройствах в течение некоторого времени, поэтому Xpose должен стать приятным развлечением, чтобы вы не чувствовали себя обделенными.


Обновление: ответ Rovo89

Оригинал, разработанный на основе Xposed Framework, старший признанный разработчик XDA. rovo89, ответил на Github, поделившись своими мыслями об этих недавних событиях.

По своему опыту могу сказать вам, что сделать основы действительно не так уж и сложно, но на детали уходит чертовски много времени. Это похоже на правило 80-20, за исключением того, что оно больше похоже на 95-5 или около того.

Подход перехвата, который я разработал для предыдущих выпусков, довольно стабилен и может применяться и для новых выпусков. Полагаю, вам потребовалась большая часть времени, чтобы проверить все места, где IsProxyMethod() и IsDirect() вызывается и решает, следует ли им учитывать новый модификатор метода или нет (т.е. использовать параметр true или нет). Если бы вы этого не сделали, возможно, вы пропустили бы некоторые места, где недавно ввели такие вызовы. То же самое для таких методов, как InstallStubsForMethod(), которые должны работать с исходным исходным методом, даже если они вызываются для подключённого метода. Вам нужно будет проверить больше мест, где это может быть актуально. Это все еще в пределах нескольких дней, но если вы пропустите это, вы можете увидеть неясные сбои или неправильное поведение, которые очень сложно отладить.

Кроме того, вы выбрали подход, при котором хуки будут работать правильно только для ПЗУ, полностью скомпилированных с нуля. На стандартных ПЗУ и даже на большинстве пользовательских ПЗУ (которые не включали ваш порт при сборке), а также для любых приложений, которые устройство могло скомпилировать ранее. Таким образом, вам придется начинать все заново с стертого устройства со специальным ПЗУ. Если нет, то оптимизация (например, встраивание) может вообще предотвратить вызов метода, и, следовательно, перехваты не будут работать. Хуже всего то, что точное поведение будет зависеть от ПЗУ или даже от того, как пользователь использует устройство (теперь, когда приложения компилируются на основе профилей). Модули выходили из строя случайным образом, и разработчики модулей задавались вопросом, что они сделали не так (ответ: ничего). Если не все предварительные условия выполнены, это довольно ненадежный API. Представьте, что Google опубликовал обновление, в котором OnClickListener кнопка иногда не вызывалась, если только вы не скомпилировали свой ПЗУ с нуля... Лично для меня это большое ограничение.

Он продолжает:

Публиковать прошиваемые ZIP-файлы с этим вообще не имеет смысла, так как порт предназначен только для перекомпиляции ПЗУ с нуля..

И как я боялся, нет ни одного предупреждения о том, что это неполный порт, который часто не сможет выполнить контракт API. 😠 Это плохо для разработчиков и пользователей, они должны хотя бы знать, что он неполный, чтобы они могли решить, хотят ли они его поддерживать/использовать. Я бы никогда не осмелился сделать что-то подобное без серьезного предупреждения. На самом деле, поскольку я достаточно перфекционист, я бы вообще не стал публиковать неполную версию, для меня очень важна достоверность.

Я только что проверил свой журнал Git, и в октябре у меня были готовы базовые подключения (как в этом порте). С тех пор я работал над устранением ограничений. Чтобы сделать его более надежным на предварительно скомпилированных ПЗУ, я мог бы также портировать часть перекомпиляции, однако это все еще не идеально. Как объяснялось где-то выше, теперь у нас есть JIT, который позволяет нам сохранять все оптимизации, объявляя недействительными (и, возможно, перекомпилируя) только те методы, на которые напрямую влияет перехват. Это довольно сложно, поскольку это больше, чем просто копирование и вставка. И пока этого не будет сделано, я ничего публиковать не буду. Я знаю, что 9 месяцев для этого (до сих пор) - это действительно большой срок, но, эй, это мое свободное время и, например. из-за переезда в новую квартиру, я вообще не мог работать на Xposeed несколько месяцев (!), да и время у меня было очень ограничено.

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


Загрузите неофициальный Xposed Framework для Nougat на форумах XDA.