Як Substratum надав більше можливостей Inflexible TouchWiz

Sungstratum від команди [projekt.] передає всі тематичні переваги RRO-OMS на пристрої Samsung Nougat через Substratum! Читайте далі, щоб дізнатися більше!

Тема Android пройшла довгий шлях, від хакерських редагувань до Substratum і тепер, Сонячний шар. Багато років тому слово «тема» в дискусіях про Android часто замінювалося словом «вибір», що означає T-Mobile Theme Chooser, знайдений у CyanogenMod, який заклав основи, що зробили Android тематичним рай. Можливість змінювати зовнішній вигляд ОС надала користувачам ще один вимір налаштування, дозволяючи їм вносити зміни, які роблять їхні пристрої набагато персоналізованішими.

Хороша робота тривала у двох різних напрямках. Theme Chooser перетворився на CyanogenMod Theme Engine, але, незважаючи на роки зусиль, докладених до тематичних ресурсів, CMTE став застарілим коли з’явилися інші альтернативи.


РРО та шари

Основу однієї з альтернатив було закладено, коли Sony внесла код у вигляді нової структури під назвою Накладання ресурсів виконання (RRO)

був прийнятий в AOSP. Ця структура забезпечує можливість заміни ресурсів програми під час виконання (звідси і назва). «Накладення» самі по собі були присутні та підтримувалися в Android ще з Gingerbread (і можливо, і раніше), використовувався в основному для заміни ресурсів, щоб програми працювали над цим пристрій. Підхід Sony до RRO передбачав модифікацію диспетчера активів для прийняття файлів apk, які використовували ресурси, зіставлені з іншими відповідними ресурсами, наявними на пристрої. Ці нові ресурси з apk потім накладалися на базові ресурси лише під час виконання, дозволяючи системі працювати так, ніби ці нові ресурси завжди були її частиною.

Фреймворк RRO було об’єднано з AOSP до оприлюднення Lollipop 5.0, але кілька початкових збірок 5.0 мали частини фреймворку, пошкоджені через інші зміни. Android 6.0 Marshmallow Developer Previews були першими, хто додав функціональну, хоча й обмежену структуру RRO, що відкриває можливості налаштування прямо на базовому рівні Android. Отже, якщо OEM навмисно не намагався відійти від стандартних варіантів оформлення Android, це точно рівень послідовності може бути збережений у підході до того, як «теми» будуть реалізовані в Android.

Поки AOSP бавився з RRO і шукав найкращий спосіб об’єднати все це, команда розробників викликала BitSyko працювали разом над колективною роботою під назвою "Шари". Шари розширили стандартну функціональність RRO в Android 5.1 Lollipop, щоб уможливити складніше перемикання ресурсів і забезпечити більше контролю елементів для тем, ніж це можливо зі стандартною RRO. Оскільки версії Layers побудовані на RRO, виробникам ПЗУ потрібно було додати додатковий код, щоб увімкнути функціональність шарів у своїх ПЗУ, оскільки не всі теми шарів працюватимуть на стандартній RRO у Marshmallow.

Тим часом Sony своїми зусиллями рушила до створення тем для Android. Він почав працювати OMS (служба диспетчера накладень), клієнт для керування накладками, який дозволить провайдерам динамічно контролювати пріоритети та вмикати та вимикати накладення. OMS об’єднується з AOSP і потрапить в Android O. Визнаний розробник XDA nicholaschum зміг підтвердити через свої джерела, що Android O матиме «динамічні накладки», що, як вважають, є посиланням на OMS.

OMS викликав конфлікти з Layers, оскільки традиційно такі функції були під контролем themer. Щоб вирішити проблеми, які виникли через OMS, а також розширити функціональні можливості шарів, BitSyko знову об’єдналися (і перейменували себе на [проект.]) Створювати Субстрат. Substratum — це клієнт з функціями OMS який намагається поєднати функціональні можливості шарів із OMS, а також запозичує інші елементи з інших минулих рішень для створення тем. Накладення більше не накладалися одне на одного, щоб тематизувати окремі елементи, оскільки тепер усі необхідні елементи було введено в одне накладання. Такі функції, як компіляція на пристрої, дозволяли застосовувати теми без необхідності перезавантаження між змінами, завдяки чому значно простіше для кінцевих користувачів випробувати теми та експериментувати. Substratum перебуває в стадії активного розвитку з моменту свого створення, і перераховує всі його функції та додаткові функції виходять за межі цієї статті, тому ми перейдемо до справжньої теми шматок.


Субстрат в Sungstratum

Як пояснювалося в попередньому розділі, Substratum почався як спосіб розширення функціональних можливостей OMS, а також функцій RRO (через рівні). Substratum передбачалося використовувати разом із ПЗУ на основі AOSP, оскільки більшість інших OEM-виробників внесли б суперечливі зміни що не дозволить Substratum співіснувати з їхніми модифікаціями на відредагованій шкірі UX, наприклад, Samsung для приклад.

Samsung також працювала над рішенням для створення тем для використання на власних пристроях на Nougat. На відміну від Sony, Samsung не виявив інтересу повертати код оформлення тем до AOSP. Але оскільки рішення Samsung було досить простим, AOSP не дуже програвав. Тематичне рішення Samsung, вбудоване в Touchwiz, справді з’явилося на Samsung Galaxy S6, але, як уже згадувалося, воно було досить обмеженим щодо того, чого можна було досягти. До цього були обмежені експерименти, які почалися з Galaxy Alpha, хоча більшість елементів інтерфейсу користувача системи були поза його сферою. Теми можуть змінювати шпалери та піктограми, а також деякі стандартні програми Samsung, наприклад, номеронабирач, контакти, повідомлення та область сповіщень.

