Szerző: Orosz Gábor

2016. március 07. 09:30:00

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.

ONLINE Scrum és gépi tanulás meetupjaink indulnak! Jelentkezik az ingyenes HWSW free!, immár online formátumban.

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