Google може нарешті ввімкнути власні теми, створені на основі RRO Framework від Sony

Android O Developer Preview має загадкове налаштування теми дисплея. XDA дійшов висновку, що ця тематична структура заснована на RRO Sony.

Якщо ви ще не знаєте, Google випустив другий Android O Developer Preview (Android O DP2) під час вчорашньої події I/O. Ми вже глибоко занурилися у все нове, що ми знайшли, але була одна річ у DP2, яка мене турбувала. Всі хто отримав бета-оновлення або перепрошивав вручну нові образи швидко зустрілися з a радикально інший інтерфейс користувача у швидких налаштуваннях. Чому Google вирішив змінити тему? Після ще деякого тестування та копання я дійшов висновку. З будь-якої причини Google вирішив зробити свій «Перевернута» тема тема за замовчуванням; можливо, поки компанія була в середині тестування спеціального рішення для створення тем на основі Накладення ресурсів виконання Sony (RRO), вони не змогли запрацювати тему Pixel за замовчуванням вчасно до випуску бета-версії Android O.

Стандартна системна тема в Android O Developer Preview 2

Відкриття того, що тематична структура Android O базується на RRO Sony, може здатися декому очевидним, враховуючи, що Google

реалізовано підтримку РРО в Android 6.0 Marshmallow, хоча для цього потрібно було мати рутований пристрій. Однак, оскільки вихідний код для Android O не було опубліковано, було б чистим припущенням припустити, що ця системна тема в Android O насправді є RRO. Тому наш початкове покриття цієї таємничої обстановки, а також висвітлення, зроблене інші веб-сайти, не встановив цього зв’язку. Але є кілька доказів, які пов’язують цю функцію з тематичною структурою, яка, на нашу думку, має це остаточно продемонструвати Тема пристрою Android O базується на RRO. З підтримкою RRO на борту це може бути нарешті надати рішення для оформлення тем для некорінованих користувачів, на яке ми всі чекали.


Що таке Runtime Resource Overlay (RRO)?

RRO — це тематичний фреймворк, створений розробниками Sony Теми Sony Xperia. Принадність РРО полягає в тому, що він дозволяє замінювати ресурси програми без необхідності змінювати вихідний код програми. Це відбувається через використання накладання, яке містить власні рядки ресурсів, які використовуються для заміни ресурсів накладеної програми під час завантаження програми.

Для тих із вас, хто бачить «РРО» і думає «Шари», ви зовсім близько. Layers — це дещо модифікована версія RRO від Sony, але на базовому рівні вона працює дуже схоже. RRO/Layers "встановлює" APK теми в /system/vendor/overlay. Під час завантаження менеджер пакунків читає ці файли APK, перевіряє їх, а потім використовує idmap щоб підключити його до таблиці системних ресурсів. Ви можете прочитати більш ретельний FAQ на SykoPompos, розробник (зараз не підтримується) Менеджер шарів додаток

Знімки екрана застарілої програми Layers Manager


Рекомендована література: Коротка історія тематізації: від тем OEM до шарів RRO


Звичайно, мало хто в спільноті користувальницьких ПЗУ Android все ще використовує механізм створення тем на основі RRO. Більшість перейшли до іншого механізму оформлення тем, наприклад Субстрат, що є еволюцією шарів, що тепер базується на службі диспетчера накладень (OMS). (Проте CyanogenMod Theme Engine (CMTE) була ще однією популярною темою його майбутнє все ще в повітрі.) Однак, навіть якщо ви не використовуєте спеціальний ПЗУ з комітами OMS, Додаток Substratum theme engine все ще підтримує можливість використання тем «Substratum Legacy», які є лише темами RRO/Layers. І через це користувачі почали з’ясовувати, що теми пристроїв Android O та RRO – це одне й те саме.


Google нарешті представляє тематизацію через RRO

Над на розділ коментарів ан AndroidPolice стаття, Визнаний розробник XDA Макср1998 опублікував знімок екрана, на якому стверджується, що теми Substratum Legacy відображаються в інструменті вибору тем пристрою Google.

Ліворуч ви можете побачити список накладених APK, встановлених Maxr1998 на Android O Developer Preview 1. Праворуч ви можете побачити два варіанти теми в Android O Developer Preview 2. Раніше в Android O DP1, двома варіантами були «Піксель» і «Інвертований», причому «Піксель» було встановлено за замовчуванням, а «Інвертований» нагадує вигляд і відчуття відтінків сірого, які є типовими в O DP2.

