Perché gli aggiornamenti delle app a volte interrompono i temi del substrato

I temi del substrato sono spesso influenzati negativamente dalla frequenza degli aggiornamenti alle app di terze parti, soprattutto quando i temi devono adattarsi a quelli scarsamente codificati

È un evento comune: gli utenti applicano i temi Substratum ai propri telefoni e successivamente aggiornano Slack, WhatsApp, Instagram o qualsiasi altra app dal Play Store. All'improvviso non possono nemmeno aprire quelle app finché le sovrapposizioni dei temi non vengono disabilitate. Molti nuovi utenti di Substratum hanno espresso le loro esperienze con questo problema sin dal rilascio di Tema Substratum senza radici per Android Oreo.

A volte la ricostruzione degli overlay in Substratum risolve il problema, ma a volte non funzionerà finché lo sviluppatore del tema non aggiornerà nuovamente il tema. In quest'ultimo caso, gli utenti sono costretti a utilizzare le app interessate nei loro stati stock senza tema. Inutile dire che questa può essere un’esperienza frustrante per molti.

Il problema è solitamente il risultato di una combinazione di fattori: un'app di terze parti codificata in modo errato, aggiornamenti frequenti dette app che in realtà causano più problemi di quanti ne risolvono e limitazioni nel servizio Overlay Manager (OMS) struttura. Ho parlato con un paio di noti temi che hanno fornito alcuni preziosi spunti sulla questione:

Jeremy Beck, chi fa il Spettro Tema del substrato e David Wilson Di Dominazione fama.

Secondo questi sostenitori di Substratum, alcuni dei peggiori trasgressori nel regno delle app mal codificate sono tra i più popolari. WhatsApp, Instagram, Slack, Facebook e Telegram sono gli esempi che questi temi di Substratum ci hanno citato quando hanno raccontato questo problema. In effetti, David ha affermato che sono esempi di app "codificate in modo orribile, disgustoso e spregevole", il che illustra in modo colorato la frustrazione che gli sviluppatori di temi Substratum devono affrontare quando mantengono felici i propri utenti mentre cercano di unificare le loro esperienze Android attorno a a tema comune.

Ad esempio, un'app "codificata in modo spregevole" potrebbe collegare il colore del testo al colore dello sfondo nel suo file Colors.xml. Se un tema cambia il colore dello sfondo in modo che non sia più bianco in questo esempio, anche il testo verrà modificato e potrebbe essere reso più difficile (o addirittura impossibile) la lettura. Di conseguenza, il tema dovrà aggiungere i propri file xml di layout alle sovrapposizioni del tema per specificare colori separati per testo e sfondo.

L'avvertenza è che i nuovi file xml devono includere anche ogni singolo carattere di codice dai file omonimi dell'app originale quindi nessuna funzionalità viene persa. Questo perché OMS legge dal sostituto, il file di themer mentre l'app stessa tenta di fare tutto ciò che il file originale consentiva. Quando l'app viene aggiornata e viene apportata anche la minima modifica non correlata ai file xml originali, le sovrapposizioni non funzioneranno.

Ecco come lo spiega David:

Ciò che fanno questi ridicoli "sviluppatori" (uso questo termine in modo approssimativo quando descrivo questi pagliacci) è usare oggetti XML di layout che ci rendono difficile definire correttamente il tema dell'app senza aggiungere tali XML di layout nel nostro overlay.

Per darti un esempio, prendiamo WhatsApp e guardiamo un elemento nel loro /res/values/colors.xml che è #ffffffff

Usano @color/white sia per i colori del testo che per i colori dello sfondo in tutta la loro app. Ciò significa che se un themer vuole cambiare il colore del "bianco" in qualcosa di scuro per rendere scuri i suoi sfondi, allora renderà scuro anche molto testo, il che è pessimo.

Per aggirare questa lacuna, i themer aggiungeranno il layout xml nel loro overlay e cambieranno il colore del testo o il colore dello sfondo o entrambi da essere qualcosa come android: background="@color/white" in qualcosa come android: background="@*android: color/ background_dark" per rendere lo sfondo scuro.

Ora, questo è fantastico e rende lo sfondo scuro, ma il layout xml deve includere tutto ciò che contiene il layout xml originale, che può variare da poche righe a oltre 100 righe. All'interno di queste righe del layout xml possono esserci molte risorse diverse che risiedono nel codice originale dell'app che vengono richiamate come ID, dimensioni, stringhe, stili, ecc. Ecc.

Ora qui sta il problema... se un themer crea un overlay per adattarsi a WhatsApp 2.17.323 e gli aggiornamenti di WhatsApp a 2.17.351 (ad esempio), se WhatsApp nella sua infinita saggezza decide di cambiare il nome di una stringa che era nell'overlay creato per 2.17.323 e quella stringa non esiste più in 2.17.351, l'overlay non verrà eseguito correttamente costruire.

Lo stesso vale per qualsiasi cosa all'interno dell'overlay che si trova in qualsiasi codice che richiama una risorsa all'interno dell'app, se quella particolare risorsa era nell'app per cui è stato progettato l'overlay e poi l'app si aggiorna e la risorsa non è più nel codice dell'app, l'overlay non verrà compilato.

Questo è solo un esempio del gioco del gatto e del topo di alternanza di aggiornamenti di app e temi che i tematici di Substratum devono affrontare. Quando i temi supportano un gran numero di app di terze parti, devono moltiplicare questo gioco più volte con ogni aggiornamento del tema. È un ciclo infinito di tenere il passo con più app supportate e sperare che gli utenti frustrati non valutino male i loro temi tra un aggiornamento e l'altro perché Slack (per un altro esempio) ha inviato tre aggiornamenti alla propria app nelle due settimane successive all'ultimo aggiornamento del suo supporto preferito per Slack tema.

Cosa puoi fare al riguardo?

Personalmente, di solito aspetto un aggiorna i miei temi preferiti prima di aggiornare le app che utilizzo che sono a tema. Detto questo, non tutti i temi hanno il tempo di inviare costantemente aggiornamenti per stare al passo con gli aggiornamenti delle app, quindi il tuo chilometraggio può variare. Se davvero non sopporti l'utilizzo di un'app nel suo stato senza tema, forse aspettare qualche ora o qualche giorno non è un grosso problema per te. Se questo è un problema, allora forse potresti voler tematizzare solo le applicazioni di sistema che difficilmente cambieranno presto (come SystemUI o Android Framework).

Riconosci semplicemente che il problema non è dovuto al Substratum stesso o ai temi Substratum e, per favore, non incolpare lo sviluppatore del tema se qualcosa va storto. Questo è il motivo per cui i motori dei temi sulle versioni OEM di Android come EMUI, Samsung Experience o LG UX non ti consentono di aggiungere temi oltre alle app di sistema e all'interfaccia utente di sistema stessa. Per godere del livello di personalizzazione offerto da Substratum, il compromesso è che potresti dover aspettare un po' per goderti l'ultimo aggiornamento dell'app.