Hvorfor appopdateringer nogle gange bryder undergrundstemaer

click fraud protection

Substratum-temaer er ofte negativt påvirket af hyppigheden af ​​opdateringer til tredjepartsapps, især når temaerne skal tilpasse sig dårligt kodede.

Det er en almindelig hændelse: Brugere anvender Substratum-temaer på deres telefoner og opdaterer senere Slack, WhatsApp, Instagram eller et hvilket som helst antal andre apps fra Play Butik. Pludselig kan de ikke engang åbne disse apps, før deres temaoverlejringer er deaktiveret. Masser af nyere Substratum-brugere har givet udtryk for deres erfaringer med dette problem lige siden udgivelsen af rodløst Substratum-tema til Android Oreo.

Nogle gange løser en genopbygning af overlays i Substratum problemet, men nogle gange virker det ikke, før temaudvikleren opdaterer temaet igen. I sidstnævnte tilfælde sidder brugerne fast ved at skulle bruge de berørte apps i deres ikke-tema, aktiestater. Det er overflødigt at sige, at dette kan være en frustrerende oplevelse for mange.

Problemet er normalt resultatet af en kombination af faktorer: en dårligt kodet tredjepartsapp, hyppige opdateringer til nævnte apps, der faktisk forårsager flere problemer, end de løser, og begrænsninger i Overlay Manager Service (OMS) rammer. Jeg talte med et par velkendte temaer, som gav nogle værdifulde indsigter i problemet:

Jeremy Beck, hvem laver Spektrum Substratum tema, og David Wilson af Dominans berømmelse.

Ifølge disse Substratum-troldmænd er nogle af de værste lovovertrædere i riget af dårligt kodede apps blandt de mest populære. WhatsApp, Instagram, Slack, Facebook og Telegram er eksempler, som disse Substratum-temaer citerede for os, da de fortalte om dette problem. Faktisk sagde David, at de er eksempler på "forfærdeligt, modbydeligt, afskyeligt kodede" apps, som farverigt illustrerer frustration, som udviklere af Substratum-temaer står over for, når de holder deres brugere glade, når de forsøger at forene deres Android-oplevelser omkring en fælles tema.

For eksempel kan en "afskyeligt kodet" app binde tekstfarven til baggrundsfarven i dens colors.xml-fil. Hvis et tema ændrer baggrundsfarven til ikke længere at være hvid i dette eksempel, vil teksten også blive ændret og kan gøres sværere (eller endda umulig) at læse. Som følge heraf skal temaet tilføje deres egne layout-xml-filer til deres temaoverlejringer for at angive separate farver til tekst og baggrund.

Forbeholdet er, at de nye xml-filer også skal indeholde hvert enkelt tegn i kode fra den originale apps filer af samme navn så ingen funktionalitet går tabt. Dette skyldes, at OMS læser fra erstatningen, temaets fil, mens appen selv forsøger at gøre alt, hvad den originale fil tillod. Når appen er opdateret og selv den mindste uafhængige ændring foretages til de originale xml-filer, vil overlejringen ikke fungere.

Sådan forklarer David det:

Hvad disse latterlige "udviklere" (jeg bruger det udtryk løst, når jeg beskriver disse klovne) gør, er, at de bruger genstande i layout-xml'er, som gør det svært for os at tematisere appen korrekt uden at tilføje disse layout-xml'er i vores overlay.

For at give dig et eksempel, lad os tage WhatsApp og se på et element i deres /res/values/colors.xml, som er #ffffffff

De bruger @color/white til både tekstfarver og baggrundsfarver i hele deres app. Det betyder, at hvis et tema ønsker at ændre farven på "hvid" til noget mørkt for at gøre deres baggrunde mørke, så vil det også gøre masser af tekst mørk, hvilket er meget dårligt.

For at omgå denne mangel vil temaer tilføje layout-xml'erne i deres overlay og ændre enten tekstfarven eller baggrundsfarven eller begge dele fra være noget som android: background="@color/white" til noget som android: background="@*android: color/background_dark" for at gøre baggrunden mørk.

Nu er dette fantastisk og gør baggrunden mørk, men layoutet xml skal inkludere alt i det, som det originale layout xml har, som kan variere fra et par linjer til over 100 linjer. Inden for disse linjer i layoutet kan xml være masser af forskellige ressourcer, som findes inde i appens originale kode, som bliver kaldt på, såsom id'er, dimensioner, strenge, stilarter osv. osv.

Nu ligger problemet her... hvis et tema laver en overlejring, der passer til WhatsApp 2.17.323 og WhatsApp opdaterer til 2.17.351 (for eksempel), så hvis WhatsApp i deres uendelige visdom beslutter at ændre navnet på f.eks. en streng, som var i overlejringen lavet til 2.17.323, og den streng eksisterer ikke længere i 2.17.351, så vil overlejringen ikke lykkes bygge.

Det samme gælder for alt inden for overlejringen, der er i enhver kode, der kalder på en ressource, der er i appen, hvis den pågældende ressource var i den app, som overlejringen er designet til, og derefter opdaterer appen, og ressourcen ikke længere er i appens kode, så kompilerer overlejringen ikke.

Dette er blot et eksempel på kat-og-mus-spillet med skiftende app- og temaopdateringer, som Substratum-temaerne står over for. Når temaer understøtter et stort antal tredjepartsapps, skal de gange dette spil flere gange med hver temaopdatering. Det er en uendelig cyklus med at holde trit med flere understøttede apps og håbe på, at frustrerede brugere ikke vurderer deres temaer dårligt mellem opdateringer fordi Slack (for et andet eksempel) skubbede tre opdateringer til deres app i løbet af de to uger siden den sidste opdatering af deres foretrukne Slack-understøttende tema.

Hvad kan du gøre ved det?

Personligt plejer jeg at vente på en opdatere til mine yndlingstemaer, før jeg opdaterer nogen apps, jeg bruger der er tematiske. Når det er sagt, har ikke alle temaer tid til konstant at skubbe opdateringer for at holde trit med disse appopdateringer, så din kilometertal kan variere. Hvis du virkelig ikke kan holde ud at bruge en app i dens ikke-tematilstand, så er det måske ikke det store problem for dig at vente et par timer eller dage. Hvis dette dog er en deal breaker, så ønsker du måske kun at tematisere systemapplikationer, der næppe vil ændre sig snart (såsom SystemUI eller Android Framework).

Du skal bare erkende, at problemet ikke skyldes selve Substratum eller Substratum-temaer, og lad venligst være med at give temaudvikleren skylden, når noget går galt. Dette er grunden til, at temamotorer på OEM-varianter af Android, såsom EMUI, Samsung Experience eller LG UX, ikke tillader dig at tematisere mere end systemapps og selve systemets brugergrænseflade. For at nyde niveauet af tilpasning, som Substratum tilbyder, er afvejningen, at du måske skal vente et kort stykke tid for at nyde den seneste appopdatering.