De ce actualizările aplicației întrerup uneori temele de substrat

Temele de substrat sunt adesea afectate negativ de frecvența actualizărilor aplicațiilor terță parte, mai ales atunci când tematicii trebuie să se adapteze la cele prost codificate

Este o întâmplare comună: utilizatorii aplică teme Substratum pe telefoanele lor, apoi actualizează ulterior Slack, WhatsApp, Instagram sau orice alte aplicații din Magazinul Play. Dintr-o dată, nici măcar nu pot deschide acele aplicații până când suprapunerile lor teme nu sunt dezactivate. O mulțime de utilizatori mai noi Substratum și-au exprimat experiențele cu această problemă încă de la lansarea lui Tematica Substratum fără rădăcină pentru Android Oreo.

Uneori, reconstruirea suprapunerilor în Substratum rezolvă problema, dar uneori nu va funcționa până când dezvoltatorul temei nu actualizează tema din nou. În acest ultim caz, utilizatorii sunt blocați să utilizeze aplicațiile afectate în stările lor netematice, stoc. Inutil să spun că aceasta poate fi o experiență frustrantă pentru mulți.

Problema este de obicei rezultatul unei combinații de factori: o aplicație terță parte prost codificată, actualizări frecvente pentru au spus aplicații care cauzează de fapt mai multe probleme decât le rezolvă și limitări în Serviciul Manager de suprapunere (OMS) cadru. Am vorbit cu câțiva tematici cunoscuți care au oferit câteva informații valoroase asupra problemei:

Jeremy Beck, care face Spectru Tema substratului și David Wilson de Dominaţie faimă.

Potrivit acestor adepți ai Substratum, unii dintre cei mai mari infractori din domeniul aplicațiilor prost codificate sunt printre cei mai populari. WhatsApp, Instagram, Slack, Facebook și Telegram sunt exemple pe care acești tematici Substratum ni le-au citat atunci când au relatat această problemă. De fapt, David a spus că sunt exemple de aplicații „codificate în mod oribil, dezgustător, disprețuitor”, care ilustrează plin de culoare frustrare cu care se confruntă dezvoltatorii de teme Substratum atunci când își păstrează utilizatorii fericiți în timp ce încearcă să-și unifice experiențele Android în jurul unui temă comună.

De exemplu, o aplicație „codificată în mod disprețuitor” poate lega culoarea textului de culoarea de fundal din fișierul colors.xml. Dacă un subiect modifică culoarea de fundal pentru a nu mai fi albă în acest exemplu, textul va fi, de asemenea, modificat și ar putea fi mai greu (sau chiar imposibil) de citit. În consecință, tema va trebui să adauge propriile fișiere xml de aspect la suprapunerile de teme pentru a specifica culori separate pentru text și fundal.

Avertismentul este că noile fișiere xml trebuie să includă și ele fiecare caracter de cod din fișierele aplicației originale cu același nume deci nu se pierde nicio funcționalitate. Acest lucru se datorează faptului că OMS citește din fișierul substitut, al tematorului, în timp ce aplicația însăși încearcă să facă tot ce a permis fișierul original. Când aplicația este actualizată și se face chiar și cea mai mică schimbare fără legătură la fișierele xml originale, suprapunerile nu vor funcționa.

Iată cum explică David:

Ceea ce fac acești „dezvoltatori” ridicoli (folosesc acest termen vag când descriu acești clovni) este că folosesc articole în xml-uri de aspect care ne îngreunează tematica aplicației în mod corespunzător, fără a adăuga acele xml-uri de aspect în suprapunerea noastră.

Pentru a vă da un exemplu, să luăm WhatsApp și să ne uităm la un element din /res/values/colors.xml. #ffffffff

Ei folosesc @color/white atât pentru culorile textului, cât și pentru culorile de fundal în toată aplicația lor. Aceasta înseamnă că, dacă un subiect dorește să schimbe culoarea „albului” în ceva întunecat pentru a-și întuneca fundalul, atunci va întuneca și mult text, ceea ce este foarte rău.

Pentru a rezolva acest neajuns, tematicii vor adăuga xml-urile de aspect în suprapunerea lor și vor schimba fie culoarea textului, fie culoarea fundalului sau ambele din fiind ceva de genul Android: background="@color/white" la ceva de genul Android: background="@*android: color/background_dark" pentru a întuneca fundalul.

Acum, acest lucru este grozav și face fundalul întunecat, dar formatul xml trebuie să includă tot ce are în el aspectul original xml, care poate varia de la câteva linii la peste 100 de linii. În aceste linii ale layout-ului xml pot fi o mulțime de resurse diferite care se află în codul original al aplicației și care sunt apelate, cum ar fi id-uri, dimensiuni, șiruri, stiluri etc.

Acum aici este problema... dacă o temă face o suprapunere pentru a se potrivi cu WhatsApp 2.17.323 și WhatsApp se actualizează la 2.17.351 (de exemplu), atunci dacă WhatsApp, în înțelepciunea lor infinită, decide să se schimbe numele de a spune un șir care a fost în suprapunerea făcută pentru 2.17.323 și acel șir nu mai există în 2.17.351, atunci suprapunerea nu va avea succes construi.

Același lucru este valabil și pentru orice din suprapunere care se află în orice cod care apelează la o resursă care se află în aplicație, dacă respectiva resursă a fost în aplicația pentru care a fost concepută suprapunerea și apoi aplicația se actualizează și resursa nu mai este în codul aplicației, atunci suprapunerea nu se va compila.

Acesta este doar un exemplu al jocului pisica și șoarecele alternând actualizările de aplicații și teme cu care se confruntă tematicii Substratum. Când tematicii acceptă un număr mare de aplicații terțe, ei trebuie să multiplice acest joc de mai multe ori cu fiecare actualizare a temei. Este un ciclu fără sfârșit de a ține pasul cu mai multe aplicații acceptate și de speranța că utilizatorii frustrați nu își evaluează prost temele între actualizări deoarece Slack (pentru un alt exemplu) a introdus trei actualizări pentru aplicația lor în cele două săptămâni de la ultima actualizare a lor favorită, care acceptă Slack temă.

Ce poți face în privința asta?

Personal, de obicei aștept un actualizați la temele mele preferate înainte de a actualiza orice aplicație pe care o folosesc care sunt tematice. Acestea fiind spuse, nu fiecare themer are timp să împingă în mod constant actualizări pentru a ține pasul cu aceste actualizări ale aplicației, astfel încât kilometrajul dvs. poate varia. Dacă într-adevăr nu suportați să folosiți o aplicație în starea ei netematică, atunci poate că așteptarea câteva ore sau zile nu este o afacere atât de mare pentru dvs. Dacă aceasta este o problemă, atunci poate că ați dori să temați numai aplicațiile de sistem care este puțin probabil să se schimbe în curând (cum ar fi SystemUI sau Android Framework).

Trebuie doar să recunoașteți că problema nu este din cauza Substratum în sine sau a temelor Substratum și vă rugăm să nu dați vina pe dezvoltatorul temei când ceva nu merge bine. Acesta este motivul pentru care motoarele de teme pe arome OEM ale Android, cum ar fi EMUI, Samsung Experience sau LG UX, nu vă permit să temați mai mult decât aplicațiile de sistem și interfața de utilizare a sistemului în sine. Pentru a vă bucura de nivelul de personalizare oferit de Substratum, compromisul este că ar putea fi necesar să așteptați puțin pentru a vă bucura de cea mai recentă actualizare a aplicației.