На темы Substratum часто отрицательно влияет частота обновлений сторонних приложений, особенно когда темистам приходится адаптироваться к плохо закодированным приложениям.
Это обычное явление: пользователи применяют темы Substratum к своим телефонам, а затем обновляют Slack, WhatsApp, Instagram или любое количество других приложений из Play Store. Внезапно они даже не могут открыть эти приложения, пока их наложения тем не будут отключены. Множество новых пользователей Substratum поделились своим опытом решения этой проблемы с момента выпуска безрутовая тема Substratum для Android Oreo.
Иногда проблема решается пересборкой наложений в Substratum, но иногда это не сработает, пока разработчик темы снова не обновит тему. В последнем случае пользователям приходится использовать затронутые приложения в их стандартных штатных состояниях без темы. Излишне говорить, что для многих это может оказаться разочаровывающим опытом.
Проблема обычно является результатом сочетания факторов: плохо запрограммированное стороннее приложение, частые обновления упомянутые приложения, которые на самом деле вызывают больше проблем, чем решают, а также ограничения в службе Overlay Manager Service (OMS) рамки. Я поговорил с парой известных тем, которые предоставили ценную информацию по этому вопросу:
Джереми Бек, кто делает Спектр Субстратная тема и Дэвид Уилсон из Доминирование слава.По мнению этих приверженцев Substratum, некоторые из самых злостных нарушителей в области плохо написанных приложений являются одними из самых популярных. WhatsApp, Instagram, Slack, Facebook и Telegram — это примеры, которые участники темы Substratum привели нам, рассказывая об этой проблеме. На самом деле, по словам Дэвида, это примеры «ужасно, отвратительно и отвратительно закодированных» приложений, что красочно иллюстрирует Разочарование, с которым сталкиваются разработчики темы Substratum, когда пытаются сделать своих пользователей счастливыми, пытаясь унифицировать свой опыт работы с Android вокруг общая тема.
Например, приложение с «подлым кодом» может связать цвет текста с цветом фона в своем файле «colors.xml». Если в этом примере тематор изменит цвет фона, чтобы он больше не был белым, текст также будет изменен, и его чтение может стать труднее (или даже невозможно). Следовательно, создателю темы придется добавить свои собственные XML-файлы макета в наложения тем, чтобы указать отдельные цвета для текста и фона.
Предостережение заключается в том, что новые XML-файлы также должны включать каждый символ кода из одноименных файлов исходного приложения поэтому никакая функциональность не теряется. Это связано с тем, что OMS читает из замещающего файла темы, в то время как само приложение пытается сделать все, что разрешено исходным файлом. Когда приложение обновится и вносятся даже малейшие несвязанные изменения к исходным файлам XML, наложения не будут работать.
Вот как Дэвид объясняет это:
Что делают эти нелепые «разработчики» (я широко использую этот термин, описывая этих клоунов), так это используют предметы в XML-файлы макета, из-за которых нам сложно правильно оформить тему приложения без добавления этих XML-файлов макета в наш оверлей.
В качестве примера возьмем WhatsApp и посмотрим на элемент в его /res/values/colors.xml, который
#ffffffff Они используют @color/white как для цветов текста, так и для цветов фона во всем своем приложении. Это означает, что если автор темы хочет изменить цвет «белого» на что-то темное, чтобы сделать фон темным, то это также сделает большую часть текста темным, что очень плохо.
Чтобы обойти этот недостаток, разработчики тем добавят XML-файлы макета в свое наложение и изменят либо цвет текста, либо цвет фона, либо и то, и другое. быть чем-то вроде android: background="@color/white" или чем-то вроде android: background="@*android: color/background_dark", чтобы сделать фон темным.
Это здорово и делает фон темным, но XML-макет должен включать в себя все, что есть в исходном XML-макете, что может варьироваться от нескольких строк до более 100 строк. В этих строках XML-макета может находиться множество различных ресурсов, которые находятся внутри исходного кода приложения и вызываются, например идентификаторы, размеры, строки, стили и т. д. и т. п.
Вот в этом и проблема... если создатель темы создает наложение, подходящее для WhatsApp 2.17.323, и WhatsApp обновляется до версии 2.17.351 (например), тогда, если WhatsApp в своей бесконечной мудрости решит изменить имя, скажем, строки, которая была в наложении, созданном для версии 2.17.323, и эта строка больше не существует в версии 2.17.351, тогда наложение не будет успешным строить.
То же самое касается всего, что находится в наложении, в любом коде, вызывающем ресурс, находящийся в приложении, если этот конкретный ресурс был в приложении, для которого было разработано наложение, а затем приложение обновляется, и ресурс больше не находится в коде приложения, тогда наложение не будет скомпилировано.
Это всего лишь один пример игры в кошки-мышки с чередованием обновлений приложений и тем, с которой сталкиваются пользователи Substratum. Когда темеры поддерживают большое количество сторонних приложений, им приходится размножать эту игру в несколько раз при каждом обновлении темы. Это бесконечный цикл работы с множеством поддерживаемых приложений и надежды на то, что разочарованные пользователи не будут плохо оценивать свои темы между обновлениями. потому что Slack (другой пример) выпустил три обновления своего приложения за две недели с момента последнего обновления их любимого приложения, поддерживающего Slack. тема.
Что вы можете с этим поделать?
Лично я обычно жду обновите мои любимые темы, прежде чем обновлять любые приложения, которые я использую которые тематические. Тем не менее, не у каждого темера есть время постоянно выпускать обновления, чтобы не отставать от этих обновлений приложений, поэтому ваш опыт может варьироваться. Если вы действительно терпеть не можете использовать приложение в его нетематическом состоянии, то, возможно, ожидание нескольких часов или дней не так уж и важно для вас. Однако если это является препятствием для сделки, то, возможно, вы захотите использовать темы только для системных приложений, которые вряд ли изменятся в ближайшее время (например, SystemUI или Android Framework).
Просто признайте, что проблема не в самом Substratum или темах Substratum, и, пожалуйста, не вините разработчика темы, если что-то пойдет не так. Вот почему движки тем OEM-версий Android, таких как EMUI, Samsung Experience или LG UX, не позволяют использовать темы для чего-либо большего, чем системные приложения и сам системный пользовательский интерфейс. Чтобы насладиться уровнем настройки, который предлагает Substratum, вам придется немного подождать, чтобы насладиться последним обновлением приложения.