Různorodost má android pevně zakořeněnou.

Různorodost má android pevně zakořeněnou. | foto: bgr.com, Mobil.iDNES.cz

Roztříštěnost androidu. Nafouklá bublina, nebo skutečná hrozba?

  • 130
Patentové spory a roztříštěnost platformy jsou dva klíčové problémy, které v současné době nejvíce trápí operační systém Android. Závažnost soudních tahanic se liší případ od případu, kdežto roztříštěnost je souhrou několika rozličných faktorů, které v konečném důsledku nemusí být natolik fatální.

Soudní tahanice o patenty, které se většinou týkají spíše samotných zařízení než vlastní platformy Android (výjimkou je například nedávný spor společností Google a Oracle), jsou v některých případech ohraničováním vlastního teritoria armádou právníků. Ti s posvěcením soudů na jednotlivých frontách buď ustupují nebo vítězí. Za nějakou dobu ale může opět nastat příměří, které tu před několika lety bylo.

Problém s roztříštěností je však vryt do samotných základů platformy Android, a jeho konec je tedy v nedohlednu. Na jedné straně je samotný Google ženoucí vývoj kupředu, uživatelé prahnoucí po různých telefonech a nejnovějších funkcích (pokud možno i ve dva roky starých telefonech) a vývojáři aplikací, kteří by nejraději měli vždy pouze jedno unifikované zařízení, chovající se ve všech situacích stejně.

Pak jsou tu samozřejmě výrobci, kteří chtějí dát všechny tyto dílky skládanky dohromady tak, aby byli všichni spokojeni. Právě oni musí vyřešit dilemata, jako které zařízení ještě dostane novější verzi operačního systému a kdy je vhodné uvést na trh úplně nový telefon. To vše navíc s ohledem na konkurenci jenom na platformě Android.

Nejlepší by samozřejmě pro výrobce bylo nevydávat pro starší zařízení žádné nové aktualizace. Nejpodstatnějším důvodem je fakt, že uživatelé si koupili zařízení s danou verzí operačního systému a v žádných obchodních podmínkách není uvedeno, že by rovněž měli dostávat po určitou dobu nové verze, navíc bezplatně. Tento proces vylepšení stávajícího zařízení není rozhodně zadarmo a je v určitém ohledu dobrou vůlí výrobců.

U příležitosti uvedení Jelly Beans a zveřejnění statistik rozdělení jednotlivých platforem (Google je přináší každý měsíc) se pojďme podívat na to, nakolik je roztříštěnost závažným problémem nebo jestli je to jen nafouknutá bublina, která má pouze uškodit pověsti tohoto operačního systému.

Požadavky uživatelů

Při pohledu na rozdělení jednotlivých verzí je vidět, že bezpečnou většinu má verze 2.3 Gingerbread, uvedená na konci roku 2010. Verzi 4.0 Ice Cream Sandwich (ICS) má pouze zhruba 15 procent zařízení, ačkoliv je tato verze k dispozici od podzimu loňského roku. Mezi verzemi 2.3 a 4.0 vyšla ještě verze 3.0 Honeycomb, která však byla určena pouze pro tablety. Ukázala ale budoucí směr vývoje a mnoho užitečných funkcí v uživatelském rozhraní, které následně byly přeneseny i do ICS.

Rozložení jednotlivých verzí operačního systému Android k počátku srpna 2012. Více než na polovině zařízení je nainstalovaná starší verze 2.3.3.

Samozřejmě se nesmí zapomínat na další funkce jako wi-fi direct, NFC či podpora režimu USB host. Jelly Bean k tomu přihodil třeba rozšíření upozornění či celkové zrychlení operačního systému. Pro uživatele to může být na první pohled velký rozdíl mezi jednotlivými verzemi operačního systému. V konečném důsledku tyto funkce využije pouze minimum uživatelů, kteří by daleko více ocenili uživatelské funkce v rámci operačního systému.

Ty však přináší uživatelské nástavby od samotných výrobců a nejnovější verze androidu v některých případech pouze tyto funkce integruje do své základní verze. Stačí si vzpomenout kupříkladu na odemykací obrazovku se zkratkami na nejpoužívanější aplikace u HTC nebo bohatší nabídku v oblasti upozornění u řady telefonů ostatních výrobců.

Výrobci tak částečně suplují práci samotného Googlu, který provádí daleko náročnější změny v chování celého operačního systému. Tou nejpodstatnější z poslední doby je nejspíše možnost mít v jedné aplikaci (resp. jednom apk souboru) obsaženou někdy naprosto odlišnou logiku pro práci s aplikací na tabletech a na telefonu. Tato novinka v podobě tzv. Fragmentů přišla společně s verzí Honeycomb.

Kompatibilita ve všech ohledech

