Xposed For Lollipop тепер офіційно доступний

Xposed Framework не потребує знайомства з читачами XDA. Коли запитали про речі нашої спільноти найбільше ненавидить Lollipop, єдиним коментарем, який отримав найбільшу кількість голосів у дискусії, було те, що він порушив підтримку Xposed. Фактично, багато учасників форуму навіть відмовилися оновлюватися до Lollipop саме з цієї причини. Але тепер усе змінюється, оскільки довгоочікувана платформа Xposed Framework нарешті з’явилася для Android Lollipop.

Якщо ви ще не знайомі з Xposed, просто кажучи, це знахідка для спільноти модифікаторів. Xposed не потребує перепрошивання будь-яких ПЗУ, але пропонує масу налаштувань і налаштувань, які користувачі можуть установлювати як програми на пристроях із root-доступом. Він неймовірно простий у використанні та з обмеженим ризиком. І тепер усі ентузіасти Android на Lollipop можуть насолоджуватися перевагами цього фантастичного проекту на своїх пристроях. Завантажуйте та починайте модифікувати!

rovo89 також був люб'язний надати нам запитання та відповіді щодо останнього проекту. Нижче ви можете знайти відповіді на всі свої запитання щодо проекту.

Чому це тривало так довго? ART вийшов більше року тому!

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

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

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

Нам потрібно переписати всі модулі?

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

Чи справді це працює?

Так! Принаймні для мене це добре працює на моєму щоденному пристрої (Nexus 5 на CM12), а також на моєму Nexus 9 (оплачується XDA – дякую!). Телефон стабільний, як зазвичай, і програми працюють нормально. І, очевидно, модулі та їхні хуки/заміни ресурсів також працюють нормально, інакше не було б сенсу щось випускати.

Але чому тоді це альфа-версія?

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

Існують також деякі граничні випадки, які ще не перевірені, наприклад підключення JNI (власних) методів і методів, які виконуються під час їх підключення.

Я хочу його встановити. зараз! Що я маю робити?

Переконайтеся, що ви прочитали мої слова вище та знайомі з внутрішніми функціями телефону. Очевидно, що вам потрібно використовувати Lollipop ROM і мати хорошу резервну копію ваших даних. Наразі я опублікую лише версію ARMv7. 64-бітний більш складний, тому давайте спочатку спробуємо «легкий» варіант.

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

  • app_process32_xposed і деякі символічні посилання
  • libexposed_art.so
  • libart.so та деякі пов’язані двійкові файли + бібліотеки (на основі 5.0.2, покращені підтримкою перехоплення тощо)
  • XposedBridge.jar (зараз зберігається в /system/framework)

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

Це не працює/мені це не подобається! Як я можу його видалити?

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

Чому ви замінюєте файли ART на моєму пристрої? Це більш інвазивно, ніж на Dalvik, спричинить значні проблеми з продуктивністю та буде нестабільним!

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

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

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

Ви нарешті опублікуєте вихідний код?

Звичайно, ви знайдете його на GitHub дуже скоро після випуску альфа-версії, поки що в окремій гілці.

Чи означає це, що старіші версії Android більше не підтримуються?

Немає! Новий код компілюється на всіх версіях Android 4.x, і його просто потрібно протестувати перед уніфікованим випуском. Але спочатку мені потрібно переконатися, що він добре працює для Lollipop. Можливо, підтримку ART можна повернути до KitKat, але це менш пріоритетне.

Як я можу віддячити вам за вашу роботу?

Багато людей просили пожертвувати кілька доларів, тому я створив пожертвування сторінка зараз.

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

Це не пожертвування, це оплата комусь в очікуванні майбутньої роботи. Мене не цікавлять роботи фрілансерів.