Роз’яснення субмодуля Xposed Framework для Nougat & abforce

click fraud protection

У цій статті ми досліджуємо відмінності між майбутнім випуском Xposed для Nougat від rovo89 і поточною реалізацією, доступною для Nougat.

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

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

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

Єдина проблема? Через характер і кількість вільного часу розробник Xposed (наш власний старший визнаний розробник,rovo89) часто відстає від випусків Android.На оновлення для підтримки Lollipop знадобилося близько чотирьох місяців, і це займе близько року, щоб прийти до Нуги. Це не так погано, як може здатися, якщо задуматися скільки користувачів Android насправді використовують Nougat (близько 13,5%, хоча майте на увазі, що ентузіасти Android, цільова аудиторія Xposed, також частіше використовують Nougat). Однак не мати можливості використовувати свої улюблені модулі Xposed і мати найновішу та найкращу версію Android одночасно може бути досить неприємним.

Якщо вихідний код фреймворку Xposed доступний (принаймні для стабільних, випущених версій), розробникabforce вирішив забруднити руки і подивитися, чи зможе він перенести деякі з модифікацій rovo89 на Nougat. Вибравши інший і простіший підхід, abforce по суті адаптувала ту частину Xposed, яка насправді робить магію після встановлення та дозволяє включити її під час компіляції вашого власного ПЗУ (після цього, з’явилися інші обхідні шляхи). Цей підхід, мабуть, дуже відрізняється оскільки він ігнорує одну з основних переваг Xposed, яка доступна кожному з легкістю. Проте будь-який прогрес вітається, і вирішення завдання кількома головами може бути корисним і запропонувати нове розуміння. Головною проблемою, як ми бачимо, є дезінформація навколо цієї розробки (поширена деякими іншими «розробниками» та деякими блогами), а також деяка реакція спільноти. Сподіваюся, ця стаття зробить всю картину більш зрозумілою.


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

Потужність Xposed полягає в простій концепції: будь-який метод можна «підключити» (методи — це невеликі частини, які складають будь-яку програму), щоб код модуля Xposed виконувався до, після або замість це. Розглянемо простий приклад: припустімо, що Instagram використовує метод під назвою «showMenuOptions», коли ви натискаєте кнопку меню, і цей метод показує вам кнопки «Повідомити» та «Поділитися». Створивши модуль Xposed, ви можете змінити цей метод, щоб додати додаткову кнопку для завантаження зображення замість того, щоб ділитися ним, наприклад. Зміни можуть варіюватися від простих налаштувань (наприклад, Журнал змін Play Store) до капітального ремонту (напр GravityBox, який має на меті надати всі функції, які б мав користувацький ПЗУ)!

Це робить Xposed потужним, але це лише частина рівняння. Інші складові — це універсальність — або фактична можливість використовувати Xposed практично на будь-якому пристрої (з підтримуваною версією Android) і простота використання. Все, що користувачам потрібно зробити, це взяти інсталятор, який робить свою магію та динамічно виправляє їхню систему для інтеграції Xposed. Щоб застосувати модуль, його потрібно просто встановити, увімкнути та перезавантажити. Нічого не вимагає метушні, не потрібно перепрошивати користувацький ПЗУ (особливо, коли користувальницькі ПЗУ не завжди є прийнятним вибором), не потрібно видаляти APK, щоб інсталювати інший, підписаний іншим підписом. Все, що вам потрібно, це root (ви абсолютно можете мати спеціальну ПЗУ, і це має сенс багато часу; але хоча Xposed може надати більшість функціональних можливостей, які може надати спеціальна ПЗУ, він також виходить за рамки цього).

Але за цією простотою стоїть багато роботи:

  1. Для розробників модулів наданий API має бути стабільним і гарантовано працювати. Фреймворк Xposed не може випадково виходити з ладу з певними комбінаціями ПЗУ та/або гаків (за винятком виняткових випадків). Іншими словами, якщо у користувача є проблема, ця проблема повинна бути або користувачем винен (а не встановлення/увімкнення чогось правильно) або помилка розробника модуля (через наявність помилок у модуль). Але слід бути майже впевненим, що сам фреймворк працює належним чином і не є джерелом помилок, які можуть розчарувати користувачів і збентежити розробників.
  2. Для користувачів фреймворк має легко встановлюватися на пристрої та ПЗУ, незалежно від того, чи є у них Samsung з останньою версією TouchWiz чи Nexus із встановленою LineageOS. Інсталятор Xposed обробляє все це за лаштунками. Щоб перевірити інсталятор і фреймворк на різноманітних пристроях і комбінаціях ПЗУ, потрібно багато працювати. Знаходяться помилки, часто через різні реалізації OEM-виробниками, і їх потрібно виправити, щоб забезпечити надійність для всіх користувачів.
  3. Значні версії Android іноді можуть принести значні зміни, що вимагає переосмислення частин архітектури фреймворку, щоб адаптуватись до цих змін. Іноді з новішими версіями також з’являються додаткові можливості, що вимагає додаткового часу, щоб отримати кращий продукт. Наприклад, коли ART було вперше представлено, Xposed вимкнув певні оптимізації, щоб підключення могло працювати правильно. У випадку Нуга,оперативний компілятор (JIT). дає можливістьзберегти ці оптимізації.

Велика частина вищезазначеної роботи стосується незначних деталей, де більша частина фреймворку функціонує належним чином, але невідповідності та незначні проблеми зроблять це азартною ігрою для користувачів, а для підтримки та розвитку модуля – кошмаром розробників. Однак випущений продукт має на меті бути придатним для всіх і без сюрпризів. Звичайно, є деякі винятки, оскільки деякі зміни OEM-виробників вимагають більше зусиль, щоб адаптуватися до них, але вони є незначними, і переважна більшість користувачів (і розробників) можуть користуватися стабільним і надійним Xposed досвід. Будь-які виявлені винятки документуютьсячіткі застереження щоб ніхто не дивувався.

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


субмодуль Xposed 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. Припинити використання Xposed – це нормально, але це не означає ображати чиїсь можливості чи нападати на інших за те, що вони мають іншу філософію або не забезпечують негайного задоволення ваших потреб у флеш-прошивках. Це ще більше вірно для повністю безкоштовного проекту, де розробник висловив свою методологію розробки та причини, що стоять за нею.

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

Нарешті, ми вважаємо, що нам слід знову згадати філософію розробки rovo89. Багато активних користувачів стверджують, що було б корисно мати останні зміни у відкритому коді. Хоча в теорії це звучить добре, це такне так просто на практиці особливо якщо взяти до уваги пояснення rovo89:

[...] Я вважаю, що просте висування поточного стану не допоможе проекту. Можливо, ми побачимо «деякий» випуск дуже швидко людьми, які компілюють код, побачимо, що це виглядає так працює нормально та публікує його як «своїй порт», незважаючи на проблеми та дії, про які вони не знатимуть з. Тож назвіть мене егоїстом, але я б не хотів бачити такий напівзавершений випуск.[Джерело]

Що фактично виявилося досить хорошим прогнозом поточної ситуації, із заявками кількох «розробників». зміни abforce і пропонує прошивний ZIP з мінімальними попередженнями або без них, неповними кредитами, і все це запитує пожертвування.


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


Ви в захваті від Xposed на вашому Nougat ROM? Дайте нам знати в коментарях!