:

Szerző: Orosz Gábor

2016. március 7. 09:30

Vélemény: Android-frissítések a fejlesztő szemével

A Google a háttérben keményen dolgozik a széttöredezett Android egyesítésén. Az erőfeszítés meglepően hatásos, fejlesztői és felhasználói szemmel sem esett szét az ökoszisztéma.

Február közepén írtunk véleménycikket az Android-frissítések problémájáról, elsősorban gyártói és biztonsági szemszögből. De van másik aspektusa is a kérdésnek: hogyan látja egy fejlesztő a frissítések hiányát? Házi szakértőnk, Orosz Gábor válaszol.

A budapest.mobile Facebook-csoport tagjai már megszokhatták, hogy kicsit más szemüvegen keresztül értelmezem a helyzetet, mint ami általában megszokott. Így van ez az androidos frissítésekkel és a platform fragmentációjával kapcsolatban is: elöljáróban csak annyit mondok, a felhasználók és fejlesztők oldaláról szemlélve sokkal jobb a helyzet, mint amit a puszta számok alapján gondolnánk.

Apple és iOS

Hogy kontextusba helyezzük a frissítések kérdését, érdemes ránézni a konkurenciánál, az Apple iOS platformon miképp zajlik ez. A saját játszóterén az Apple minden eszközt egységesen, egyidőben frissít, a mobilszolgáltatók beleszólása nélkül.

Marshmallow - parányi részesedés négy hónap alatt.

Ennél fontosabb szemszögünkből, hogy a frissítésekben egyszerre érkeznek az OS fejlesztések, a bug és a biztonsági javítások - de eddig semmi meglepetés. Viszont a frissítések ennél többet is tartalmaznak, a különböző SDK-k (például a WebView és a térképek), szolgáltatások, és a saját alkalmazások (App Store, Safari bögésző, iMessage, stb) se jelentenek kivételt, ezek szintén a rendszerrel együtt, iOS-frissítésként töltődnek le.

A visszafelé kompatibilitás kérdése esetükben fel se merül, csak egy irány van, ez pedig az előre. Az Apple évről évre bizonyítja, hogy elképesztő gyorsan tudja frissíteni a telepített bázist a meredeken emelkedő aktív felhasználói számok mellett is. Ezt rajtuk kívül más nem tudja ilyen hatékonyan átvinni a piacon.

Furcsaság csak annyi van, hogy a legnépszerűbb 100 ingyenes alkalmazás 85%-a még mindig támogatja az iOS7-et, sőt sok az azt megelőző verziókat is. Mindezt teszi amellett, hogy egyszerre két verziónál többet támogatni az Apple mindig előre hozzáállása okán meglehetősen munkás. Általánosságban az mondható el, hogy egy-egy főverziót nagyjából 3 évig támogatnak a fejlesztők.

Google és Android

Az Android helyzetét alaposan bemutatta az előző cikk, évről-évre rettentő lassú az új fő verziók adoptációja, és ez alól a legújabb Marshmallow se kivétel. Ezek alapján nem meglepő, hogy folyamatos kritika éri a Google-t és a gyártókat, amiért képtelenek a telepített bázist újabb rendszerverziókkal ellátni.

De az Apple egyesített hardver-szoftver filozófiájával szemben itt egy alapjaiban más modellről van szó: a játék sokszereplős és mindenik saját (ütköző) érdekeit helyezi előtérbe. A platform sorsával csak a Google törődik, amely a többi szereplőt eddig képtelen egy irányba terelni.

Play Services - a nagy platformegyesítő

A Google-nek más utat kellett találnia a probléma orvoslására, és ismételten a Unixon már bevált módszerekhez nyúlt. A rendszert rengeteg kisméretű részre bontották, amelyeket külön-külön, a teljes rendszer frissítése nélkül is naprakészen tud tartani. Már korábban is ez az irány látszott, de a tavalyi Google I/O-n teljes mértékben igazolást nyert, a főverzióknak jelentősen csökken a szerepe, az elosztott, aszinkron irány jött helyette. Máris kifejtem részletesen.

Ünnepi mix a bértranszparenciától a kódoló vezetőkig

Négy IT karrierrel kapcsolatos, érdekes témát csomagoltunk a karácsonyfa alá.

Ünnepi mix a bértranszparenciától a kódoló vezetőkig Négy IT karrierrel kapcsolatos, érdekes témát csomagoltunk a karácsonyfa alá.