Hned po výrobcích jsou v nejtěžší pozici vývojáři, kteří musí vycházet z přání uživatelů, přizpůsobovat svoje aplikace pro nejnovější zařízení a přidávat nové prvky z novějších verzí platformy. Vývojáři se však mohou spolehnout na tzv. dopřednou kompatibilitu. To znamená, že aplikace vytvořená pro starší verzi systému vždy poběží na nejnovějších strojích. Navíc Google pro tyto starší aplikace zapíná speciální režim kompatibility, který přizpůsobuje (většinou) uživatelské prostředí aplikace novější platformě. Tento režim však mohou vývojáři vypnout či zapnout podle svého přání.

Jeden instalační apk soubor může obsahovat dvě různá rozložení prvků na displeji i odlišnou logiku práce s těmito prvky. Zde na ukázce s telefonem a tabletem.

Z tohoto by si mohl vzít příklad operační systém Windows Phone, který během poslední dvou let předvedl dva obrovské veletoče s nekompatibilitou aplikací na různých verzích systému. Jakkoliv tento krok může být ospravedlňován po technické stránce, přináší to problémy pro vývojáře, výrobce a samozřejmě i zákazníky.

Kromě dopředné kompatibility funguje na platformě Android částečně i zpětná kompatibilita, což znamená, že některé nové funkce lze používat i na starší platformě. K tomu slouží tzv. Support Library (nazývaná rovněž Compatibility Pack), kterou vývojáři přibalí ke své aplikaci. Mohou tak mimo jiné využívat zmiňované Fragmenty nebo třeba rotující obrazovky, které jsou známé například z mobilní verze Play Store. Paleta možností tohoto přídavku je samozřejmě daleko širší, ale týká se spíše věcí, které ulehčují práci vývojáři a nejsou pro uživatele na první pohled vidět.

Mimo to vznikají neoficiální knihovny, které jsou schopné i na starší platformy přidat nové uživatelské prvky a další funkce. Jedním příkladem za všechny může být knihovna pro zpřístupnění horního či spodního panelu nástrojů, známého z platformy Honeycomb. Tyto knihovny opět vývojáři přibalí do své aplikace.

Různorodost má v krvi

Podstatnou výhodou androidu proti ostatním platformám je fakt, že s velkou odlišností zařízení počítal od samotného počátku a je k tomu přizpůsoben jak operační systém, tak samotný způsob vývoje aplikací. Vývojáři jsou k podpoře různých telefonů vedeni už od prvních krůčků při vývoji na této platformě.

Netřeba dodávat, že Windows Phone 7 musí běžet pouze na předem jasně definované hardwarové konfiguraci s daným rozlišením displeje. Tento fakt se nejspíše v brzké době změní a na trh budou přicházet i levnější zařízení s tímto systémem. Obdobná situace je rovněž u iOS, kde jsou prvky jako tlačítka a textová pole na obrazovce pozicovány (většinou) absolutně se zadáním přesných souřadnic v pixelech.

Právě nutnost pozicovat naopak vše relativně patří k hlavním zásadám při vývoji aplikací pro android. Uživatelské prvky se tak mohou po obrazovce roztahovat či smršťovat přesně podle potřeby. Navíc je možné pro různě velké displeje snadno nadefinovat úplně jiné rozložení těchto prvků na displeji. Obdobně lze změnit i další vlastnosti v aplikaci pouze vytvořením příslušného adresáře pro danou konfiguraci zařízení. Například sem lze umisťovat obrázky v různých rozlišeních podle kvality displeje.

Při návrhu uživatelského rozhraní se navíc nepoužívají tradiční pixely, ale tzv. density-independent pixely (dp), které rozměry prvků nebo vzdálenosti mezi nimi přepočítávají podle hustoty pixelů na displeji. Je totiž rozdíl, pokud má tlačítko rozměry 80 × 40 px na displeji s rozlišením 240 × 320 px nebo 720 × 1280 px. Na větším displeji by samozřejmě bylo tlačítko neúměrně malé.

V horní řadě byly pro určení velikosti prvků použity pixely a ve spodní řadě již density-independent pixely. Na ukázce jsou tři různé hustoty (density) displeje.

Použití density-independent pixelů pro určení rozměrů zaručí, že toto tlačítko bude mít vzhledem k hustotě displeje stejnou velikost. Samozřejmě obdobné postupy se používají i na další prvky uživatelského rozhraní tak, aby aplikace vypadala na všech zařízeních dobře. Není většinou nutné vytvářet toto rozložení prvků pro všechna rozlišení displeje a vývojář si většinou vystačí pouze s jediným nadefinovaným rozložením.

