Kāpēc lietotņu atjauninājumi dažreiz pārtrauc substrāta motīvus

Pamatnes motīvus bieži negatīvi ietekmē trešo pušu lietotņu atjaunināšanas biežums, īpaši, ja motīviem ir jāpielāgojas slikti kodētiem.

Tā ir izplatīta parādība: lietotāji savos tālruņos lieto Substratum motīvus, pēc tam vēlāk atjaunina Slack, WhatsApp, Instagram vai jebkuru citu lietotņu skaitu no Play veikala. Pēkšņi viņi pat nevar atvērt šīs lietotnes, kamēr nav atspējoti viņu motīvu pārklājumi. Kopš tā izlaišanas daudzi jaunāki Substratum lietotāji ir pauduši savu pieredzi ar šo problēmu Bezsakņu substrāta tēma Android Oreo.

Dažreiz pārklājumu atjaunošana programmā Substratum novērš problēmu, taču dažreiz tas nedarbosies, kamēr motīva izstrādātājs vēlreiz neatjaunina motīvu. Pēdējā gadījumā lietotāji ir iestrēguši, izmantojot ietekmētās lietotnes savos netēmātiskajos krājuma stāvokļos. Lieki piebilst, ka daudziem tā var būt nomākta pieredze.

Problēma parasti ir vairāku faktoru kombinācijas rezultāts: slikti kodēta trešās puses lietotne, bieži atjauninājumi minētās lietotnes, kas faktiski rada vairāk problēmu, nekā tās novērš, un ierobežojumi pārklājuma pārvaldnieka pakalpojumā (OMS) ietvaros. Es runāju ar pāris labi zināmiem tematiem, kuri sniedza dažus vērtīgus ieskatus šajā jautājumā:

Džeremijs Beks, kurš izgatavo Spektrs Substrāta tēma, un Deivids Vilsons no Dominēšana slavu.

Saskaņā ar šiem substrāta speciālistiem daži no sliktākajiem likumpārkāpējiem slikti kodētu lietotņu jomā ir vieni no populārākajiem. WhatsApp, Instagram, Slack, Facebook un Telegram ir piemēri, ko šīs Substratum tēmas mums minēja, stāstot par šo problēmu. Patiesībā Deivids teica, ka tās ir “šausmīgi, pretīgi, nicināmi kodētu” lietotņu piemēri, kas krāsaini ilustrē neapmierinātība, ar ko saskaras substrāta motīvu izstrādātāji, gādājot par saviem lietotājiem prieku, mēģinot apvienot savu Android pieredzi kopīga tēma.

Piemēram, “nicīgi kodēta” lietotne var saistīt teksta krāsu ar fona krāsu savā color.xml failā. Ja motīvs maina fona krāsu, lai šajā piemērā vairs nebūtu balts, tiks mainīts arī teksts un to lasīšana var būt grūtāk (vai pat neiespējama). Līdz ar to motīvam būs jāpievieno savi izkārtojuma xml faili motīvu pārklājumiem, lai norādītu atsevišķas teksta un fona krāsas.

Brīdinājums ir tāds, ka ir jāiekļauj arī jauni xml faili katra koda rakstzīme no sākotnējās lietotnes failiem ar tādu pašu nosaukumu tāpēc neviena funkcionalitāte netiek zaudēta. Tas ir tāpēc, ka OMS nolasa no aizstājēja, tēmas faila, kamēr pati lietotne mēģina darīt visu, ko pieļauj sākotnējais fails. Kad lietotne ir atjaunināta un tiek veiktas pat mazākās nesaistītās izmaiņas oriģinālajiem xml failiem, pārklājumi nedarbosies.

Lūk, kā Deivids to izskaidro:

Tas, ko dara šie smieklīgie "izstrādātāji" (es šo terminu lietoju brīvi, aprakstot šos klaunus), viņi izmanto vienumus izkārtojuma xmls, kas mums apgrūtina lietotnes pareizu tēmu, nepievienojot šos izkārtojuma xmls mūsu pārklājumam.

Lai sniegtu piemēru, ņemsim WhatsApp un apskatīsim vienumu to /res/values/colors.xml, kas ir #ffffffff