Az átlag felhasználó előtt mindez úgy realizálódik, hogy bár a legújabb Android frissítés ugyan még nem érkezett meg a készülékére, de érzésre nem marad ki semmiből. Az összes Google alkalmazás a Play Store-ból önállóan frissül, ide értve a Chrome böngészőz és a magát a Play Store alkalmazást is. Az operációs rendszer leginkább szembetűnő részei, a launcher vagy a billentyűzet szintén elérhetőek áruházból, így a telepítés teljesen sima, és a frissítés is akadály nélküli.

Fejlesztői szemmel nézve is sokat javult a helyzet. A Play Servicest már évekkel ezelőtt leválasztották a rendszerről. Ez egy olyan komponens, ami számos Google-specifikus UI komponenshez, API-hoz és szolgáltatáshoz engedi hozzáférni a fejlesztőket. Egészen API Level 7-ig (Android 2.1) visszamenőleg elérhető a készülékeken, és a Play Store-ból folyamatosan frissül minden olyan telefonon, ahol a Google-féle Android fut. A megközelítés előnye, hogy mindeközben az APK mérete nem növekszik - igaz, növekszik helyette a Play Services, amelyre az alkalmazások támaszkodnak.

Új WebView-architektúra, hibrid appokhoz.

Hasonló megközelítést alkalmaz a Google a hibrid (natív+web) alkalmazások esetében is. A KitKattel a webes nézetet produkáló WebView már Chromium-alapokra és frissített V8 JavaScript-motorra állt át. Még nagyobb dobás, hogy Lollipoppal a WebView egy különálló, boltból frissülő komponens lett, igaz, ennek hatása a Lollipop lassú terjedése miatt egyelőre nem eléggé hangsúlyos.

Az új verzióik természetesen hoznak magukkal új funkciókat és komponenseket is szép számmal. Erre kiváló példa a Lollipop, amelyet a Material Design megjelenése alaposan felforgatott számos új UI komponenssel. Hogyan kerüli el ebben az esetben a fragmentációt a Google - hogy ne kelljen külön UI-t készíteni a pre-Lollipop és a poszt-Lollipop verziókhoz?

A megoldás a Support Library. Ez egy kiterjedt könyvtár, amelynek használatával a régi verziókon is elérhető szinte minden komponens, amit az újabb rendszerekben bevezet a Google. A fejlesztőknek ezen keresztül elérhetőek a UI komponensek, például a Fragment, RecyclerView, CoordinatorLayout, ActionBar vagy épp a ViewPager. És nem csak a felületre vonatkozik, a UI-hoz nem kötődő komponensek, mint a Loader, FileProvider vagy a LocalBroadcastManager szintén elérhető, verziótól függetlenül. Ezek nagy részét egészen API Level 4-ig elérhetővé teszi a Google, de a markáns vonalat a Level 7-nél, a már említett Eclairnél húzza meg a cég, ennél a verziónál már szinte semmi nem hiányzik.

A fentiek hatása, hogy a rendszer fejlesztői szemszögből sokkal kevésbé fragmentált, mint ahogy az kívülről tűnik. Az egyetlen komoly limitáció, amivel számolni kell, az a hardveres jellemzőkhöz kötődik - például az újabb modellekben terjedő ujjlenyomat-olvasó nyilván nem portolható vissza a régebbi eszközökre. Kifogásként csupán annyi merülhet fel, hogy a Support Library-k kis késéssel követik az új főverziókat, vagyis az új képességek a régebbi rendszereken csak hetekkel később implementálhatóak.

A felhasználó szemszögéből ez azt jelenti, hogy az appok Android-verziótól függetlenül ugyanúgy néznek ki és ugyanúgy is működnek. A fejlesztőknek csupán arra kell ügyelniük, hogy a standard rendszerhívások helyett a Support Library-ből húzzák be a megfelelő metódusokat és függvényeket, más teendő nincs.

A saját tapasztalatom azt mutatja, hogy a fejlesztők Android 4.0-ig (Jelly Bean) visszamenőleg biztosan támogatják a főverziókat, sőt, a bátrabbak még ennél is jobbanvissza mennek, a Froyo is elő szokott fordulni. Ez legalább 7 verzió együttes támogatását jelenti, ez alapján az a következtetés vonható le, hogy általában 4 évvel visszamenőleg biztos támogatják a nagy verziókat a fejlesztők.

Összegzés

Látható, hogy frissítés szempontjából teljesen más filozófiát követ a két rendszer, még az Apple a big bang frissítésekben hisz, az Android esetében az OS fő verziók frissítések szerepe jelentősen kisebb, rengeteg apró modul él külön életet, és frissül magában. Viszont a biztonsági frissítések ügyét mindenképp rendbe kellene tenni, az alól nincs mentség.

A cikk szerzője Orosz Gábor, a Budapest Mobile fejlesztői Facebook-csoport alapítója, szabadúszó fejlesztő.

a címlapról