Офіційний Xposed Framework для Android Nougat тут

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

Оскільки екосистема Android з роками розвивалася, все менше користувачів знаходять причини, чому їм слід рутувати свій пристрій. Існує зростаюча тенденція користувачів, які вирішують залишатися на стандартній прошивці, або тому, що вони вважають досвід задовільним, або тому, що не хочуть грати в гра в кішки-мишки з Google SafetyNet API. Але якщо ви запитали користувача на початку 2016 року, чому він отримав root-праву на своїх телефонах, можливо, першою причиною була названа можливість встановити Xposed Framework. Це було більше року після Android 7.0 Nougat був вперше випущений, але довге очікування нарешті закінчилося: офіційний Xposed Framework для Android Nougat нарешті доступний.

Протягом минулого року XDA Senior Recognished Developer rovo89, провідний розробник Xposed Framework, надав декількаоновлення про прогрес Xposed Framework для Android Nougat. Для деяких це

очікування було терпимим здебільшого завдяки величезній кількості додаткових функцій, які пропонує Xposed Framework Android Marshmallow. Але багато інших перейшли до життя без Xposed на своїх пристроях.

Коли розробник abforce випустив an Підмодуль ART для AOSP 7.1.2, але як зазначає наш власний GermainZ вам краще дочекатися офіційної Xposed Framework Випуск як реалізація abforce вимагав інтеграції фреймворку в спеціальні ПЗУ. Крім того, ця неофіційна реалізація була неповною, що призвело до непослідовної або помилкової поведінки з деякими Xposed Модулі.

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

Нам більше не потрібно турбуватися про такі проблеми, як rovo89 (після деякої допомоги визнаного розробника XDA wanam) тепер готовий до випуску офіційного оновлення Xposed Framework і інсталятора сумісність з Android 7.0/7.1 Nougat. Це означає, що вам не доведеться встановлювати спеціальне ПЗУ або возитися з перепрошивкою нестабільних версій, щоб насолоджуйтеся Xposed—просто встановіть root-права на свій телефон і інсталюйте останню програму Xposed Installer (посилання нижче) і в Xposed Installer встановить Xposed за вас.

Інсталятор Xposed переглядає репозиторій модулів

Деяким це може здатися трохи запізнілим, особливо після того, як вийшов цей випуск більше місяця після виходу Android 8.0 Oreo. Майте на увазі, що дуже небагато пристроїв матимуть доступ до стабільної версії Android Oreo протягом багатьох місяців. Android Oreo є тільки на 0.2% усіх пристроїв Android (порівняно з ~18% на Nougat), згідно з останніми статистичними даними від Google, але багато наших користувачів люблять встановлювати спеціальні ПЗУ, щоб бути в курсі.

Розповсюдження версії Android станом на жовтень 2017 року. Джерело: Google

Хоча навіть якщо ви встановите неофіційний порт Android 8.0 доступні на безлічі пристроїв на наших форумах, багато з цих портів не є щоденним статусом драйвера. Тож якщо ви не готові викласти сотні доларів за новий Google Pixel 2/2 XL, Sony Xperia XZ1/XZ1 Compactабо майбутній пристрій, наприклад Huawei Mate 10, то ви, ймовірно, зможете вичавити кілька місяців використання Xposed Framework на Android Nougat.

Якщо це схоже на вас, то перейдіть до офіційної гілки форуму для інсталятора Xposed і архівів фреймворку, щоб запустити його на вашому пристрої Android Nougat.

Завантажити Xposed Installer v3.1.2 (вкладення)

Xposed Installer для Nougat 7.0 (SDK24) Завантажити

Xposed Installer для Nougat 7.1 (SDK25) Завантажити

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


Навіщо встановлювати Xposed Framework?

Хочете отримати користувацькі функції ПЗУ без перепрошивки користувацького ПЗУ? Мати всіх модулів Xposed для налаштування ПЗУ, відома як GravityBox, ви охопили. Хочете налаштувати параметри відображення для кожної програми? Спробуй Налаштування програми. Як щодо налаштування певних програм, наприклад Hangouts? Або змініть Instagram, щоб ви могли завантажуйте будь-які публікації, які вам подобаються?

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

Як працюють модулі Xposed?

Суть полягає в тому, що Xposed Framework дозволяє модулям "підключатися" до методів Java будь-якої програми— будь то програма, встановлена ​​користувачем, або системна програма. Xposed дозволяє модулям виконувати власні методи до, під час або замість оригінальні методи цільового застосування.

Наприклад, уявіть метод, який використовується в програмі Gmail, яка публікує сповіщення про нові електронні листи. За замовчуванням метод створює нове сповіщення з кнопками для архівування/видалення або відповіді на електронний лист. Модуль Xposed можна підключити до цього методу та додати нову кнопку, наприклад «позначити як прочитане». (Так, є вже є модуль саме для цього.)

Наведене вище є надмірним спрощенням кінцевого результату того, що Xposed Framework дозволяє робити своїм модулям. Сам фреймворк неймовірно складний, тому його робота майже повсюдна на пристроях з root-доступом — без спеціального ПЗУ — ось чому розробка Xposed для Android Nougat зайняла так багато часу.

Чому розробка Xposed займає стільки часу?

Магія Xposed — те, що дозволяє модулям підключатися до методів інших програм — вимагає глибоких знань того, як Zygote і Android Runtime (ART) працює. Ці вимоги вже не дозволяють великій кількості людей брати участь у проекті, але проблема посилюється тим фактом, що rovo89 був основним учасником Xposed протягом останніх 5 років.

