Kodėl programų atnaujinimai kartais pažeidžia substrato temas

click fraud protection

Substrato temas dažnai neigiamai veikia trečiųjų šalių programų atnaujinimų dažnis, ypač kai temos turi prisitaikyti prie prastai koduotų.

Tai įprastas reiškinys: vartotojai savo telefonuose taiko „Substratum“ temas, tada vėliau atnaujina „Slack“, „WhatsApp“, „Instagram“ ar daugybę kitų programų iš „Play“ parduotuvės. Staiga jie net negali atidaryti tų programų, kol nebus išjungtos jų temos perdangos. Daugelis naujesnių „Substratum“ vartotojų išreiškė savo patirtį su šia problema nuo tada, kai buvo išleistas „Android Oreo“ skirto pagrindo temos be šaknų.

Kartais perdangų atkūrimas „Substratum“ išsprendžia problemą, bet kartais tai neveiks, kol temos kūrėjas vėl neatnaujins temos. Pastaruoju atveju naudotojai įstringa, norėdami naudoti paveiktas programas neteminėse, atsargų būsenose. Nereikia nė sakyti, kad daugeliui tai gali būti varginanti patirtis.

Problema dažniausiai kyla dėl kelių veiksnių derinio: prastai užkoduotos trečiosios šalies programos, dažnų atnaujinimų minėtos programos, kurios iš tikrųjų sukelia daugiau problemų, nei išsprendžia, ir „Overlay Manager Service“ (OMS) apribojimai sistema. Kalbėjausi su keliomis gerai žinomomis temomis, kurios pateikė vertingų įžvalgų apie šią problemą:

Džeremis Bekas, kas gamina Spektras Substrato tema ir Davidas Wilsonas apie Dominavimas šlovę.

Pasak šių „Substratum“ žinovų, kai kurie blogiausi pažeidėjai prastai koduotų programų srityje yra vieni populiariausių. „WhatsApp“, „Instagram“, „Slack“, „Facebook“ ir „Telegram“ yra pavyzdžiai, kuriuos šios „Substratum“ temos mums nurodė pasakodamos apie šią problemą. Tiesą sakant, Davidas sakė, kad tai „siaubingai, šlykščiai, niekingai užkoduotų“ programų pavyzdžiai, o tai spalvingai iliustruoja nusivylimas, su kuriuo susiduria substrato temų kūrėjai, kad naudotojai būtų patenkinti, kai bando suvienyti savo Android patirtį bendra tema.

Pavyzdžiui, „niekšingai užkoduota“ programa gali susieti teksto spalvą su fono spalva savo color.xml faile. Jei šiame pavyzdyje tema pakeičia fono spalvą, kad ji nebebūtų balta, tekstas taip pat bus pakeistas ir gali būti sunkiau (ar net neįmanoma) skaityti. Todėl tema turės pridėti savo išdėstymo xml failus prie temų perdangų, kad nurodytų atskiras teksto ir fono spalvas.

Įspėjimas yra tas, kad nauji xml failai taip pat turi būti įtraukti kiekvienas kodo simbolis iš to paties pavadinimo pradinės programos failų todėl joks funkcionalumas neprarandamas. Taip yra todėl, kad OMS skaito iš pakaitalo, temos failo, o pati programa bando daryti viską, ką leido pradinis failas. Kai programa atnaujinama ir daromas net menkiausias nesusijęs pakeitimas pradiniams xml failams, perdangos neveiks.

Štai kaip tai paaiškina Deividas:

Tai, ką daro šie juokingi „kūrėjai“ (šį terminą vartoju laisvai apibūdindama šiuos klounus), jie naudoja daiktus išdėstymo xmls, dėl kurių mums sunku tinkamai sukurti programos temą, nepridedant šių išdėstymo xml failų į mūsų perdangą.

Norėdami pateikti pavyzdį, paimkime „WhatsApp“ ir pažvelkime į elementą jų /res/values/colors.xml, kuris yra #ffffffff

