Android Oreo включає підтримку інтерфейсу командного рядка для тем RRO, натякаючи на те, що операційна система наближається до загальносистемної підтримки тем.
Із запуском Android Oreo з’являється багато часу, витраченого на пошук прихованих корисностей у вихідному коді. У минулому команда розробників Android мала говорив про ввімкнення тем в Android O. Ми повідомляли в травні що другий попередній перегляд Android O для розробників міг бути натяком на підтримку Google Overlay Manager Service (OMS) і Runtime Resource Overlay (RRO), але тепер ми точно знаємо, що це так. Android Oreo зараз, технічно, підтримує створення тем OMS/RRO і навіть надає інтерфейс для ввімкнення та вимкнення тем, за умови, що ви можете перенести їх за допомогою командного рядка.
Оновлення: Substratum використовував ці команди з попередніми переглядами для розробників, а тепер і з Oreo, відколи вони були доступні!
Що таке РРО та ОМС?
RRO було розроблено компанією Sony для функціональності теми в лінійці Sony Xperia. Розробники, які визнали його важливість, працювали над розширенням його підтримки на інші ПЗУ, і разом з цим з’явилася тема RRO на багатьох пристроях — не лише на пристроях Sony. Він геніально замінив ресурси під час виконання програми, простота використання, небачена серед інших варіантів оформлення тем на той час. Це перетворилося на OMS, який також був розроблений власною компанією Sony. Знаменитий
Менеджер шарів спочатку використовував тему RRO, але пізніше OMS було адаптовано до того, що тепер відомо як Substratum, і є структурою оформлення тем, найбільш знайомою користувачам на наших форумах. ПЗУ на наших форумах із комітами OMS означають, що вони підтримують стандартний механізм оформлення тем Substratum. «Застарілий режим» у Substratum використовує тематику RRO.Android Oreo представляє команди теми
Схоже, тепер Google хоче повністю підтримувати цей тип теми в AOSP, можливо, перейшовши до повного системного менеджера тем. Останніми місяцями в Android Gerrit компанія Google внесла низку змін (і в Android Oreo), які передбачають кроки для включення механізму створення тем для всієї системи. Зміни наведено нижче з посиланнями на відповідні коміти.
- Команди накладання
- Представлено OverlayManagerService (OMS).
- Новий дозвіл під назвою CHANGE_OVERLAY_PACKAGES
Усі ці зміни означають перехід Google до певної форми системних програм, які будуть включені в майбутньому. Дозвіл, перерахований вище, потребує системних привілеїв, і, таким чином, означає, що лише системна програма (або програма з кореневим доступом) може викликати цей дозвіл. Тим не менш, це цікаво, оскільки це показує, що Google нарешті працює над цим щось.
Так чому тільки технічно чи підтримує Android Oreo створення тем? Що ж, проста відповідь полягає в тому, що хоча ви можете викликати системний метод встановлення тем, робити це було б безглуздо. Це відбувається тому, що навіть якщо ви можете використовувати новий інтерфейс командного рядка для керування встановленими темами, насправді ви не можете встановлюйте нові теми без кореневого доступу, оскільки теми мають перейти до каталогу, доступ до якого обмежено для користувачів простір. З кореневим доступом ви все одно можете просто ввімкнути тему Substratum, тому немає потреби робити це по-новому. Google не включив системну програму для тематізації пристрою, тому до того часу немає ніякої користі намагатися зробити це нещодавно включеним способом.
Тематичний інтерфейс командного рядка
Ми в XDA протестували цю команду на Google Pixel з версією Android Oreo. Ми вирішили перевірити деякі з команд і спочатку використали
cmd overlays list
щоб переглянути всі попередньо встановлені накладки. Ми помітили існування "com.google.android.theme.pixel", вимкнувши його та натомість увімкнувши "android.auto_generated_rro__", виконавши такі команди.
Як можна побачити тут, стандартне накладання вимкнено, а автоматично створене ввімкнено. Запустивши нашу команду для перегляду встановлених накладень ще раз, ми побачимо наступний результат.
Це призводить до нової тематичної програми налаштувань системи Android на нашому Google Pixel. Зауважте, що наведений вище список накладень також включає теми, встановлені за допомогою Substratum, і ми змогли так само легко ввімкнути/вимкнути їх.
Ми також знайшли іншу команду, копаючись у джерелі. Команда така
cmd overlay dump --user 0
дає нам наступний результат.
Вихід
Налаштування
android.auto_generated_rro__: 0 {
mPackageName...: android.auto_generated_rro__
mUserId...: 0
mTargetPackageName.: android
mBaseCodePath...: /vendor/overlay/framework-res__auto_generated_rro.apk
mState...: STATE_ENABLED
mIsEnabled...: правда
mIsStatic...: правда
}
com.google.android.theme.pixel: 0 {
mPackageName...: com.google.android.theme.pixel
mUserId...: 0
mTargetPackageName.: android
mBaseCodePath...: /vendor/overlay/Pixel/PixelThemeOverlay.apk
mState...: STATE_DISABLED
mIsEnabled...: помилка
mIsStatic...: помилка
}
Накладення за замовчуванням: com.google.android.theme.pixel
Кеш PackageInfo
2 упаковки
читати далі
Тож, як видно, Google вклав багато роботи в розробку механізму оформлення тем та його інтеграцію в джерело AOSP. Схоже, якби це було додано для всієї системи, теми будуть увімкнені в тюнері системного інтерфейсу користувача. У Google також є надав інформацію для OEM-виробників, тож можливо, що додаткові OEM-виробники зможуть увімкнути підтримку тем на основі версії AOSP у майбутньому на Android Oreo.
Загалом, це дуже захоплююча подія. Тематизація є однією з багатьох частин, які визначають Android як повністю настроювану операційну систему на вашому телефоні, навіть якщо наразі вона потребує root для загальносистемних тем. У майбутньому, якби він працював без кореневого доступу, це було б великим кроком у напрямку свободи користувачів. Звичайно, він може бути заблокований у тюнері системного інтерфейсу користувача на деякий час (оскільки непрацюючі теми можуть зламати програми), але дозволити користувач навіть скористатись підтримкою нативної теми є величезним доповненням до мобільної роботи система.