Ось чому заклики до відкритого доступу до його модифікацій, внесених до Xposed після останнього публічного випуску Xposed, були відхилені. Це його дітище, і він найкраще розуміє це та модифікує, тому додає більше робочої сили до проекту на такій пізній стадії може просто затримати проект далі.

Крім того, якщо rovo89 постійно оновлював своє джерело, він хвилювався що хтось візьме незавершений код для створення напівфункціональної Xposed Framework без універсального інсталятора Xposed, який супроводжуватиме його. (Саме це все одно сталося з реалізацією abforce, і безлад із різними методами встановлення виправдав вагання rovo89.)

Таким чином, найкраще, що ми могли зробити, це дати rovo89 час попрацювати над його улюбленим проектом. Xposed не є його повною або навіть частковою роботою. Це просто хобі, яким він займається на благо громади протягом 5 років. Такий складний проект, як Xposed, потребує часу для роботи, а потім для тестування — часу, якого у нього часто не вистачало через інші зобов’язання. Прогрес був створювався протягом останнього року, як rovo89 задокументував у кількох своїх публічних оновленнях щодо цієї проблеми, доки нарешті сама Xposed Framework і Xposed Installer не будуть готові до випуску.

Що зробив rovo89, щоб Xposed працював у Nougat?

Нові випуски Android іноді вносять зміни в роботу ART, що може вимагати переробки окремих частин Xposed. Android 7.0 Nougat представив компілятор Just-in-Time для ART, щоб, наприклад, покращити продуктивність програм під час виконання. Але неофіційний Xposed Framework від abforce просто вимикає багато оптимізацій ART, щоб підключення методів могло працювати правильно.

Оптимізація ART в Android Nougat. Джерело: Google

На відміну від реалізації rovo89 зберігає всі оптимізації ART в Android Nougat шляхом перекомпіляції виклику методу за допомогою JIT і збереження методів. Це означає, що ви можете користуватися перевагами модуля Xposed без шкоди для продуктивності, примусово вимкнувши оптимізацію ART.

Щоб дізнатися більше про те, що зробив rovo89, щоб нарешті створити надійний метод підключення в Xposed для Android Nougat, радимо прочитати наведену нижче заяву.

Повна заява від rovo89

Ядром Xposed, очевидно, є його здатність перехоплювати методи Java, тобто дозволяти модулям виконувати код до, після або замість цих методів. Практично всі інші функції базуються на цьому, тому дуже важливо, щоб вони завжди працювали, як очікується. Загальна концепція незмінна з тих пір, як я винайшов Xposed п’ять років тому, вона вимагає зміни точки входу методу. Це починає виходити з ладу, коли точка входу не перевіряється під час виконання - що насправді відбувається з деякими оптимізаціями в ART.

Одним із прикладів є те, що точка входу вже відома під час компіляції, тоді абоненти можуть безпосередньо перейти до цієї адреси, не шукаючи її. Інший приклад — інлайнінг. Розглянемо цей приклад:

ART досить розумний, щоб помітити, що метод two() дуже простий і тому вбудовує логіку безпосередньо в метод doSomething(), ось так:

Ви все ще можете підключити метод two(), але він більше не буде викликатися з doSomething() під час виконання, як і ваш зворотній виклик. МИСТЕЦТВО ще розумніше: воно усвідомлює, що магія завжди 42, і тому умова ніколи не може бути виконана. Отже, весь метод doSomething() фактично є безопераційним:

У попередніх версіях Xposed повністю вимикав ці оптимізації та примусово перекомпілював усе. Це супроводжувалося кількома недоліками. Перш за все, розробники ART роблять фантастичну роботу, щоб максимізувати продуктивність оптимізації, і їх вимкнення частково обов’язково призводить до зниження продуктивності (я ніколи не вимірював, наскільки хоча). Крім того, сама перекомпіляція не завжди проста і викликала у мене багато головного болю, особливо на початку. Нарешті, перекомпільовані файли займають місце на додаток до попередньо скомпільованих файлів у /system.

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

З офіційною версією ви збережете оптимізований код і матимете надійні перехоплювачі. Як це працює? Що ж, Xposed записує всі зроблені дзвінки. Це відбувається під час компіляції файлів .apk або в окремому проході для попередньо оптимізованого коду. Ці додаткові дані не займають багато місця, але дозволяють Xposed з’ясувати, де міг бути вбудований певний метод. Отже, коли метод підключений, усі його виклики будуть деоптимізовані, тобто їхній код більше не використовуватиметься. Це гарантує, що зворотній виклик гака точно буде викликаний. І якщо виклик інтенсивно використовується, його буде просто перекомпільовано за допомогою JIT, цього разу з усвідомленням того, що метод перехоплений і тому деякі оптимізації не застосовуються. Це означає, що вплив методів підключення зведено до мінімуму. ура!

А тепер спробуйте. Обов’язково використовуйте Xposed 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 Labs

Прогрес Android Oreo

Якщо вам цікаво, ось як просувається отримання Xposed для Android Oreo:

Я вже почав працювати над Android 8.0. Є декілька нові мовні особливості це мені доведеться переглянути, але загальна концепція все одно має працювати. Це включає в себе всю роботу з визнання недійсним скомпільованого коду будь-яких викликів під час підключення методу, що зайняло найбільше часу, коли я працював над Nougat. Тож я справді впевнений, що цього разу буду набагато швидшим. Android 8.1не має сильно відрізнятися, тому я не очікую, що для нього буде багато додаткової роботи.