Zakaj posodobitve aplikacij včasih pokvarijo substratne teme

Na substratne teme pogosto negativno vpliva pogostost posodabljanja aplikacij tretjih oseb, zlasti ko se morajo uporabniki tem prilagajati slabo kodiranim

To je pogost pojav: uporabniki uporabijo teme Substratum v svojih telefonih, nato pa pozneje posodobijo Slack, WhatsApp, Instagram ali poljubno število drugih aplikacij iz Trgovine Play. Nenadoma ne morejo niti odpreti teh aplikacij, dokler niso onemogočene njihove prekrivne teme. Veliko novejših uporabnikov Substratuma je izrazilo svoje izkušnje s to težavo vse od izdaje Brezkorenska tema Substratum za Android Oreo.

Včasih ponovna izdelava prekrivk v Substratumu odpravi težavo, včasih pa ne deluje, dokler razvijalec teme znova ne posodobi teme. V slednjem primeru so uporabniki obtičali in morali prizadete aplikacije uporabljati v njihovem netematiziranem stanju na zalogi. Ni treba posebej poudarjati, da je to za mnoge lahko frustrirajoča izkušnja.

Težava je običajno posledica kombinacije dejavnikov: slabo kodirana aplikacija tretje osebe, pogoste posodobitve omenjene aplikacije, ki dejansko povzročajo več težav, kot jih odpravijo, in omejitve v storitvi Overlay Manager Service (OMS) ogrodje. Govoril sem z nekaj znanimi tematičarji, ki so zagotovili nekaj dragocenih vpogledov v to težavo:

Jeremy Beck, ki izdeluje Spekter Substratna tema in David Wilson od Dominacija slava.

Po mnenju teh privržencev Substratuma so nekateri najhujši prestopniki na področju slabo kodiranih aplikacij med najbolj priljubljenimi. WhatsApp, Instagram, Slack, Facebook in Telegram so primeri, ki so nam jih navedli temerji Substratum, ko so pripovedovali o tej težavi. Pravzaprav je David rekel, da gre za primere "grozljivo, gnusno, zaničljivo kodiranih" aplikacij, ki barvito ponazarjajo frustracija, s katero se srečujejo razvijalci tem Substratum, ko svoje uporabnike osrečujejo, ko poskušajo poenotiti svoje izkušnje s sistemom Android okoli skupna tema.

Na primer, »zaničljivo kodirana« aplikacija lahko poveže barvo besedila z barvo ozadja v svoji datoteki colors.xml. Če tema spremeni barvo ozadja, tako da v tem primeru ni več bela, bo spremenjeno tudi besedilo in ga bo morda težje (ali celo nemogoče) brati. Posledično bo moral udeleženec teme dodati lastne datoteke xml postavitve v svoje prekrivne teme, da določi ločene barve za besedilo in ozadje.

Opozorilo je, da morajo nove datoteke xml vključevati tudi vsak posamezen znak kode iz istoimenskih datotek izvirne aplikacije zato nobena funkcionalnost ni izgubljena. To je zato, ker OMS bere iz nadomestne datoteke themer, medtem ko sama aplikacija poskuša narediti vse, kar je dovoljevala izvirna datoteka. Ko je aplikacija posodobljena in tudi najmanjša nepovezana sprememba v izvirne datoteke xml, prekrivanja ne bodo delovala.

Evo, kako to razlaga David:

Ti smešni "razvijalci" (ta izraz ohlapno uporabljam, ko opisujem te klovne) počnejo to, da uporabljajo predmete v xml-ji postavitve, zaradi česar je težko pravilno tematizirati aplikacijo, ne da bi te xml-je postavitve dodali v našo prosojnico.

Če vam dam primer, vzemimo WhatsApp in poglejmo element v njihovem /res/values/colors.xml, ki je #ffffffff

Uporabljajo @color/white za barve besedila in barve ozadja v celotni aplikaciji. To pomeni, da če želi temer spremeniti barvo "bele" v nekaj temnega, da bo njegovo ozadje temno, potem bo tudi veliko besedila temno, kar je zelo slabo.

Da bi se izognili tej pomanjkljivosti, bodo avtorji tem dodali xml postavitve v svoje prekrivanje in spremenili barvo besedila ali barvo ozadja ali oboje iz biti nekaj podobnega android: background="@color/white" do nečesa podobnega android: background="@*android: color/background_dark", da postane ozadje temno.

To je super in naredi ozadje temno, vendar mora xml postavitve vključevati vse, kar ima originalna postavitev xml, ki se lahko razlikuje od nekaj vrstic do več kot 100 vrstic. Znotraj teh vrstic postavitve xml je lahko veliko različnih virov, ki se nahajajo znotraj izvirne kode aplikacije, ki se kliče, kot so ID-ji, dimenzije, nizi, slogi itd.

Zdaj je tukaj problem... če udeleženec teme naredi prekrivanje, ki ustreza WhatsApp 2.17.323 in WhatsApp posodobi na 2.17.351 (na primer), potem če se WhatsApp v svoji neskončni modrosti odloči spremeniti ime recimo niza, ki je bil v prekrivanju, narejenem za 2.17.323 in ta niz ne obstaja več v 2.17.351, potem prekrivanje ne bo uspešno graditi.

Enako velja za karkoli znotraj prekrivke, ki je v kateri koli kodi, ki kliče vir, ki je znotraj aplikacije, če je bil ta določen vir v aplikaciji, za katero je bila zasnovana prekrivka, nato pa se aplikacija posodobi in vir ni več v kodi aplikacije, potem se prekrivka ne bo prevedla.

To je samo en primer igre mačke z mišjo izmeničnih posodobitev aplikacij in tem, s katerimi se soočajo uporabniki Substratuma. Ko uporabniki teme podpirajo veliko število aplikacij tretjih oseb, morajo to igro večkrat pomnožiti z vsako posodobitvijo teme. To je neskončen cikel spremljanja številnih podprtih aplikacij in upanja, da razočarani uporabniki med posodobitvami ne bodo ocenili svojih tem slabo. ker je Slack (za drug primer) poslal tri posodobitve svoje aplikacije v dveh tednih od zadnje posodobitve njihove priljubljene aplikacije, ki podpira Slack tema.

Kaj lahko storite glede tega?

Osebno ponavadi čakam na posodobi na moje najljubše teme, preden posodobim katero koli aplikacijo, ki jo uporabljam ki so tematski. Kljub temu pa nima vsak temer časa za nenehno pošiljanje posodobitev, da bi bil v koraku s temi posodobitvami aplikacij, zato se lahko vaša kilometrina razlikuje. Če res ne prenesete uporabe aplikacije v njenem netematiziranem stanju, potem morda čakanje nekaj ur ali dni ni tako velik problem za vas. Če pa je to težava, boste morda želeli tematizirati samo sistemske aplikacije, za katere je malo verjetno, da se bodo kmalu spremenile (na primer SystemUI ali Android Framework).

Zavedajte se le, da težava ni zaradi Substratuma samega ali tem Substratuma in ne krivite razvijalca teme, ko gre kaj narobe. To je razlog, zakaj vam tematski mehanizmi v različicah Androida OEM, kot so EMUI, Samsung Experience ali LG UX, ne dovolijo temiziranja več kot sistemskih aplikacij in samega uporabniškega vmesnika sistema. Če želite uživati ​​v ravni prilagajanja, ki jo ponuja Substratum, boste morda morali počakati nekaj časa, da boste uživali v najnovejši posodobitvi aplikacije.