Объяснение подмодуля Xposed Framework для Nougat и abforce

В этой статье мы исследуем различия между предстоящим выпуском Xposed для Nougat от rovo89 и текущей реализацией, доступной для Nougat.

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

Хотите получить все функции, предлагаемые пользовательским ПЗУ, без необходимости его перепрошивки?Гравитибокс илиXTouchwiz сделаю это. Хотите настроить определенные параметры для каждого приложения, например изменить DPI конкретного приложения?Настройки приложения тебя прикрыли. Хотелось бы, чтобы разработчики приложения подумали о добавлении определенной функции, например, Google позволяет вамперсонализировать Hangouts или Facebook, позволяющий вамскачать посты из Instagram, которые вам нравятся? Ну, вам это не нужно, потому что Xpose дает разработчикам возможность изменять практически все, что они хотят. хотите, будь то общесистемная функция, требующая специального ПЗУ, или настройка для конкретного приложение.

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

Единственная проблема? Из-за своего характера и количества свободного времени разработчик Xposed (наш собственный старший признанный разработчик,rovo89) есть, он часто отстает от версий Android.Обновление для поддержки Lollipop заняло около четырех месяцев., а чтобы прийти к Нуге, понадобится около года. Это не так плохо, как может показаться, если задуматься сколько пользователей Android на самом деле используют Nougat (около 13,5%, хотя имейте в виду, что энтузиасты Android, целевая аудитория Xposed, также с большей вероятностью будут использовать Nougat). Тем не менее, все равно может быть весьма неприятно отсутствие возможности использовать ваши любимые модули Xposed и в то же время иметь новейшую и лучшую версию Android.

При наличии исходного кода платформы Xposed (по крайней мере, для стабильных выпущенных версий) разработчикпохищать решил запачкать руки и посмотреть, сможет ли он портировать некоторые модификации rovo89 на Nougat. Выбрав другой, более простой подход, abforce по существу адаптировали ту часть Xpose, которая на самом деле творит чудеса после установки и позволяет включать их при компиляции собственного ПЗУ (после этого появились другие обходные пути). Этот подход, возможно, сильно отличается поскольку он игнорирует одно из основных преимуществ Xposed, которое легко доступно каждому. Тем не менее, любой прогресс приветствуется, и несколько руководителей, решающих задачу, могут быть полезными и предложить новое понимание. Основная проблема, на наш взгляд, заключается в дезинформации вокруг этой разработки (распространяемой некоторыми другими «разработчиками» и некоторыми блогами), а также в некоторой реакции сообщества. Надеюсь, эта статья прояснит всю картину.


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

Сила Xposed проистекает из простой концепции: любой метод можно «подцепить» (методы — это небольшие части, составляющие любую программу), чтобы код модуля Xposed выполнялся до, после или вместо это. Давайте возьмем простой пример: предположим, что Instagram использует метод под названием «showMenuOptions», когда вы нажимаете кнопку меню, и этот метод обрабатывает показ кнопок «Пожаловаться» и «Поделиться». Создав модуль Xposed, вы можете изменить этот метод, добавив, например, дополнительную кнопку для загрузки изображения вместо того, чтобы делиться им. Модификации могут варьироваться от простых настроек (например, Журнал изменений в Play Маркете) до капитального ремонта (например, Гравитибокс, целью которого является предоставление всех функций пользовательского ПЗУ)!

Это делает Xposed мощным, но это только часть уравнения. Другие части — это универсальность, то есть возможность использовать Xpose практически на любом устройстве (с поддерживаемой версией Android), а также простота использования. Все, что нужно сделать пользователям, — это загрузить установщик, который творит чудеса и динамически исправляет свою систему для интеграции Xpose. Чтобы применить модуль, вам достаточно его установить, включить и перезагрузиться. Никакой суеты не требуется, не нужно прошивать собственное ПЗУ (особенно, когда пользовательское ПЗУ не всегда является целесообразным выбором), не нужно удалять APK, чтобы установить другой, подписанный с другой подписью. Все, что вам нужно, это root (вы абсолютно можете иметь собственное ПЗУ, и в большинстве случаев это имеет смысл; но хотя Xpose может предоставить большую часть функций, которые может обеспечить пользовательское ПЗУ, он также выходит за рамки этого).

