Androidi killustatuse kahetsusväärne olukord: näide arendajate raskuste mõistmiseks

Tavaline Androidi kasutaja pole ilmselt ammu enam hoolimast Androidi "killustumise probleemist". Kuid probleem kummitab endiselt arendajaid.

Killustatus on olnud Androidis sõna otseses mõttes vaieldav probleem alates mobiilioperatsioonisüsteemi väljakuulutamisest.

Lisaks sellele, et see on trollide kaisus, mida veebis leegisõdades kasutada, peetakse killustatusega kaasnevat mitmekesisust nüüd suuresti ka tarbijate jaoks positiivne Android-seadmetest. Lõppude lõpuks on meile sellise tarkvaraga seadme valimisel antud nii palju vabadust, et tavatarbijal on raske killustatusest hoolida. Androidi seadmete uskumatu mitmekesisuse visualiseerimine loob kauni mosaiigi Androidi mitmekesisest esitusest.

Näide Android-seadmete killustatusest, mis põhineb OpenSignali rakenduse rakenduste installidel. Allikas: OpenSignal

Kuid riist- ja tarkvara killustatus ei tee õnnelikuks tarkvaraarendajaks. Tegelikult hoopis vastupidi. Rakenduse arendamine nii paljude erinevate riist- ja tarkvarakonfiguratsioonide jaoks võib silumisel osutuda suureks ebameeldivaks. OEM-id võivad teha suuri või peeneid muudatusi, millega tuleb rakenduse arendamisel arvestada, kuid üksikul arendajal pole tegelikult lihtsat viisi tagada, et nende rakendus töötab universaalselt. Kui tavatarbija on killustatuse debati juba ammu unustanud, kummitab see probleem endiselt Androidi rakenduste arendajad ja näib, et sellega pole muud teha, kui see imeda ja vigadega tegeleda. ilmuvad.


Kahjulik killustatuse seisund

Eelkõige üks originaalseadmete tootja saab suure osa vihkamisest peavalude pärast, mida nad rakenduse arendamisel põhjustavad – Samsung. Arendajad on juba aastaid Samsungi kallal näägutanud, mõned kirjutavad isegi selliseid teravaid kirjutisi nagu "Androidi põrgus on Samsungi jaoks eriline koht", mis kirjeldab eriti masendavat viga, mis tuleneb sellest Samsungi seadmed ja tugirakenduste teek. Tahaksin juhtida tähelepanu eelkõige ühele lõigule härra Ambri räuskamisest, mis kirjeldab suurepäraselt, miks arendajad killustatusest ikkagi hoolivad:

Kui olete Androidi arendaja, on teie vihkamine Samsungi seadmete vastu tõenäoliselt piiritu. Rohkem kui keskmine kasutaja, kelle jaoks Samsung on sünonüüm rumal Touchwiz ja liigne puhitusvara, põlgad Samsungi, sest sul pole valikut. Samsungi tõttu tohutu turuosa, te lihtsalt ei saa Samsungi seadmeid mitte toetada. Ja see teebki kõige rohkem haiget; asjaolu, et see valik on teilt ära võetud!

See pole ka räuskamine Androidi vanadest eksisteerimisaastatest – see postitus ilmus eelmise aasta detsembri keskel. Olen otsekohene ja teatan, et ma pole kindel, kas see probleem on veel ametlikult lahendatud, kuid hr. Ambri on oma postituses pakkunud paranduse kõigile, kes Google'i otsingu kaudu tema räuskamisele komistavad viga. Kõik, mida pead tegema, on kasutada ProGuard järgmise ühe koodireaga:

# Samsung ruining all nice things-keep class !android.support.v7.view.menu.**, !android.support.design.internal.NavigationMenu, !android.support.design.internal.NavigationMenuPresenter, !android.support.design.internal.NavigationSubMenu, android.support.** {*;}

See polegi nii hull, kas pole? Probleem on aga selles, et see parandus eemaldati Stack Overflow'st. Ärge saage minust valesti aru, Stack Overflow on suurepärane veebisait. Kuid see pole tegelikult ideaalne allikas rakenduste jaoks paranduste leidmiseks. Stack Overflow'st millegi leidmine hõlmab sageli linkide sügavale sukeldumist pärast paljusid Google'i katse-eksituse meetodil tehtud otsinguid. Mõnikord võite isegi leida, et mõni teine ​​kasutaja mainib sama viga, mis teil on olnud, kuid ilma paranduseta. Või veelgi masendavam on kord, kui leiate lõime, mille kohta algne plakat on väitnud on leidnud lahenduse, kuid nad on juba ammu oma teemast loobunud, andmata teistele juhiseid selle parandamiseks probleem.

Allikas: XKCD

Näide peene killustatuse probleemist

Ma ei ole ise arendaja, kuid olen pärast aastaid Taskeris nokitsemist Androidi võimalustega piisavalt kursis, et olen hakanud probleemidele oma lahendusi pseudoprogrammeerima. Ja kui ma millestki aru ei saa, siis guugeldan seda nagu kõik teisedki. Sel ajal kui ma kirjutasin oma eelmist artiklit teemal telefoni seadete rakenduses varjatud tegevuste otsimiseks, puutusin kokku üsna kummalise veaga, mida ma ei osanud seletada. Huawei seadmete ainulaadne viga.