Jie naudoja @color/white ir teksto spalvoms, ir fono spalvoms visoje programoje. Tai reiškia, kad jei tema nori pakeisti „baltą“ spalvą į kokią nors tamsią, kad jų fonas būtų tamsus, tada daug teksto taip pat bus tamsūs, o tai yra labai blogai.

Norėdami pašalinti šį trūkumą, temos į savo perdangą įtrauks maketo xmls ir pakeis teksto spalvą arba fono spalvą arba abu iš yra kažkas panašaus į android: background="@color/white" į kažką panašaus į android: background="@*android: color/background_dark", kad fonas būtų tamsus.

Dabar tai puiku ir padaro foną tamsų, tačiau XML išdėstymas turi apimti viską, ką turi originalus XML išdėstymas, kuris gali skirtis nuo kelių eilučių iki daugiau nei 100 eilučių. Šiose XML išdėstymo eilutėse gali būti daug skirtingų šaltinių, esančių originaliame programos kode, kurie iškviečiami, pvz., ID, matmenys, eilutės, stiliai ir kt.

Dabar čia ir slypi problema... jei tema sukuria perdangą, kad tiktų WhatsApp 2.17.323 ir WhatsApp atnaujintų į 2.17.351 (pavyzdžiui), tada jei WhatsApp savo begaline išmintimi nuspręstų pakeisti tarkime, eilutės, kuri buvo perdangoje, pavadinimas sukurtas 2.17.323 ir tos eilutės nebėra 2.17.351, tada perdanga nebus sėkmingai statyti.

Tas pats pasakytina apie viską, kas yra perdangoje, kuri yra bet kuriame kode, kuris iškviečia išteklius programoje, jei tas konkretus šaltinis buvo programėlėje, kuriai buvo sukurta perdanga, tada programa atnaujinama, o resurso nebėra programos kode, tada perdanga nebus kompiliuojama.

Tai tik vienas katės ir pelės žaidimo pavyzdys, kai keičiamos programos ir temos atnaujinimai, su kuriais susiduria „Substratum“ kūrėjai. Kai temos palaiko daugybę trečiųjų šalių programų, kiekvieną temos atnaujinimą jie turi kelis kartus padauginti šį žaidimą. Tai nesibaigiantis ciklas, kai reikia neatsilikti nuo kelių palaikomų programų ir tikintis, kad nusivylę vartotojai savo temų neįvertins prastai tarp atnaujinimų. nes „Slack“ (kitas pavyzdys) per dvi savaites nuo paskutinio mėgstamos „Slack“ palaikančios programos atnaujinimo išsiuntė tris savo programos atnaujinimus. tema.

Ką galite padaryti dėl to?

Asmeniškai aš dažniausiai laukiu an atnaujinkite į mėgstamiausias temas prieš atnaujindamas visas naudojamas programas kurios yra teminės. Be to, ne kiekviena tema turi laiko nuolat stumti naujinimus, kad neatsiliktų nuo šių programų naujinių, todėl jūsų rida gali skirtis. Jei tikrai negalite pakęsti, kai naudojate programą be teminės būsenos, galbūt laukti kelias valandas ar dienas nėra toks didelis dalykas. Tačiau jei tai yra susitarimo nutraukimas, galbūt norėsite sukurti tik temą sistemos programoms, kurios greičiausiai greitai nepasikeis (pvz., „SystemUI“ arba „Android Framework“).

Tiesiog pripažinkite, kad problema kyla ne dėl paties „Substratum“ ar „Substratum“ temų, ir nekaltinkite temos kūrėjo, kai kas nors negerai. Štai kodėl OĮG versijų Android, pvz., EMUI, Samsung Experience arba LG UX, teminiai varikliai neleidžia kurti daugiau temų nei sistemos programų ir pačios sistemos vartotojo sąsajos. Jei norite mėgautis „Substratum“ siūlomu tinkinimo lygiu, kompromisas yra tas, kad jums gali tekti šiek tiek palaukti, kad galėtumėte mėgautis naujausiu programos atnaujinimu.