Однако за этой простотой стоит много работы:

  1. Для разработчиков модулей предоставляемый API должен быть стабильным и гарантированно работать. Платформа Xposed не может случайно дать сбой при использовании определенных комбинаций ПЗУ и/или перехватчиков (за исключением исключительных случаев). Другими словами, если у пользователя возникла проблема, эта проблема должна быть либо ошибкой пользователя (не что-то правильно установил/включил) или вина разработчика модуля (за наличие ошибок в модуль). Но нужно быть почти уверенным, что сама платформа работает так, как задумано, и не является источником ошибок, которые могут разочаровать пользователей и сбить с толку разработчиков.
  2. Для пользователей фреймворк должен легко устанавливаться на их устройство и ПЗУ., независимо от того, есть ли у них Samsung с последней версией TouchWiz или Nexus с установленной LineageOS. Установщик Xposed выполняет все это незаметно. Для этого необходимо проделать большую работу по тестированию установщика и платформы на различных устройствах и комбинациях ПЗУ. Обнаруживаются ошибки, часто из-за различных реализаций OEM-производителей, и их необходимо исправлять, чтобы обеспечить надежность для всех пользователей.
  3. Крупные версии Android иногда могут приносить серьезные изменения, что требует переосмысления частей архитектуры платформы для адаптации к этим изменениям. Иногда в новых версиях появляются дополнительные возможности, требующие дополнительного времени для создания лучшего продукта. Например, когда ART был впервые представлен, Xpose отключил определенные оптимизации, чтобы перехват мог работать правильно. В случае с НугойJIT-компилятор дает возможностьсохраняйте эти оптимизации.

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

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


Субмодуль Xpose ART от Abforce для Nougat

Мы не хотим называть работу abforce «портом» или «неофициальным Xposed», поскольку это неточно и вводит в заблуждение. Как мы видели, Xposed состоит из двух основных компонентов:

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

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

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

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


Давайте отбросим эту погоню и перейдем сразу к делу: в любом сообществе есть плохие элементы и аспекты. В таком большом сообществе, как энтузиасты Android, плохие элементы могут показаться огромной частью, хотя они всего лишь малая часть (значительная, но все же незначительная в относительном выражении). Однако если не приукрашивать ситуацию, то большая часть реакции сообщества на разработку Xposed для Nougat была крайне детской, невнимательной или безответственной.

Первой серьезной проблемой было снисходительное отношение многих к «смерти Xposed», поскольку его выпуск для Nougat занимает слишком много времени. И это несмотря на rovo89 обновленияигарантии, и несмотря на то, что практически тот же сценарий произошел с Lollipop, когда была представлена ​​первоначальная версия ART. Прекратить использование Xpose — это нормально, но это не должно оскорблять чьи-либо возможности или нападать на других за то, что они придерживаются другой философии или не обеспечивают немедленного удовлетворения ваших потребностей в перепрошивке. Это тем более справедливо для полностью бесплатного проекта, где разработчик изложил свою методологию разработки и ее причины.

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

И наконец, мы считаем, что нам следует еще раз вспомнить философию разработки rovo89. Многие активные пользователи утверждают, что наличие последних изменений в открытом исходном коде было бы полезно. Хотя это звучит хорошо в теории, этона практике не так просто особенно если принять во внимание объяснение rovo89:

[...] Я считаю, что простое исключение текущего состояния не поможет проекту. Возможно, мы увидим «какой-нибудь» релиз очень быстро от людей, которые компилируют код, и увидим, что он выглядит работает нормально и публикует его как «свой порт», несмотря на проблемы и действия, о которых они не знают из. Так что назовите меня эгоистом, но я бы не хотел увидеть такой недоделанный релиз.[Источник]

Что на самом деле оказалось довольно хорошим прогнозом текущей ситуации, и несколько «разработчиков» применили изменения abforce и предложение флэш-ZIP-файла с минимальными предупреждениями или без них, неполными кредитами, и все это с запросом пожертвования.


Мы надеемся, что эти объяснения прояснили некоторые ваши сомнения и развеяли возможные заблуждения, которые у вас могли возникнуть. Xposed стал потрясающим проектом, который затронул огромную часть нашего сообщества энтузиастов и любителей флешмоба, и Xpose for Nougat должен стать еще одной гигантской вехой, полной возможностей. С такими модулями, как GravityBox Готовый проект rovo89, уже предлагающий поддержку Nougat, вернется к множеству опций.


Вы с нетерпением ждете появления Xposed на вашем Nougat ROM? Дайте нам знать об этом в комментариях!