Android – o fragmentacji kodu

Byłbym Ci wdzięczny gdybyś ten artykuł przeczytał na mojej stronie tech-mit.blogspot.com

android-fragmentacjaAndroid – co i jak

Android dzięki swej otwartości, ilości aplikacji oraz wsparcia ze strony ich twórców cieszy się niezwykłym powodzeniem na rynku. Praktycznie każdy z nas go posiada (może nawet o tym nie wiedząc). Co chwila widzimy reklamy z nowym urządzeniem czy to tablet, smartfon czy lodówka ;). Jednak mimo tylu plusów jest jeszcze nie co minusów.

Fragmentacja

Od wersji 1.0 aż do wydania wersji Kit Kat upłynęło dużo czasu. Jednak z każdą kolejną wersją systemu, urządzenia z wcześniejszym jego wydaniem niezwykle często nie otrzymują już aktualizacji. Takie zjawisko nazywamy fragmentacją czyli pozostawienie na rynku nieaktualizowanych urządzeń. Głównym powodem tego stanu jest nie opłacalność. Producenci urządzeń z systemem Android nie mają tutaj możliwości zarobić. Wolą wydawać coraz to nowsze urządzenia, często szybsze, ładniejsze, z większym ekranem i co gorsza droższe zamiast postarać się o aktualizację softu. Przecież w ten sposób można wyrobić naprawdę dobrą opinię o marce (niemile pozdrawiam HTC).

Więcej informacji znajdziecie w raporcie opensignal.com http://opensignal.com/reports/fragmentation-2013/fragmentation-2013.pdf

Zagrożenia

Co się dzieje z urządzeniem  z nieaktualnym softem? Jest narażone na ataki, utratę danych. Mało osób zdaje sobie z tego sprawę jakie może to mieć konsekwencje i do jakich kłopotów może nas to doprowadzić. Co gorsza urządzenia, które mają teraz swoją premierę posiadając układy takie jak NFC mogą stać się nie lada gratką dla złodziei naszych danych, haseł.

Cyanogenmod, OldDroid, Parandroid

Jednak dzięki w/w otwartości powstały projekty takie jak:

  • Cyanogenmod
  • OldDroid
  • Parandroid

Wszystkie te projekty mają początek w AOSP czyli Android Open Source Program, która jest czystym niemodyfikowanym kodem prosto ze stajni Google.

Te trzy projekty (w sumie już marki) mają za zadanie stworzyć możliwość portu nowego systemu dla starszych urządzeń i nie tylko. Dla przykładu – mój telefon Samsung Galaxy Gio, ostanią aktualizację od producenta otrzymał do wersji 2.3.7. Jednak dzięki projektowi Cyanogenmod mogę cieszyć się wersją systemu z numerkiem 4.0.4 (Ice Cream Sandwich). Ważne do podkreślenia jest fakt iż mój telefon posiada procesor ARM v6 a wersja systemu z numerkiem 4 wymaga już wersji 7. Dzięki staraniom tych grup a także Maclaw Studio, jądro systemu można było przenieść/przepisać na nieco słabszą architekturę.

Konsekwencje fragmentacji

Wyobraź sobie że jesteś twórcą aplikacji. Chciałbyś aby aplikacja działa na wszystkich możliwych urządzeniach. Schody zaczynają się już kiedy spróbujesz wyliczyć ile wersji lub ile poprawek będziesz musiał nanieść aby to było możliwe.
Nie wszystkim się to udaje i chce. W zależności od systemu, jego architektury zawiłości, które przez przepisywania systemu na inne architektury występują są niewiarygodne. Oczywiście powstały rozwiązania, które lepiej lub gorzej sobie radzą z taką sytuacją.

Możliwe rozwiązania

Myślę, że jest kilka sposobów:

  • spowolnienie wydania nowych urządzeń w celu wydania aktualizacji dla starszych urządzeń (raczej niemożliwe)
  • uporządkowany plan wydawniczy
  • uwzględnienie w procesie tworzenia nowego/ulepszanego jądra możliwości przeniesienia na starsze urządzenia
  • wydawanie pełnej specyfikacji systemu na długo przed jego premierą

A jak z tym problemem radzą inni producenci systemów mobilnych?

Microsoft udostępniając swój system producentom przesyła im bardzo restrykcyjną specyfikację techniczną (podzespołów). Dzięki temu gignat z Redmond może samodzielnie (bez pośrednictwa producentów) wydawać aktualizację systemu.

Apple natomiast wybrał ścieżkę zamknietego software oraz hardware. Dzięki czemu dość długo dane urządzenie jest wspierane i dostaje niezbędne poprawki. Jednak systemu IOS nie spotkamy nigdy na urządzeniu innym niż od Apple.