Sungstratum из команды [projekt.] переносит все темы RRO-OMS на устройства Samsung Nougat через Substratum! Читайте дальше, чтобы узнать больше!
Темы Android прошли долгий путь: от хакерских правок до Substratum, а теперь и Сунгстратум. Несколько лет назад слово «тема» в обсуждениях Android часто заменялось словом «выборщик», намеком на инструмент выбора темы T-Mobile, найденный в CyanogenMod, который заложил основы, сделавшие Android темером рай. Возможность изменять внешний вид ОС предоставила пользователям еще одно измерение настройки, позволив им вносить изменения, которые делают их устройства более персонализированными.
Хорошая работа продолжалась в двух разных направлениях. Средство выбора темы превратилось в движок тем CyanogenMod, но, несмотря на годы усилий, вложенных в ресурсы по темированию, CMTE устарел. когда появились другие альтернативы.
RRO и слои
Фундамент одной из альтернатив был заложен, когда Sony представила код в виде новой платформы под названием Наложение ресурсов времени выполнения (RRO)
был принят в состав AOSP. Эта платформа предоставляет возможность заменять ресурсы приложения во время выполнения (отсюда и название). «Оверлеи» сами по себе присутствовали и поддерживались в Android еще в Gingerbread (и возможно, и раньше), используемый в первую очередь для замены ресурсов, чтобы приложения работали на этом конкретном устройство. Подход Sony к RRO заключался в изменении менеджера ресурсов, чтобы он принимал APK-файлы, которые использовали ресурсы, сопоставленные с другими соответствующими ресурсами, существующими на устройстве. Эти новые ресурсы из apk затем накладывались поверх базовых ресурсов только во время выполнения, позволяя системе работать так, как если бы эти новые ресурсы всегда были ее частью.Платформа RRO была объединена с AOSP до того, как Lollipop 5.0 был обнародован, но в первых нескольких сборках 5.0 части структуры были нарушены из-за других изменений. Предварительные версии Android 6.0 Marshmallow были первыми, в которых была добавлена функциональная, хотя и ограниченная структура RRO., открывая возможности настройки прямо на стандартном уровне Android. Поэтому, если OEM-производитель намеренно не попытается отойти от стандартных вариантов тем Android, определенный уровень последовательности можно было бы сохранить в подходе к тому, как «темы» будут реализованы в Андроид.
Пока AOSP экспериментировала с RRO и искала лучший способ объединить все это, команда разработчиков позвонила БитСико вместе работали над коллективным проектом под названием «Слои". Слои расширили стандартную функциональность RRO в Android 5.1 Lollipop, чтобы обеспечить более сложное переключение ресурсов и предоставить больше элементов управления темами, чем это возможно со стандартным RRO. Поскольку Layers построен на основе RRO, производителям ПЗУ необходимо было добавить дополнительный код, чтобы включить функциональность Layers в своих ПЗУ, поскольку не все темы Layers будут работать со стандартным RRO в Marshmallow.
Тем временем Sony продолжала предпринимать собственные усилия по созданию тем для Android. Он начал работать над OMS (служба диспетчера наложений), клиент для управления наложениями, который позволит провайдерам динамически контролировать приоритеты, а также включать и отключать наложения. OMS объединяется с AOSP и появится в Android O. Признанный разработчик XDA Николашум смог подтвердить через свои источники, что Android O будет иметь «динамические оверлеи», что, как полагают, является отсылкой к OMS.
OMS вызывала конфликты со Layers, поскольку традиционно такие функции находились под контролем темера. Чтобы решить проблемы, возникшие из-за OMS, а также расширить функциональность Layers, BitSyko снова объединились (и переименовали себя в [проект.]) создавать Субстрат. Substratum — клиент с функционалом OMS. который пытается согласовать функциональность слоев с OMS, а также заимствует другие элементы из других прошлых решений по темированию. Наложения больше не накладывались друг на друга для оформления отдельных элементов, поскольку теперь все необходимые элементы были помещены в одно наложение. Такие функции, как компиляция на устройстве, позволяют применять темы без перезагрузки между изменениями, что делает его существенно конечным пользователям легче опробовать темы и поэкспериментировать. Substratum находится в активной разработке с момента его создания, и в нем перечислены все его функции и возможности. добавленная функциональность выходит за рамки этой статьи, поэтому мы перейдем к реальной теме этой статьи. кусок.
Субстрат в сунгстрат
Как объяснялось в предыдущем разделе, 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 простирается RRO, найденный в AOSP. Samsung также воссоздала свою собственную внутреннюю версию OMS после расширения RRO, поэтому их реализации как RRO, так и OMS отличаются от AOSP. Но, что удивительно, не так уж и много — аномальное поведение, если принять во внимание своеобразие и сложность Touchwiz. Темеры, использующие новые флагманы Samsung, сообщили, что они могут устанавливать наложения RRO и использовать их в качестве тем для сторонних приложений.
Это был сигнал, что команде [projekt.] необходимо изучить возможность официальной поддержки устройств Samsung на Substratum. Команда преобразовала небольшой объем кода из раздела RRO/Legacy своего приложения, но вместо запросив root и попросив перезагрузиться, они запустили конкретные интенты, чтобы оверлеи установились. Затем команда работала над тем, чтобы приложения, затронутые этими темами, были принудительно закрыты в фоновом режиме, чтобы обеспечить полное обновление ресурсов при следующем запуске.
Мы спросили признанного разработчика XDA Николашум чтобы предоставить нам некоторое представление о проблемах, с которыми столкнулась команда при работе с реализацией RRO-OMS от Samsung с закрытым исходным кодом:
Проблемы, с которыми мы столкнулись, были довольно неясными и неизвестными многим, не обладающим большими знаниями. понимание систем темирования, как с открытым, так и с закрытым исходным кодом — для всего есть своя пробная версия и Фаза ошибки. В этом случае, работая с Samsung, я наткнулся на множество проблем, но главная из них — несовпадение намерений системы. запускается для наложений после завершения установки - например, при использовании приемников вещания с «android.intent.action. PACKAGE_ADDED» — служба тем запрещает все, что не является частью системной подписи конкретного Samsung. разрешение службы тем от получения этого, поэтому самое сложное — это обходные пути, которые нам пришлось найти вокруг.
Мы используем Substratum вместе с Theme Engine от Samsung, используя ту же систему, что и они. Они используют сильно модифицированную версию системы Resource Runtime Overlay от Sony, сокращенно RRO или известную среди пользователей Substratum как устаревшая. Однако отличие заключается в том, что темы Samsung имеют дополнительное разрешение, которое скрывает эти наложения из настроек, поэтому вы не можете удалить их по одному вручную. Мы используем ту же систему, однако используем реализацию AOSP/Sony, поэтому Samsung Themes может полностью использовать тематическую структуру, в то время как Наложения субстрата не могут касаться несуществующей цели-посредника, «черт возьми» — поскольку мы все знаем, что фреймворк — это просто пакет «android». имя.
Казалось странным, что [projekt.] смог относительно легко работать вместе с реализацией RRO от Samsung. Любой, кто когда-либо работал с устройствами Samsung, может подтвердить, насколько сложно Samsung часто все усложняет. Мы запросили любой конкретный блок, с которым команда столкнулась во время порта:
Действительно, существует какой-то механизм безопасности, который затронул некоторых пользователей: наложения сбрасываются при запуске. Это связано с тем, как Samsung загружает свое устройство. Поскольку в TouchWiz/Samsung Experience в основном все используют версию 7.0, мы используем новый метод «Оптимизации приложений» (вы можете увидеть это при обновлении телефона, это отобразится уведомление со значком Android Nougat, сообщающее, что обновление происходит в фоновом режиме), поэтому этот способ оптимизации приложений также выгружает цель пакетов, что в конечном итоге нарушает процесс сопоставления идентификаторов при загрузке (из-за того, что целевой пакет не существует) и, таким образом, у некоторых людей возникает оверлейная выгрузка после перезагрузить.
Вы также можете увидеть, как это происходит с некоторыми темами Samsung, особенно с темой Dark/Black от @envy~. делает цвет панели навигации по умолчанию в разделе «Дисплей» -> «Панель навигации» черным, где фактический цвет по умолчанию равен белый. После установки черного цвета вы сможете открыть клавиатуру, и панель навигации останется черной. Это будет возвращаться случайным образом при перезагрузке на многих устройствах.
Поскольку тематика снова обретает свою известность, какие планы у Substratum на будущее в отношении побочных ветвей, таких как Sungstratum?
В будущем мы добавим небольшое приложение в наше дополнение для наших нынешних пользователей, чтобы они иметь возможность остановить службу тем Samsung, если все темы, установленные на их устройствах, установлены из XDA. Таким образом, люди, которые будут использовать темы от XDA в формате темы Samsung, смогут использовать дополнение для предотвращения Служба Samsung не возвращает стандартную тему после каждой перезагрузки (поскольку она не была установлена из магазина Samsung). официально). Для этого потребуется бесплатный ключ разработчика Samsung, который можно получить на их сайте, но он будет предварительно включен в загрузку дополнения sungstratum.
Учитывая недавние и предстоящие изменения в AOSP и Android O, похоже, что в некогда молодой ОС Google будет передано пользователю еще больше персонализации. Некоторые OEM-производители даже планируют избавиться от своих пользовательских интерфейсов и UX-дополнений. в пользу AOSP, а другие, такие как Samsung, достаточно близки со своими собственными тематическими решениями. Мы предвидим будущее, в котором темы будут играть важную роль в пользовательском опыте еще большего числа людей — ОС где вы по-настоящему контролируете внешний вид своего устройства, где эстетика пользовательского интерфейса адаптируется под вас ты. И мы не смогли бы достичь такого будущего без коллективной силы этого замечательного сообщества и таких проектов, как Substratum.
Ознакомьтесь с интеграцией Substratum для Samsung Nougat на наших форумах Substratum!Субстрат на GitHub