Kui proovisin rakenduses Seaded teatud tegevusi (nt menüüd "Testimine", mis sisaldab rakenduse kasutusstatistikat) käivitada, ilmnes alati loa tõrge. Eelkõige puudus luba rakendusel, mida ma tegevuse alustamiseks kasutasin huawei.android.permission. HW_SIGNATURE_OR_SYSTEM. Ükski teine ​​testitud seade ei vajanud nende seadete toimingute käivitamiseks unikaalseid lubasid, vaid ainult telefonid, milles töötab Huawei Androidi versioon (EMUI). Analüüs com.android.settings näitas, et teatud tegevused rakenduses Seaded olid tõepoolest kaitsetaseme all, mis nõudis kas allkiri või süsteemiluba.

Minu kahjuks tähendab see, et ainult / system alla installitud rakendused või samaga allkirjastatud rakendused allkirja, kuna rakendus Seaded saaks need tegevused avada, kasutades minu meetodit püüdes. Kui ma Google'is sellele veale vastust otsisin, leidsin (arvate ära) a Stack Overflow niit. Oma probleemi postitanud arendaja puutus kokku sama probleemiga, millega mina (kuigi tema arendas rakendust tegelikult). Tema probleem tekkis siis, kui ta üritas käivitada järgmist koodi:

<span >Intentspan><span > mainIntent span><span >=span><span >newspan><span >Intentspan><span >(span><span >Intentspan><span >.span><span >ACTION_MAINspan><span >,span><span >nullspan><span >);span><span >mainIntentspan><span >.span><span >addCategoryspan><span >(span><span >Intentspan><span >.span><span >CATEGORY_LAUNCHERspan><span >);span><span >Intentspan><span > pickIntent span><span >=span><span >newspan><span >Intentspan><span >(span><span >Intentspan><span >.span><span >ACTION_PICK_ACTIVITYspan><span >);span><span >pickIntentspan><span >.span><span >putExtraspan><span >(span><span >Intentspan><span >.span><span >EXTRA_TITLEspan><span >,span><span >"Pick App to Play in"span><span >);span><span >pickIntentspan><span >.span><span >putExtraspan><span >(span><span >Intentspan><span >.span><span >EXTRA_INTENTspan><span >,span><span > mainIntentspan><span >);span><span >thisspan><span >.span><span >startActivityForResultspan><span >(span><span >pickIntentspan><span >,span><span > REQUEST_PICK_APPLICATIONspan><span >);span>

Otsustades kavatsuse stringide ja arendaja veebilehe järgi, üritas ta tõenäoliselt lubada kasutajal valida mõne meediumi esitamiseks kolmanda osapoole rakenduse. Paranduse pakub veteran arendaja CommonsWare, oli üsna lihtne: kasutage Kavatsus. Loo Valija selle asemel ACTION_PICK_ACTIVITY. Kuid, miks kas peaksime selle paranduse rakendama? Miks kas Huawei nõuab seda luba üldse? Miks kas me pidime leidma vastuse StackOverflow'st, kasutades väga spetsiifilist Google'i otsingut?


Valiku paradoks

Vastuse leidmiseks CommonsWare esitas veateate Androidi veajälgijal, paludes Google'il probleemi uurida. Eelkõige taotles arendaja, et Google keelaks dokumenteerimata loanõuetel, et takistada kolmandate osapoolte rakendustel juurdepääsu toimingule ACTION_PICK_ACTIVITY. Kirjutades need nõuded sisse CTS, oleks Huawei sunnitud neid muudatusi järgima.

Ausalt öeldes pole see viga iseenesest siiski suur asi. Kuigi ükski teine ​​rakendus, mida olen proovinud (nt Tasker), ei saanud sellest loast mööda nõue ja käivitada teatud tegevused rakenduses Seaded, ei olnud ma selles pettunud tulemus. Aga kui mulle meenus härra Ambri räuskamine, mõistsin, et selliste väikeste muudatustega peab toime tulema väga masendav, eriti sest nii pisikesed kui nad ka poleks, on nad kahtlematakokku liitma, mõnikord piisab peavalu tekitamiseks. Üks väike muudatus rakenduses Seaded võib põhjustada arendajale teenimatult negatiivse arvustuse. Üks väike muudatus, mis on üsna halvasti dokumenteeritud ja nõudis mul Internetist Stack Overflow lõime otsimist. Kui palju muid väikseid vigu on teistes seadmetes?

Suurenenud konkurents mobiiliruumis on osutunud tarbija jaoks suurepäraseks, kuid pärast nende peente muutuste nägemist Nii paljude erinevate tootesarjade puhul võib arendajaid mõjutada, olen hakanud hindama arendaja suhtumist killustatus. Probleem pole mitte selles, et valik ise, vaid pigem selles, et kogukond ei tee piisavalt nende probleemide kataloogimiseks. Nagu hr Ambri oma artiklis soovitas, vajavad Androidi arendajad ehk oma versiooni caniuse.com või sdkcritic.com et koguda kõik ebaselged vead ühte andmebaasi. Ainus teine ​​​​võimalus on panna originaalseadmete tootjad need muudatused korralikult dokumenteerima või lõpetama nende tegemise, kuid edu sellega.

Funktsiooni pildi autorid: OpenSignal