Miért törik meg néha az alkalmazásfrissítések az aljzattémákat?

Az aljzattémákat gyakran hátrányosan érinti a harmadik féltől származó alkalmazások frissítéseinek gyakorisága, különösen akkor, ha a témáknak alkalmazkodniuk kell a rosszul kódolt alkalmazásokhoz.

Gyakori jelenség: a felhasználók Substratum témákat alkalmaznak telefonjukon, majd később frissítik a Slacket, a WhatsApp-ot, az Instagram-ot vagy bármilyen más alkalmazást a Play Áruházból. Hirtelen meg sem tudják nyitni ezeket az alkalmazásokat, amíg a témafedvényeiket le nem tiltják. Rengeteg újabb Substratum felhasználó adott hangot tapasztalatainak ezzel a problémával kapcsolatban a megjelenése óta gyökértelen Substratum theming Android Oreo-hoz.

Néha a fedvények újraépítése a Substratumban megoldja a problémát, de néha nem működik, amíg a téma fejlesztője újra nem frissíti a témát. Ez utóbbi esetben a felhasználók elakadnak, és az érintett alkalmazásokat nem tematikus, készletállapotukban kell használniuk. Mondanom sem kell, ez sokak számára frusztráló élmény lehet.

A probléma általában több tényező együttes eredménye: egy rosszul kódolt, harmadik féltől származó alkalmazás, a az említett alkalmazások, amelyek valójában több problémát okoznak, mint amennyit megoldanak, és az Overlay Manager Service (OMS) korlátozásai keretrendszer. Beszéltem néhány jól ismert témakörrel, akik értékes betekintést nyújtottak a problémába:

Jeremy Beck, aki készíti a Spectrum Aljzattéma, ill David Wilson nak,-nek Uralom hírnév.

A Substratum oktatói szerint a rosszul kódolt alkalmazások területén a legrosszabb jogsértők a legnépszerűbbek közé tartoznak. A WhatsApp, az Instagram, a Slack, a Facebook és a Telegram olyan példák, amelyekre ezek a Substratum-témái hivatkoztak, amikor felidézték ezt a problémát. Valójában David azt mondta, hogy ezek a „borzasztóan, undorítóan, aljasan kódolt” alkalmazások példái, amelyek színesen illusztrálják a csalódottság, amellyel a Substratum téma fejlesztői szembesülnek, amikor elégedettek maradnak a felhasználókkal, miközben megpróbálják egyesíteni Android-élményeiket egy közös téma.

Például egy „aljasan kódolt” alkalmazás a color.xml fájlban a szöveg színét a háttérszínhez kötheti. Ha ebben a példában egy téma megváltoztatja a háttérszínt, hogy ne legyen fehér, akkor a szöveg is megváltozik, és nehezebbé (vagy akár lehetetlenné) válhat olvashatóvá. Következésképpen a témának hozzá kell adnia saját elrendezésű xml-fájljait a témafedőihez, hogy külön színt adjon meg a szöveghez és a háttérhez.

A figyelmeztetés az, hogy az új xml-fájloknak is tartalmazniuk kell az eredeti alkalmazás azonos nevű fájljaiból származó kód minden egyes karaktere így semmilyen funkció nem vész el. Ennek az az oka, hogy az OMS a helyettesítő, themer fájlból olvas, miközben maga az alkalmazás megpróbál mindent megtenni, amit az eredeti fájl megengedett. Amikor az alkalmazás frissül, és a legkisebb összefüggéstelen változás is megtörténik az eredeti xml fájlokhoz, az átfedések nem fognak működni.

David így magyarázza:

Amit ezek a nevetséges "fejlesztők" (ezt a kifejezést lazán használom, amikor leírom ezeket a bohócokat) tesznek, az az, hogy elemeket használnak elrendezésű xml-ek, amelyek megnehezítik számunkra az alkalmazás megfelelő témáját anélkül, hogy ezeket az elrendezésű xml-eket hozzáadnánk a fedvényünkhöz.

Példaként vegyük a WhatsApp alkalmazást, és nézzünk meg egy elemet a /res/values/colors.xml fájljában, amely #ffffffff