Але уважно подивіться на назву теми за замовчуванням в O DP2. Він називається «android.auto_generated_rro». Насправді дуже дивна назва, але включення в назву «RRO» змусило мене спочатку повірити, що це справді RRO Sony.

Я тоді подумав, якщо це справді РРО, то де ще я можу це підтвердити? Ці думки спонукали мене перевірити /system/vendor/overlay, і, як і очікувалося, там дійсно розташовано два файли APK: framework-res__auto_generated_rro.apk і PixelThemeOverlay.apk.

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

PixelThemeOverlay.apk Розбір APK

[вкладки][заголовок вкладки ="AndroidManifest.xml"]


package="com.google.android.theme.pixel" platformBuildVersionCode="25" platformBuildVersionName="O">
<overlayandroid: priority="1"android: targetPackage="android"/>
<applicationandroid: hasCode="false"android: label="@string/pixel_overlay_pixel"/>
manifest>

[/tab][заголовок вкладки = "strings.xml"]


<resources>
<stringname="pixel_overlay_pixel">Pixelstring>
resources>

[/tab][заголовок вкладки ="colors.xml"]


<resources>
<colorname="user_icon_1">#ff5e97f6color>
<colorname="user_icon_2">#ff5c6bc0color>
<colorname="user_icon_3">#ff26a69acolor>
<colorname="user_icon_4">#ffec407acolor>
<colorname="user_icon_5">#ff33ac71color>
<colorname="user_icon_6">#ff8bc34acolor>
<colorname="user_icon_7">#ffff9800color>
<colorname="user_icon_8">#ffff7043color>
<colorname="system_error">#ffea4335color>
<colorname="primary_device_default_dark">#ff2d2d2dcolor>
<colorname="primary_device_default_settings">#ff2d2d2dcolor>
<colorname="primary_dark_device_default_dark">#ff242424color>
<colorname="primary_dark_device_default_settings">#ff242424color>
<colorname="secondary_device_default_settings">#ff3a3a3acolor>
<colorname="tertiary_device_default_settings">#ff616161color>
<colorname="quaternary_device_default_settings">#ff9e9e9ecolor>
<colorname="accent_device_default_700">#ff3367d6color>
<colorname="accent_device_default_light">#ff4285f4color>
<colorname="accent_device_default_dark">#ff5e97f6color>
<colorname="accent_device_default_50">#ffe8f0fecolor>
resources>

[/tab]

[/tabs]

Якщо знежирити над документацією РРО надані Sony, зрозуміло, що це має бути тема RRO. У файлі AndroidManifest рядок накладання вказує на те, що це накладання націлено на файл framework-res.apk ("android") і має пріоритет "1", що є найвищим пріоритетом, який йому можна надати.

З іншого боку, у файлі framework-res__auto_generated_rro.apk є схожий на вигляд файл AndroidManifest.xml, але є багато інших рядків, які не пов’язані з темами. Але це легко пояснити тим фактом, що дана тема РРО є по суті урізаною версією framework-res.apk Google Pixel, я вважав, що це вірно, оскільки \res\values\bools.xml містить рядок true з допису на нашому форумі я знаю, що це рядок, який користувачі потрібно встановити щоб увімкнути підтримку Round Icon у всій системі.


Висновок

Мій тестер ще не зміг отримати кореневий доступ в O DP2, щоб спробувати запустити тему Substratum Legacy/RRO, але, враховуючи мої власні висновки та висновки Maxr1998, можна з упевненістю сказати, що Можливо, Google нарешті готується представити тематику RRO масам.

Звичайно, немає жодної гарантії, що ця функція не буде видалена в одній із пізніших збірок Android O. Цілком можливо, що Google вирішить, що RRO працює не так, як їм хочеться, і відмовиться від цієї функції. Однак, враховуючи велику історію RRO як у Sony, так і в нашій власній спільноті розробників, багато хто з нас уже знайомі з величчю Sony Runtime Resource Overlay. І оскільки вже є маса тем, сумісних із RRO, якщо Google колись вирішить дозволити нам встановити користувальницькі теми, вони відкриють шлюзи для вже широкого ринку доступних тем для користувачів.


Автори зображення: SonyDevWorld