Varför appuppdateringar ibland bryter substratteman

click fraud protection

Substratum-teman påverkas ofta negativt av frekvensen av uppdateringar av appar från tredje part, särskilt när teman måste anpassa sig till dåligt kodade.

Det är en vanlig händelse: användare applicerar Substratum-teman på sina telefoner och uppdaterar sedan Slack, WhatsApp, Instagram eller valfritt antal andra appar från Play Store. Plötsligt kan de inte ens öppna dessa appar förrän deras temaöverlägg är inaktiverade. Många nyare Substratum-användare har uttryckt sina erfarenheter av det här problemet ända sedan lanseringen av rootless Substratum-tema för Android Oreo.

Ibland löser problemet med att bygga om överläggen i Substratum, men ibland fungerar det inte förrän temautvecklaren uppdaterar temat igen. I det senare fallet har användare fastnat för att behöva använda de berörda apparna i deras aktiestater utan teman. Det behöver inte sägas att detta kan vara en frustrerande upplevelse för många.

Problemet är vanligtvis resultatet av en kombination av faktorer: en dåligt kodad tredjepartsapp, frekventa uppdateringar av nämnda appar som faktiskt orsakar fler problem än de fixar, och begränsningar i Overlay Manager Service (OMS) ramverk. Jag pratade med ett par välkända teman som gav några värdefulla insikter om problemet:

Jeremy Beck, vem gör Spektrum Substratum tema, och David Wilson av Herravälde berömmelse.

Enligt dessa Substratum-trogna är några av de värsta förövarna i sfären av dåligt kodade appar bland de mest populära. WhatsApp, Instagram, Slack, Facebook och Telegram är exempel som dessa Substratum-temaer citerade för oss när de berättade om detta problem. Faktum är att David sa att de är exempel på "hemskt, äckligt, avskyvärt kodade" appar, som färgrikt illustrerar frustration som utvecklare av Substratum-tema möter när de håller sina användare nöjda när de försöker förena sina Android-upplevelser runt en gemensamt tema.

Till exempel kan en "avskyvärt kodad" app binda textfärgen till bakgrundsfärgen i sin colors.xml-fil. Om ett tema ändrar bakgrundsfärgen till att inte längre vara vit i det här exemplet kommer texten också att ändras och kan göras svårare (eller till och med omöjlig) att läsa. Följaktligen måste temat lägga till sina egna xml-layoutfiler till sina temaöverlägg för att ange separata färger för text och bakgrund.

Förbehållet är att de nya xml-filerna också måste innehålla varje tecken i koden från den ursprungliga appens filer med samma namn så ingen funktion går förlorad. Detta beror på att OMS läser från ersättningsfilen, temans fil medan appen själv försöker göra allt som originalfilen tillät. När appen är uppdaterad och även den minsta orelaterade förändring görs till de ursprungliga xml-filerna kommer överläggen inte att fungera.

Så här förklarar David det:

Vad dessa löjliga "utvecklare" (jag använder den termen löst när jag beskriver dessa clowner) gör är att de använder föremål i layout-xml-filer som gör det svårt för oss att utforma appen korrekt utan att lägga till dessa layout-xml-filer i vår överlagring.

För att ge dig ett exempel, låt oss ta WhatsApp och titta på ett objekt i deras /res/values/colors.xml som är #ffffffff

De använder @color/white för både textfärger och bakgrundsfärger i hela sin app. Det betyder att om en teman vill ändra färgen på "vitt" till något mörkt för att göra deras bakgrund mörk, så kommer det att göra massor av text mörk också, vilket är väldigt dåligt.

För att komma runt den bristen kommer teman att lägga till layoutens xmls i sin överlagring och ändra antingen textfärgen eller bakgrundsfärgen eller båda från vara något som android: background="@color/white" till något som android: background="@*android: color/background_dark" för att göra bakgrunden mörk.

Nu är det här bra och gör bakgrunden mörk, men layouten xml måste innehålla allt i den som den ursprungliga layouten xml har som kan variera från några rader till över 100 rader. Inom dessa rader i layouten xml kan finnas massor av olika resurser som finns i appens ursprungliga kod som anropas som id, dimensioner, strängar, stilar, etc etc.

Nu ligger problemet här... om en teman gör en överlagring som passar WhatsApp 2.17.323 och WhatsApp uppdaterar till 2.17.351 (till exempel) så om WhatsApp i sin oändliga visdom bestämmer sig för att ändra namnet på säg en sträng som fanns i överlägget som gjordes för 2.17.323 och den strängen inte existerar längre i 2.17.351 så kommer överlagringen inte att lyckas bygga.

Detsamma gäller för allt inom överlägget som finns i någon kod som anropar en resurs som finns i appen, om den specifika resursen var i appen som överlägget designades för och sedan uppdateras appen och resursen inte längre finns i appens kod så kompilerar inte överlägget.

Det här är bara ett exempel på katt-och-mus-spelet med alternerande app- och temauppdateringar som Substratum-temaer ställs inför. När teman stöder ett stort antal tredjepartsappar måste de multiplicera det här spelet flera gånger med varje temauppdatering. Det är en oändlig cykel av att hålla jämna steg med flera appar som stöds och hoppas att frustrerade användare inte betygsätter sina teman dåligt mellan uppdateringarna eftersom Slack (till exempel) skickade tre uppdateringar till sin app under de två veckorna sedan den senaste uppdateringen av deras favorit Slack-stödjande tema.

Vad kan du göra åt det?

Själv brukar jag vänta på en uppdatera till mina favoritteman innan jag uppdaterar appar jag använder som är tematiska. Som sagt, inte alla teman har tid att ständigt driva uppdateringar för att hålla jämna steg med dessa appuppdateringar, så din körsträcka kan variera. Om du verkligen inte tål att använda en app i dess tillstånd utan teman, kanske det inte är så stor sak för dig att vänta några timmar eller dagar. Om detta dock är en deal breaker, kanske du kanske bara vill temaisera systemapplikationer som sannolikt inte kommer att ändras snart (som SystemUI eller Android Framework).

Inse bara att problemet inte beror på Substratum i sig eller Substratum-teman, och skyll inte på temautvecklaren när något går fel. Det är därför som temamotorer på OEM-varianter av Android som EMUI, Samsung Experience eller LG UX inte tillåter dig att tematisera mer än systemappar och själva systemgränssnittet. För att njuta av nivån av anpassning som Substratum erbjuder är kompromissen att du kanske måste vänta en kort stund för att njuta av den senaste appuppdateringen.