Alkalmazásukban a @color/white-ot használják mind a szöveg-, mind a háttérszínekhez. Ez azt jelenti, hogy ha egy téma a "fehér" színét valami sötétre akarja változtatni, hogy a hátterét sötétebbé tegye, akkor sok szöveget is sötét lesz, ami nagyon rossz.

A hiányosság kiküszöbölése érdekében a témák hozzáadják az elrendezés xml-eket a fedvényükhöz, és megváltoztatják a szöveg színét vagy a háttérszínt, vagy mindkettőt. valami olyasmi, mint az android: background="@color/white" valami olyasmire, mint az android: background="@*android: color/background_dark", hogy a háttér sötét legyen.

Ez most nagyszerű, és sötétebbé teszi a hátteret, de az elrendezés xml-nek tartalmaznia kell mindent, amit az eredeti elrendezés xml tartalmaz, ami néhány sortól több mint 100 sorig terjedhet. Az xml elrendezés ezen sorain belül sok különböző erőforrás található, amelyek az alkalmazás eredeti kódjában találhatók, és amelyek meghívásra kerülnek, például azonosítók, dimenziók, karakterláncok, stílusok stb.

Most itt van a probléma... ha egy téma a WhatsApp 2.17.323-as verziójának és a WhatsApp 2.17.351-es verziójának megfelelő fedvényt készít (például), akkor ha a WhatsApp végtelen bölcsességében úgy dönt, hogy változtat mondjuk egy karakterlánc neve, amely a 2.17.323-as átfedésben volt, és ez a karakterlánc már nem létezik a 2.17.351-ben, akkor az átfedés nem fog sikeresen épít.

Ugyanez vonatkozik a fedvényen belül minden olyan kódra, amely az alkalmazáson belüli erőforrást hívja meg, ha az adott erőforrás abban az alkalmazásban, amelyhez a fedvényt tervezték, majd az alkalmazás frissül, és az erőforrás már nincs az alkalmazás kódjában, akkor a fedvény nem fordítódik le.

Ez csak egy példa a váltakozó alkalmazás- és témafrissítések macska-egér játékára, amellyel a Substratum témái szembesülnek. Ha a témák nagyszámú harmadik féltől származó alkalmazást támogatnak, akkor minden témafrissítésnél többször kell megsokszorozniuk ezt a játékot. Ez egy véget nem érő ciklus, amely során lépést kell tartani a több támogatott alkalmazással, és reméljük, hogy a csalódott felhasználók nem értékelik rosszul témáikat a frissítések között mert a Slack (egy másik példa) három frissítést adott az alkalmazásához a kedvenc Slack-támogatás utolsó frissítése óta eltelt két hét alatt. téma.

Mit tehetsz ellene?

Én személy szerint általában várok egy Frissítsen kedvenc témáimra, mielőtt bármilyen alkalmazást frissítek amelyek tematikusak. Ennek ellenére nem minden témának van ideje folyamatosan frissíteni, hogy lépést tartson ezekkel az alkalmazásfrissítésekkel, így a futásteljesítmény változhat. Ha tényleg nem bírod elviselni egy alkalmazás témá nélküli használatát, akkor lehet, hogy néhány óra vagy nap várakozás nem olyan nagy üzlet az Ön számára. Ha azonban ez megszakítja az üzletet, akkor érdemes lehet csak olyan rendszeralkalmazásokat témázni, amelyek valószínűleg nem fognak hamarosan megváltozni (például a SystemUI vagy az Android Framework).

Csak vegye észre, hogy a probléma nem maga a Substratum vagy a Substratum témák miatt van, és kérjük, ne a téma fejlesztőjét hibáztassa, ha valami elromlik. Ez az oka annak, hogy az Android OEM-változataiban, például az EMUI-ban, a Samsung Experience-ben vagy az LG UX-ben található témamotorok nem teszik lehetővé, hogy a rendszeralkalmazásokon és magán a rendszerkezelőfelületen túlmenően témázzon. A Substratum által kínált testreszabási szintek élvezetéhez a kompromisszum az, hogy előfordulhat, hogy várnia kell egy kis ideig, hogy élvezze a legújabb alkalmazásfrissítést.