Relativně velkým problémem může být pro vývojáře rozdílnost některých zařízení v případě, že chtějí používat nějakou speciální funkci systému, která nemusí na všech zařízeních fungovat. Takových aplikací však bývá minimum. Vývojáři graficky náročných her se navíc musí potýkat s různým výkonem jednotlivých zařízení a často rozdílnými vlastnostmi jednotlivých platforem, pokud jde o vykreslování obrazu.

Důležité je zmínit, že přestože je android otevřená platforma a každý si s ním může dělat prakticky cokoliv, otevřená není samotná aplikace Play Store. Pokud některý výrobce chce získat přístup do Play Store, musí dodržet předepsané vlastnosti zařízení a samotného operačního systému, aby Play Store mohl v daném zařízení provozovat. Právě toto bývá velká páka na všechny výrobce.

Pomalé tempo výrobců

Hodně na čas si dávají výrobci zařízení, kteří přinesli na podzim uvedený ICS prozatím pouze na několik starších zařízení a jejich nejlepší přístroje pro tento rok. Přitom nyní po uvolnění zdrojových kódů pro Jelly Beans jim nic nebrání začít pracovat i na zapracování tohoto updatu. Výrobci to však nestíhají, a rozšíření nových verzí se tak odkládá.

Důvodů pro toto zpoždění může být hned několik počínaje marketingovými zájmy, přes velkou rozdílnost zařízení a uživatelských nástaveb až po nepříjemný fakt, že update musí projít několika koly schvalování, včetně těch u mobilních operátorů v jednotlivých zemích, kde má být update nasazen. Podstatné je, že kdyby se do celého procesu investovalo více peněz a úsilí, mohly by být updaty nasazovány daleko rychleji a pro větší množství zařízení.

Problémem tohoto přístupu je fakt, že výrobci mají daleko pomalejší tempo vydávání nových přístrojů a Google zkrátka jede neustále kupředu. Dobrým příkladem je situace s ICS, kdy výrobci čekali až na veletrh Mobile World Congress. Tam představili novinky na tento rok, které se jako vždy dostávají do prodeje až v průběhu jara. Dále například update velmi oblíbeného modelu Samsung Galaxy S II trval několik dlouhých měsíců.

Časový interval mezi vydáním ICS a Jelly Beans byl přitom skoro devět měsíců, což je naprosto dostatečná doba pro jeho nasazení s velkou časovou rezervou. Jedinou možností je, aby si začali výrobci více konkurovat a předhánět se v uvádění nových verzí systémů. Obdobně jako Google musí chvátat, aby byl o krok napřed před iOS a ostatními konkurenty. Jak Google, tak výrobci jsou totiž na jedné lodi, ale poslední rok to vypadá, že výrobci berou veslují odpočinkovým tempem. Jelly Beans tak přišel sice možná s lehkým předstihem, ale ještě v mezích jízdního řádu.

Roztříštěnost spíše strašákem

Pokud bychom více zmíněné měli shrnout, tak na roztříštěnost se dá dívat ze dvou hlavních hledisek. Tím prvním je rozdělení samotných verzí operačního systému, kde jsou brzdou především výrobci. Ti ale mají několik různých zájmů, které musí v tomto ohledu vybalancovat.

Proto nasazení updatu proběhne jednou dříve, jindy později a někdy také vůbec. Přestože jsou rozdíly mezi platformami někdy opravdu velké, běžný uživatel ve většině případů netuší, jakou verzi má v zařízení a vystačí si telefonováním, brouzdáním po webu a využíváním aplikací. Takže o možnosti updatu ani netuší nebo je spokojený se stávajícím stavem.

Roztříštěnost androidu

V případě aplikací přichází na scénu druhé zmiňované hledisko. Zde odvádí hlavní část práce Google, který na platformě Android umožňuje dopřednou a částečně i zpětnou kompatibilitu aplikací. Navíc vývojáři tuto zpětnou kompatibilitu ve smyslu přenášení nových funkcí na starší platformy znatelně rozšiřují.

Operační systém Android navíc již prakticky od začátku svého vývoje počítal s nasazením na nejrůznější typy zařízení a vývoj aplikací je dobře přizpůsoben tomuto trendu. Je to pro vývojáře v určitém ohledu práce navíc, ale je to daň za tak široké portfolio telefonů a tabletů.

Zmíněno bylo pouze několik klíčových vlastností, o kterých se hovoří v souvislosti s roztříštěnosti platformy Android. Jisté je však to, že ačkoliv je toto relativně velký problém, s kterým je potřeba se naučit žít, rozhodně to není natolik fatální záležitost, jak se často uvádí. Celý ekosystém je ze strany Google dobře nastavený (situace se s vydáváním nových verzí vždy o něco lepší) a je na vývojářích a výrobcích, aby se snažili dodržovat nastavené standardy a s přechodem na novější verze neotáleli.