Prečo aktualizácie aplikácií niekedy porušujú témy substrátu

click fraud protection

Témy substrátu sú často nepriaznivo ovplyvnené frekvenciou aktualizácií aplikácií tretích strán, najmä ak sa motívy musia prispôsobiť zle kódovaným

Je to bežný jav: používatelia používajú témy Substratum do svojich telefónov a neskôr aktualizujú Slack, WhatsApp, Instagram alebo ľubovoľný počet ďalších aplikácií z Obchodu Play. Zrazu nemôžu tieto aplikácie ani otvárať, kým sa ich prekrytia tém nezakážu. Mnoho novších používateľov Substratum vyjadrilo svoje skúsenosti s týmto problémom už od vydania Tematika substrátu rootless pre Android Oreo.

Niekedy problém vyrieši prestavba prekrytí v Substratum, ale niekedy to nebude fungovať, kým vývojár témy tému znova neaktualizuje. V druhom prípade používatelia uviazli v tom, že musia používať dotknuté aplikácie v ich netematizovaných skladových stavoch. Netreba dodávať, že to môže byť pre mnohých frustrujúca skúsenosť.

Problém je zvyčajne výsledkom kombinácie faktorov: zle kódovaná aplikácia tretej strany, časté aktualizácie uvedené aplikácie, ktoré v skutočnosti spôsobujú viac problémov, než opravujú, a obmedzenia v službe Overlay Manager Service (OMS) rámec. Hovoril som s niekoľkými známymi témami, ktorí poskytli cenné informácie o tejto problematike:

Jeremy Beck, kto robí Spektrum Substrátová téma a David Wilson z Nadvláda slávu.

Podľa týchto oddaných Substratum patria niektorí z najhorších páchateľov v oblasti zle kódovaných aplikácií medzi najobľúbenejšie. WhatsApp, Instagram, Slack, Facebook a Telegram sú príklady, ktoré nám tieto témy Substratum uviedli pri opise tohto problému. V skutočnosti David povedal, že ide o príklady „strašne, nechutne, opovrhnutiahodne kódovaných“ aplikácií, čo farebne ilustruje frustrácia, s ktorou sa vývojári tém Substratum stretávajú, keď udržiavajú svojich používateľov spokojných, keď sa snažia zjednotiť svoje skúsenosti so systémom Android okolo spoločná téma.

Napríklad „ohavne kódovaná“ aplikácia môže prepojiť farbu textu s farbou pozadia vo svojom súbore colors.xml. Ak téma zmení farbu pozadia tak, aby v tomto príklade už nebola biela, text sa tiež zmení a môže byť ťažšie (alebo dokonca nemožné) čítať. V dôsledku toho bude musieť téma pridať svoje vlastné súbory xml s rozložením do svojich prekrytí tém, aby určil samostatné farby pre text a pozadie.

Výhradou je, že nové xml súbory musia tiež obsahovať každý jeden znak kódu zo súborov pôvodnej aplikácie s rovnakým názvom takže sa nestratí žiadna funkčnosť. Je to preto, že OMS číta z náhradného súboru témy, zatiaľ čo samotná aplikácia sa snaží urobiť všetko, čo pôvodný súbor umožňoval. Keď je aplikácia aktualizovaná a dôjde aj k najmenšej nesúvisiacej zmene do pôvodných xml súborov, prekrytia nebudú fungovať.

David to vysvetľuje takto:

Čo títo smiešni „vývojári“ (tento výraz používam voľne, keď popisujem týchto klaunov) robia, je, že používajú položky v rozloženie xmls, ktoré nám sťažujú správnu tému aplikácie bez pridania týchto rozloženia xml do nášho prekrytia.

Aby sme vám dali príklad, zoberme si WhatsApp a pozrime sa na položku v ich /res/values/colors.xml, čo je #ffffffff

