Les thèmes de substrat sont souvent affectés par la fréquence des mises à jour des applications tierces, en particulier lorsque les créateurs doivent s'adapter à des applications mal codées.
C'est un phénomène courant: les utilisateurs appliquent des thèmes Substratum à leur téléphone, puis mettent ensuite à jour Slack, WhatsApp, Instagram ou un certain nombre d'autres applications du Play Store. Du coup, ils ne peuvent même plus ouvrir ces applications tant que leurs superpositions de thèmes ne sont pas désactivées. De nombreux nouveaux utilisateurs de Substratum ont exprimé leurs expériences avec ce problème depuis la sortie de Thématisation du substrat sans racines pour Android Oreo.
Parfois, la reconstruction des superpositions dans Substratum résout le problème, mais parfois cela ne fonctionnera pas jusqu'à ce que le développeur du thème mette à nouveau le thème à jour. Dans ce dernier cas, les utilisateurs sont obligés d’utiliser les applications concernées dans leur état de stock sans thème. Inutile de dire que cela peut être une expérience frustrante pour beaucoup.
Le problème est généralement le résultat d'une combinaison de facteurs: une application tierce mal codée, des mises à jour fréquentes de ces applications causent en réalité plus de problèmes qu'elles n'en résolvent, ainsi que les limitations du service Overlay Manager (OMS) cadre. J'ai parlé avec quelques thèmes bien connus qui ont fourni des informations précieuses sur le problème: Jérémie Beck, qui fait le Spectre Thème du substrat, et David Wilson de Domination notoriété.
Selon ces piliers de Substratum, certains des pires contrevenants dans le domaine des applications mal codées sont parmi les plus populaires. WhatsApp, Instagram, Slack, Facebook et Telegram sont des exemples que ces thèmes de Substratum nous ont cités en racontant ce problème. En fait, David a déclaré qu'il s'agissait d'exemples d'applications « horriblement, dégoûtantes et méprisablement codées », ce qui illustre de manière colorée le frustration à laquelle les développeurs de thèmes Substratum sont confrontés lorsqu'ils satisfont leurs utilisateurs alors qu'ils tentent d'unifier leurs expériences Android autour d'un thème commun.
Par exemple, une application « codée de manière méprisable » peut lier la couleur du texte à la couleur d’arrière-plan dans son fichier colours.xml. Si un thème change la couleur d'arrière-plan pour qu'elle ne soit plus blanche dans cet exemple, le texte sera également modifié et pourrait être rendu plus difficile (voire impossible) à lire. Par conséquent, le thème devra ajouter ses propres fichiers XML de mise en page à ses superpositions de thème pour spécifier des couleurs distinctes pour le texte et l'arrière-plan.
La mise en garde est que les nouveaux fichiers XML doivent également inclure chaque caractère de code des fichiers de l'application d'origine du même nom donc aucune fonctionnalité n'est perdue. En effet, OMS lit à partir du fichier de remplacement du themer tandis que l'application elle-même essaie de faire tout ce que le fichier d'origine permettait. Lorsque l'application est mise à jour et même le moindre changement sans rapport est apporté aux fichiers XML d'origine, les superpositions ne fonctionneront pas.
Voici comment David l'explique :
Ce que font ces "développeurs" ridicules (j'utilise ce terme de manière vague pour décrire ces clowns), c'est qu'ils utilisent des éléments dans des fichiers XML de mise en page qui nous empêchent de thématiser correctement l'application sans ajouter ces fichiers XML de mise en page dans notre superposition.
Pour vous donner un exemple, prenons WhatsApp et examinons un élément dans leur /res/values/colors.xml qui est
#ffffffff Ils utilisent @color/white pour les couleurs du texte et les couleurs d'arrière-plan tout au long de leur application. Cela signifie que si un thème souhaite changer la couleur du "blanc" en quelque chose de sombre pour assombrir son arrière-plan, cela rendra également beaucoup de texte sombre, ce qui est très mauvais.
Pour contourner cette lacune, les auteurs ajouteront les fichiers XML de mise en page dans leur superposition et modifieront soit la couleur du texte, soit la couleur d'arrière-plan, ou les deux. étant quelque chose comme android: background="@color/white" à quelque chose comme android: background="@*android: color/background_dark" pour assombrir l'arrière-plan.
Maintenant, c'est génial et rend l'arrière-plan sombre, mais le XML de mise en page doit inclure tout ce que contient le XML de mise en page d'origine, ce qui peut varier de quelques lignes à plus de 100 lignes. Dans ces lignes du XML de mise en page, il peut y avoir de nombreuses ressources différentes qui résident dans le code d'origine de l'application et qui sont appelées, telles que les identifiants, les dimensions, les chaînes, les styles, etc.
Maintenant, c'est là que réside le problème... si un thème crée une superposition adaptée à WhatsApp 2.17.323 et aux mises à jour de WhatsApp vers 2.17.351 (par exemple), alors si WhatsApp, dans son infinie sagesse, décide de changer le nom, par exemple, d'une chaîne qui était dans la superposition créée pour 2.17.323 et que cette chaîne n'existe plus dans 2.17.351, alors la superposition ne réussira pas construire.
Il en va de même pour tout ce qui se trouve dans la superposition et dans tout code appelant une ressource située dans l'application, si cette ressource particulière était dans l'application pour laquelle la superposition a été conçue, puis l'application est mise à jour et la ressource n'est plus dans le code de l'application, la superposition ne sera pas compilée.
Ceci n’est qu’un exemple du jeu du chat et de la souris consistant à alterner les mises à jour d’applications et de thèmes auquel les utilisateurs de Substratum sont confrontés. Lorsque les thèmeurs prennent en charge un grand nombre d’applications tierces, ils doivent multiplier ce jeu plusieurs fois à chaque mise à jour du thème. C'est un cycle sans fin consistant à suivre plusieurs applications prises en charge et à espérer que les utilisateurs frustrés n'évaluent pas mal leurs thèmes entre les mises à jour. parce que Slack (pour un autre exemple) a publié trois mises à jour de son application au cours des deux semaines écoulées depuis la dernière mise à jour de son support Slack préféré. thème.
Que peux-tu y faire?
Personnellement, j'attends habituellement un mettre à jour mes thèmes préférés avant de mettre à jour les applications que j'utilise qui sont thématiques. Cela dit, tous les thèmes n'ont pas le temps de publier constamment des mises à jour pour suivre ces mises à jour d'applications, votre kilométrage peut donc varier. Si vous ne supportez vraiment pas d'utiliser une application dans son état sans thème, alors peut-être qu'attendre quelques heures ou quelques jours n'est pas si grave pour vous. S'il s'agit d'un facteur décisif, vous souhaiterez peut-être uniquement thématiser les applications système qui ne risquent pas de changer de sitôt (telles que SystemUI ou Android Framework).
Reconnaissez simplement que le problème n'est pas dû au Substratum lui-même ou aux thèmes Substratum, et ne blâmez pas le développeur du thème en cas de problème. C'est la raison pour laquelle les moteurs de thème sur les versions OEM d'Android telles que EMUI, Samsung Experience ou LG UX ne vous permettent pas de créer plus de thèmes que les applications système et l'interface utilisateur du système elle-même. Pour profiter du niveau de personnalisation offert par Substratum, le compromis est que vous devrez peut-être attendre un peu pour profiter de la dernière mise à jour de l'application.