Proč aktualizace aplikací někdy porušují témata substrátu

click fraud protection

Motivy substrátu jsou často nepříznivě ovlivněny četností aktualizací aplikací třetích stran, zvláště když se motivy musí přizpůsobit špatně kódovaným

Je to běžný jev: uživatelé aplikují témata Substratum do svých telefonů a později aktualizují Slack, WhatsApp, Instagram nebo libovolný počet dalších aplikací z Obchodu Play. Najednou nemohou tyto aplikace ani otevřít, dokud nebudou deaktivovány jejich překryvné motivy. Mnoho novějších uživatelů Substratum vyjádřilo své zkušenosti s tímto problémem již od vydání Bezkořenový motiv substrátu pro Android Oreo.

Někdy přebudování překryvů v Substratum problém vyřeší, ale někdy to nebude fungovat, dokud vývojář motivu téma znovu neaktualizuje. V druhém případě uživatelé uvízli v nutnosti používat postižené aplikace v jejich netematizovaných skladových stavech. Netřeba dodávat, že to může být pro mnohé frustrující zkušenost.

Problém je obvykle výsledkem kombinace faktorů: špatně kódovaná aplikace třetí strany, časté aktualizace uvedené aplikace, které ve skutečnosti způsobují více problémů, než opravují, a omezení ve službě Overlay Manager Service (OMS) rámec. Mluvil jsem s několika známými tématy, kteří poskytli cenné poznatky o problému:

Jeremy Beck, kdo vyrábí Spektrum Substrátové téma a David Wilson z Nadvláda sláva.

Podle těchto oddaných Substratum patří jedni z nejhorších pachatelů v oblasti špatně kódovaných aplikací mezi nejoblíbenější. WhatsApp, Instagram, Slack, Facebook a Telegram jsou příklady, které nám tyto motivy Substratum citovaly při popisování tohoto problému. Ve skutečnosti David řekl, že jde o příklady „strašně, nechutně, opovrženíhodně kódovaných“ aplikací, což barvitě ilustruje frustrace, které vývojáři témat Substratum čelí, když udržují své uživatele spokojené, když se snaží sjednotit své prostředí Android kolem společné téma.

Například „opovrženíhodně kódovaná“ aplikace může spojit barvu textu s barvou pozadí ve svém souboru colors.xml. Pokud motiv změní barvu pozadí tak, aby v tomto příkladu již nebyla bílá, text se také změní a mohl by být obtížnější (nebo dokonce nemožný) čitelný. V důsledku toho bude muset themer přidat své vlastní soubory XML rozvržení do svých překryvných témat, aby určil samostatné barvy pro text a pozadí.

Upozornění je, že nové soubory xml musí také obsahovat každý jednotlivý znak kódu ze stejnojmenných souborů původní aplikace takže žádná funkce není ztracena. Je to proto, že OMS čte z náhradního souboru tématu, zatímco samotná aplikace se snaží udělat vše, co původní soubor umožňoval. Když je aplikace aktualizována a je provedena i sebemenší nesouvisející změna do původních xml souborů, překryvy nebudou fungovat.

David to vysvětluje takto:

Co tito směšní „vývojáři“ (tento výraz používám volně, když popisuji tyto klauny) dělají, je, že používají položky v rozvržení xmls, které nám ztěžují správné téma aplikace bez přidání těchto rozvržení xml do naší překryvné vrstvy.

Abychom vám dali příklad, vezměme si WhatsApp a podívejme se na položku v jejich /res/values/colors.xml, což je #ffffffff

V celé své aplikaci používají @color/white pro barvy textu i barvy pozadí. To znamená, že pokud chce motiv změnit barvu „bílé“ na něco tmavého, aby jeho pozadí bylo tmavé, pak ztmavne i mnoho textu, což je velmi špatné.

Aby se tento nedostatek vyřešil, přidají motivy do své překryvné vrstvy XML rozvržení a změní barvu textu nebo barvu pozadí nebo obojí z být něco jako android: background="@color/white" až něco jako android: background="@*android: color/background_dark", aby bylo pozadí tmavé.

Nyní je to skvělé a pozadí je tmavé, ale rozvržení xml musí obsahovat vše, co má původní rozvržení xml, což se může lišit od několika řádků po více než 100 řádků. V těchto řádcích xml rozvržení může být spousta různých zdrojů, které jsou umístěny v původním kódu aplikace, které jsou volány, jako jsou id, dimens, řetězce, styly atd.

Tady je teď problém... pokud téma vytvoří překrytí, aby vyhovovalo WhatsApp 2.17.323 a aktualizace WhatsApp na 2.17.351 (například), pokud se WhatsApp ve své nekonečné moudrosti rozhodne změnit řekněme název řetězce, který byl v překrytí vytvořeném pro 2.17.323 a tento řetězec již v 2.17.351 neexistuje, překrytí nebude úspěšně stavět.

Totéž platí pro cokoli v překryvné vrstvě, která je v jakémkoli kódu, který volá zdroj, který je v aplikaci, pokud byl tento konkrétní zdroj v aplikaci, pro kterou bylo překrytí navrženo, a poté se aplikace aktualizuje a prostředek již není v kódu aplikace, překryv se nezkompiluje.

Toto je jen jeden příklad hry kočky a myši s střídavými aktualizacemi aplikací a témat, kterým čelí motivy Substratum. Když motivy podporují velké množství aplikací třetích stran, musí tuto hru s každou aktualizací motivu několikrát znásobit. Je to nekonečný cyklus sledování mnoha podporovaných aplikací a doufání, že frustrovaní uživatelé nebudou mezi aktualizacemi hodnotit svá témata špatně. protože Slack (další příklad) prosadil tři aktualizace své aplikace během dvou týdnů od poslední aktualizace jejich oblíbeného produktu podporujícího Slack téma.

co s tím můžete dělat?

Osobně obvykle čekám na aktualizovat na moje oblíbená témata, než aktualizuji aplikace, které používám které jsou tématické. To znamená, že ne každý motiv má čas neustále posílat aktualizace, aby držel krok s těmito aktualizacemi aplikací, takže se vaše kilometry mohou lišit. Pokud opravdu nemůžete vydržet používání aplikace v jejím netematizovaném stavu, možná pro vás čekání několik hodin nebo dní není tak velký problém. Pokud se však jedná o porušení dohody, možná budete chtít používat pouze tematické systémové aplikace, které se pravděpodobně v dohledné době nezmění (jako je SystemUI nebo Android Framework).

Uvědomte si, že problém není způsoben samotným Substratem nebo tématy Substratum, a neobviňujte prosím vývojáře motivu, když se něco pokazí. To je důvod, proč tematické moduly na verzích OEM Androidu, jako je EMUI, Samsung Experience nebo LG UX, neumožňují motivovat více než systémové aplikace a samotné uživatelské rozhraní systému. Chcete-li si užít úroveň přizpůsobení, kterou Substratum nabízí, kompromisem je, že možná budete muset chvíli počkat, abyste si užili nejnovější aktualizaci aplikace.