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

Тепер доступний архівний архів, який переносить Xposed Framework на ПЗУ Android 7.1 Nougat. Zip працює на OnePlus 3T, а також на багатьох інших телефонах!

Після кількох місяців очікування ми нарешті отримали підтримку Xposed Framework для Nougat ROM (хоча й неофіційно). Завдяки деяким талановитим розробникам на наших власних форумах XDA тепер ви можете інсталювати Xposed Framework на ПЗУ Android Nougat за допомогою флеш-архіву.

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

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

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

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

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


Оновлення: відповідь Rovo89

Оригінал, розроблений за Xposed Framework, старшим визнаним розробником XDA rovo89, відповів на Github своїми думками щодо цих останніх подій.

Зі свого досвіду я можу сказати вам, що справді не так вже й важко зробити основи, але на деталі потрібно витратити багато часу. Це як правило 80-20, за винятком того, що воно більше схоже на 95-5 або близько того.

Підхід підключення, який я розробив для попередніх випусків, досить стабільний і його можна застосувати також для нових випусків. Я припускаю, що вам знадобилося більшу частину часу, щоб перевірити всі місця, де IsProxyMethod() і IsDirect() викликається та вирішує, чи слід їм розглядати новий модифікатор методу чи ні (тобто використовувати параметр true чи ні). Якби ви цього не зробили, ви могли пропустити деякі місця, де вони нещодавно ввели такі дзвінки. Те саме для таких методів InstallStubsForMethod(), який повинен працювати з вихідним оригінальним методом, навіть якщо його викликають для підключеного методу. Вам потрібно буде перевірити більше місць, де це може бути актуальним. Це ще в діапазоні днів, але якщо ви пропустите це, ви можете побачити незрозумілі збої або неправильну поведінку, які дуже важко налагодити.

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

Він продовжує:

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

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

Я щойно перевірив свій журнал Git, і в жовтні у мене був готовий основний підключення (як у цьому порту). Відтоді я працював над усуненням обмежень. Щоб зробити його більш надійним на попередньо скомпільованих ПЗУ, я міг би також перенести частину перекомпіляції, однак це все ще не ідеально. Як пояснювалося десь вище, зараз у нас є JIT, який дозволяє нам зберегти всі оптимізації, лише скасовуючи (і, можливо, перекомпілюючи) методи, на які безпосередньо впливає підключення. Це досить складно, оскільки це більше, ніж просто копіювати та вставляти. І поки цього не буде зроблено, я нічого не буду публікувати. 9 місяців для цього (дотепер) — це справді довго, я знаю, але привіт, це мій вільний час, і, наприклад, внаслідок переїзду в у новій квартирі я взагалі не міг працювати над Xposed протягом кількох місяців (!), а в іншому випадку мав дуже обмежений час.

Ми повинні чітко пояснити, що ці нещодавні розробки не є справжнім «Xposed», який ви всі знаєте люблю, але функціонально вони дозволяють вам використовувати деякі модулі Xposed Framework прямо зараз на Android нуга. Ми не будемо звинувачувати вас за те, що ви не дочекалися офіційної, більш стабільної та більш сумісної версії Xposed Framework для Android Нуга, але ми хочемо пояснити, що ця ітерація є лише тимчасовим заходом, призначеним для задоволення потреб деяких користувачів. зараз. Ймовірно, це не той спосіб, у який Xposed працюватиме в майбутньому.


Завантажте неофіційний Xposed Framework для Nougat на форумах XDA