Як виявилося, механізм створення тем від Samsung поширюється РРО як в АОСП. Samsung також відтворив свою власну внутрішню версію OMS після розширення RRO, тому їхні реалізації як RRO, так і OMS відрізняються від AOSP. Але, як не дивно, не дуже велика кількість — аномальна поведінка, якщо взяти до уваги особливість і складність Touchwiz. Автори тем, які використовують нові флагмани Samsung, повідомили, що вони можуть встановлювати накладки RRO та створювати теми сторонніх додатків.

Це була підказка, що команді [projekt.] потрібно було розглянути можливість офіційної підтримки пристроїв Samsung на Substratum. Команда перетворила невелику кількість коду з розділу RRO/Legacy свого додатка, але замість цього запитуючи root і запитуючи перезавантаження, вони запускали певні наміри, щоб накладення було встановлено. Потім команда працювала над тим, щоб програми, на які впливають теми, були примусово закриті у фоновому режимі, щоб забезпечити повне оновлення активів під час наступного запуску.

Ми запитали у визнаного розробника XDA nicholaschum щоб надати нам деяке уявлення про проблеми, з якими зіткнулася команда, працюючи проти закритого впровадження Samsung RRO-OMS:

Виклики, з якими ми зіткнулися, були досить незрозумілими та невідомими багатьом, хто не має багато знань розуміння систем оформлення тем, незалежно від того, з відкритим чи закритим кодом – усе має власну перевірку та фаза помилки. У цьому випадку, працюючи з Samsung, я натрапив на багато проблем, але головна з них полягала в тому, що наміри системи не були запускається для накладень після завершення інсталяції - наприклад, використання приймачів трансляції з “android.intent.action. PACKAGE_ADDED» - Служба тем забороняє все, що не є частиною системного підпису певного Samsung дозволу тематичної служби від отримання цього, тож найважче – це обхідні шляхи, які нам довелося знайти навколо.

Ми використовуємо Substratum разом із Theme Engine від Samsung за допомогою тієї ж системи, що й вони. Вони використовують сильно модифіковану версію системи Sony Resource Runtime Overlay, скорочено RRO або відомої як застаріла серед користувачів Substratum. Однак те, що відрізняється, полягає в тому, що теми Samsung мають додатковий дозвіл, який приховує ці накладки в налаштуваннях, тому ви не можете видалити їх одну за одною вручну. Ми використовуємо ту саму систему, однак ми використовуємо реалізацію AOSP/Sony, саме тому теми Samsung можуть повністю створювати теми, а Субстратні накладки не можуть торкатися цільового посередника, якого не існує «fwk» — як ми всі знаємо, фреймворк — це просто пакет «android». назва.

Здавалося дивним, що [projekt.] зміг відносно легко працювати разом із впровадженням RRO від Samsung. Будь-хто, хто коли-небудь працював з пристроями Samsung, може підтвердити, наскільки важко Samsung часто робить речі. Ми запитали будь-який конкретний блок, з яким зіткнулася команда під час перенесення:

Дійсно існує певний механізм безпеки, який вплинув на кількох користувачів, де накладення повертаються під час запуску. Це пов’язано з тим, як Samsung завантажує свій пристрій. Оскільки ми майже всі використовуємо 7.0 на TouchWiz/Samsung Experience, ми використовуємо новий метод «Оптимізації програм» (це можна побачити, оновивши телефон, відобразить сповіщення з піктограмою Android Nougat, яке повідомляє, що воно оновлюється у фоновому режимі), тому цей спосіб оптимізації програм також розвантажує цільові пакетів, що зрештою порушує процес idmapping під час завантаження (через відсутність цільового пакета), і, таким чином, кілька людей стикаються з вивантаженням накладання після перезавантаження.

Ви також можете спостерігати, як це відбувається з кількома темами Samsung, зокрема темою @envy~ Dark/Black - він робить колір панелі навігації за замовчуванням у меню «Дисплей» -> «Панель навігації» чорним, де є фактичний колір за замовчуванням білий. Після встановлення чорного кольору ви зможете відкрити клавіатуру, а панель навігації залишиться чорною. На багатьох пристроях це випадковим чином повертається під час перезавантаження.

З огляду на те, що тематика повертає свою популярність, які плани Substratum щодо бічних гілок, таких як Sungstratum?

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


З огляду на останні та майбутні зміни в AOSP і Android O, схоже, що колись молода ОС від Google матиме ще більше персоналізації для користувача. Деякі OEM-виробники навіть планують позбутися своїх користувальницьких інтерфейсів і додатків UX на користь AOSP, а інші, як-от Samsung, досить близькі до своїх власних тем. Ми передбачаємо майбутнє, де теми відіграватимуть важливу роль у взаємодії з користувачем ще більшої кількості людей – ОС де ви дійсно контролюєте, як виглядає ваш пристрій, де естетику користувальницького інтерфейсу ви налаштовуєте ви. І ми не змогли б досягти такого майбутнього без колективної сили цієї дивовижної спільноти та таких проектів, як Substratum.


Перегляньте інтеграцію Substratum для Samsung Nougat на наших форумах Substratum!Субстрат на GitHub