Používajú @color/white pre farby textu aj farby pozadia v celej svojej aplikácii. To znamená, že ak chce téma zmeniť farbu „bielej“ na tmavú, aby jej pozadie bolo tmavé, potom stmaví aj veľa textu, čo je veľmi zlé.

Na vyriešenie tohto nedostatku pridajú motívy rozloženie xmls do svojho prekrytia a zmenia buď farbu textu alebo farbu pozadia alebo oboje z byť niečo ako android: background="@color/white" až po niečo ako android: background="@*android: color/background_dark", aby bolo pozadie tmavé.

Teraz je to skvelé a pozadie je tmavé, ale rozloženie xml musí obsahovať všetko, čo má pôvodné rozloženie xml, čo sa môže líšiť od niekoľkých riadkov po viac ako 100 riadkov. V rámci týchto riadkov rozloženia xml môže byť veľa rôznych zdrojov, ktoré sa nachádzajú v pôvodnom kóde aplikácie, ktoré sa vyvolávajú, ako sú ID, dimenzie, reťazce, štýly atď.

Teraz je tu problém... ak téma vytvorí prekrytie tak, aby vyhovovalo WhatsApp 2.17.323 a WhatsApp sa aktualizuje na 2.17.351 (napríklad), ak sa WhatsApp vo svojej nekonečnej múdrosti rozhodne zmeniť povedzme názov reťazca, ktorý bol v prekrytí vytvorenom pre 2.17.323 a tento reťazec už v 2.17.351 neexistuje, potom prekrytie nebude úspešné stavať.

To isté platí pre čokoľvek v rámci prekrytia, ktoré je v akomkoľvek kóde, ktorý volá zdroj nachádzajúci sa v aplikácii, ak bol tento konkrétny zdroj v aplikácii, pre ktorú bolo prekrytie navrhnuté, a potom sa aplikácia aktualizuje a zdroj už nie je v kóde aplikácie, potom sa prekrytie nezkompiluje.

Toto je len jeden príklad hry na mačku a myš so striedaním aktualizácií aplikácií a tém, ktorým čelia témy Substratum. Keď motívy podporujú veľké množstvo aplikácií tretích strán, musia túto hru pri každej aktualizácii témy niekoľkokrát znásobiť. Je to nekonečný cyklus udržiavania kroku s viacerými podporovanými aplikáciami a dúfania, že frustrovaní používatelia nebudú medzi aktualizáciami hodnotiť svoje témy zle. pretože Slack (iný príklad) vydal tri aktualizácie svojej aplikácie za dva týždne od poslednej aktualizácie ich obľúbenej aplikácie podporujúcej Slack tému.

Čo s tým môžete urobiť?

Osobne zvyčajne čakám na an aktualizovať na moje obľúbené témy pred aktualizáciou aplikácií, ktoré používam ktoré sú tematické. To znamená, že nie každý motív má čas neustále tlačiť aktualizácie, aby držal krok s týmito aktualizáciami aplikácií, takže váš počet najazdených kilometrov sa môže líšiť. Ak naozaj nemôžete vydržať používanie aplikácie v jej netematizovanom stave, potom čakanie niekoľko hodín alebo dní pre vás nie je až taký problém. Ak však ide o prelomenie obchodov, možno budete chcieť použiť iba tematické systémové aplikácie, ktoré sa pravdepodobne v blízkej dobe nezmenia (napríklad SystemUI alebo Android Framework).

Uvedomte si, že problém nie je spôsobený samotným Substratum alebo témami Substratum a neobviňujte vývojára témy, keď sa niečo pokazí. To je dôvod, prečo vám tematické moduly v OEM verziách Androidu, ako sú EMUI, Samsung Experience alebo LG UX, neumožňujú viac motívov ako systémové aplikácie a samotné používateľské rozhranie systému. Aby ste si užili úroveň prispôsobenia, ktorú Substratum ponúka, kompromisom je, že možno budete musieť chvíľu počkať, kým si vychutnáte najnovšiu aktualizáciu aplikácie.