Xposed для Lollipop теперь официально доступен

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

Если вы еще не знакомы с Xposed, проще говоря, это находка для сообщества моддеров. Xpose не требует перепрошивки каких-либо ПЗУ, но предлагает множество настроек и настроек, которые пользователи могут устанавливать как приложения на устройствах с root-доступом. Он невероятно прост в использовании и имеет ограниченный риск. И теперь все энтузиасты Android на Lollipop могут воспользоваться преимуществами этого фантастического проекта на своих устройствах. Загрузите загрузку и приступайте к моддингу!

rovo89 также любезно предоставил нам вопросы и ответы по последнему проекту. Ответы на все ваши вопросы о проекте вы найдете ниже.

Почему это заняло так много времени? АРТ опубликован больше года назад!

Во-первых, многие люди продолжают обращаться за поддержкой АРТ. Lollipop имеет гораздо больше изменений, таких как еще более строгие политики SELinux, 64-битные ПЗУ и изменения архитектуры, которые можно ожидать от основного выпуска. И, конечно же, сама АРТ постоянно совершенствуется; существуют большие различия между ART для KitKat и ART для Lollipop.

Итак, одна из причин — большая сложность, потребовавшая многих-многих часов работы на исследования, разработки и испытания.

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

Нужно ли переписывать все модули?

Нет, API Xposed практически не изменился. Xpose абстрагирует все детали, поэтому модулям не нужно заботиться о том, работают ли они на Dalvik или ART. Многие модули действительно будут работать без каких-либо изменений, особенно те, которые изменяют поведение пользовательских приложений. Модули, ориентированные на поведение системы, возможно, придется адаптировать к новому коду платформы Android, который вызвано не ART, а просто изменениями архитектуры и кода, которые происходят между любыми двумя Android релизы. Самый существенный из них — код системных сервисов вынесен в отдельный файл. Для большинства затронутых модулей эту проблему можно решить небольшим рефакторингом (переносом кода в другое место).

Это действительно работает?

Да! По крайней мере, у меня он работает нормально на моем повседневном устройстве (Nexus 5 на CM12), а также на моем Nexus 9 (оплачено XDA — спасибо!). Телефон работает стабильно, приложения работают нормально. И очевидно, что модули и их хуки/замены ресурсов тоже работают нормально, иначе не было бы смысла что-то выпускать.

Но тогда почему это альфа-версия?

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

Есть также некоторые крайние случаи, которые еще не были протестированы, например, перехват JNI (родных) методов и методов, которые выполняются во время их перехвата.

Я хочу установить его. Сейчас! Что мне нужно сделать?

Убедитесь, что вы прочитали мои слова выше и знакомы с внутренним устройством своего телефона. Очевидно, вам нужно использовать Lollipop ROM и иметь хорошую резервную копию ваших данных. Пока я буду публиковать только версию ARMv7. 64-битная версия более сложна, поэтому давайте сначала попробуем «простой» вариант.

Пока установку приходится выполнять вручную в кастомном рекавери. При перепрошивке zip-файла будет установлено:

  • app_process32_xposed и несколько символических ссылок
  • libexpose_art.so
  • libart.so и некоторые связанные с ним двоичные файлы + библиотеки (на основе версии 5.0.2, дополненные поддержкой перехвата и т. д.)
  • XposeBridge.jar (теперь хранится в /system/framework)

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

Это не работает/Мне это не нравится! Как я могу удалить его?

Самый простой способ — восстановить резервную копию или прошить системный раздел. ZIP-файл для удаления еще не создан.

Почему вы заменяете файлы ART на моем устройстве? Это более агрессивно, чем в Dalvik, вызовет серьезные проблемы с производительностью и будет работать нестабильно!

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

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

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

Вы наконец опубликуете исходный код?

Конечно, вы найдете его на GitHub вскоре после выхода альфа-версии, пока в отдельной ветке.

Означает ли это, что старая версия Android больше не поддерживается?

Нет! Новый код компилируется на всех версиях Android 4.x, и его необходимо протестировать перед унифицированным выпуском. Но сначала мне нужно убедиться, что Lollipop работает нормально. Возможно, поддержку ART можно было бы перенести в KitKat, но это менее приоритетно.

Как я могу отблагодарить вас за вашу работу?

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

Сколько мне нужно пожертвовать, чтобы вы добавили функцию X или модуль, который делает Y?

Это не пожертвование, это оплата кому-то в ожидании будущей работы. Работа фрилансером меня не интересует.