Viņi izmanto @color/white gan teksta krāsām, gan fona krāsām visā savā lietotnē. Tas nozīmē, ka, ja motīvs vēlas mainīt “balto” krāsu uz kaut ko tumšu, lai fons būtu tumšs, tas arī padarīs daudz teksta tumšu, kas ir ļoti slikti.

Lai novērstu šo trūkumu, tēmas pievienos izkārtojuma xmls savam pārklājumam un mainīs vai nu teksta krāsu vai fona krāsu, vai abus no ir kaut kas līdzīgs android: background="@color/white" uz kaut ko līdzīgu android: background="@*android: color/background_dark", lai padarītu fonu tumšu.

Tagad tas ir lieliski un padara fonu tumšu, bet izkārtojumā xml ir jāiekļauj viss, kas ir sākotnējā izkārtojumā xml, kas var atšķirties no dažām rindiņām līdz vairāk nekā 100 rindiņām. Šajās xml izkārtojuma rindās var būt daudz dažādu resursu, kas atrodas lietotnes sākotnējā kodā, kas tiek izsaukti, piemēram, ID, izmēri, virknes, stili utt.

Tagad šeit ir problēma... ja motīvs izveido pārklājumu, kas atbilst WhatsApp 2.17.323 un WhatsApp atjauninājumiem uz 2.17.351 (piemēram), tad, ja WhatsApp savā bezgalīgajā gudrībā nolemj mainīt teiksim, virknes nosaukums, kas bija pārklājumā 2.17.323, un šī virkne vairs nepastāv 2.17.351, tad pārklājums nedarbosies veiksmīgi būvēt.

Tas pats attiecas uz visu pārklājuma saturu, kas atrodas jebkurā kodā, kas izsauc resursu, kas atrodas lietotnē, ja šis konkrētais resurss bija lietotnē, kurai bija paredzēts pārklājums, un pēc tam lietotne tiek atjaunināta, un resurss vairs nav lietotnes kodā, tad pārklājums netiks kompilēts.

Šis ir tikai viens piemērs kaķa un peles spēlei, kurā tiek mainīti lietotņu un motīvu atjauninājumi, ar kuriem saskaras Substratum tēmas. Ja motīvi atbalsta lielu skaitu trešo pušu lietotņu, viņiem šī spēle ir jāreizina vairākas reizes ar katru motīva atjauninājumu. Tas ir nebeidzams cikls, lai sekotu līdzi vairākām atbalstītajām lietotnēm un cerētu, ka neapmierinātie lietotāji savus motīvus nenovērtēs slikti starp atjauninājumiem jo Slack (citam piemēram) ievietoja trīs atjauninājumus savai lietotnei divu nedēļu laikā kopš pēdējās savas iecienītākās Slack atbalsta atjaunināšanas. tēma.

Ko jūs varat darīt lietas labā?

Personīgi es parasti gaidu an atjauniniet savus iecienītākos motīvus, pirms atjauninu lietotnes kas ir tematiski. Tomēr ne katram motīvam ir laiks pastāvīgi pieprasīt atjauninājumus, lai sekotu šiem lietotņu atjauninājumiem, tāpēc jūsu nobraukums var atšķirties. Ja jūs patiešām nevarat izturēt lietotnes lietošanu tās beztēmā, iespējams, gaidīšana dažas stundas vai dienas jums nav tik liela. Tomēr, ja tas ir darījuma pārkāpums, iespējams, vēlēsities tikai motīvus izveidot sistēmas lietojumprogrammas, kuras, visticamāk, tuvākajā laikā nemainīsies (piemēram, SystemUI vai Android Framework).

Vienkārši atzīstiet, ka problēma nav saistīta ar pašu Substratum vai Substratum motīviem, un, lūdzu, nevainojiet motīva izstrādātāju, ja kaut kas noiet greizi. Šī iemesla dēļ motīvu dzinēji Android OEM versijās, piemēram, EMUI, Samsung Experience vai LG UX, neļauj jums izveidot motīvu vairāk kā tikai sistēmas lietotnēm un pašai sistēmas lietotāja saskarnei. Lai izbaudītu Substratum piedāvāto pielāgošanas līmeni, kompromiss ir tāds, ka jums, iespējams, būs jāgaida īss brīdis, lai izbaudītu jaunāko lietotnes atjauninājumu.