Google planuje przejść na model rozwoju „najpierw od początku” funkcji jądra Linuksa w systemie Android począwszy od 2023 r. Czytaj dalej, aby dowiedzieć się więcej.
Kiedy widzisz słowa „Android” i „fragmentacja” w tym samym zdaniu, prawdopodobnie od razu myślisz o Wykres dystrybucji wersji Androida. Jest kilka podmiotów, na które większość osób narzeka, że aktualizacje systemu operacyjnego Android są wprowadzane powoli, ale Google może zrobić tylko tyle, aby siła Producenci OEM mogą szybciej opracowywać i wdrażać aktualizacje. To, co Google może jednak zrobić, to skrócić czas programowania, a tym samym koszt wdrażania aktualizacji.
Pierwszą dużą inicjatywą w długoterminowym projekcie Google mającą na celu zmniejszenie obciążeń rozwojowych jest Projekt Treble. Ogłoszony wraz z Androidem 8.0 Oreo w 2017 roku projekt Treble zmodularyzował Androida, oddzielając strukturę systemu operacyjnego od implementacji dostawcy (HAL i rozwidlenie jądra Linuksa specyficzne dla urządzenia). Ułatwiło to producentom OEM Androida ponowne oparcie swoich systemów operacyjnych na najnowszym frameworku AOSP, ponieważ mogli uruchomić najnowszą wersję bez konieczności aktualizowania kodu od dostawców. W rezultacie producenci OEM mogą szybciej niż dotychczas przygotowywać niestandardowe forki systemu Android, a co za tym idzie, szybciej wdrażać główne aktualizacje systemu operacyjnego.
Kolejnym krokiem w planach Google’a było usprawnienie dostarczania aktualizacji kluczowych komponentów Androida. Google nazwał tę inicjatywę Główna linia projektu kiedy wprowadził go wraz z Androidem 10 w 2019 roku. Google zasadniczo przejął kontrolę nad kluczowymi komponentami systemu operacyjnego i zakazał producentom OEM ich modyfikowania. Następnie skonfigurowali mechanizm dostarczania za pośrednictwem Google Play, aby móc zdalnie wdrażać aktualizacje tych kluczowych komponentów bez konieczności czekania, aż producenci OEM sami zastosują poprawki. Mainline znacznie poprawiło szybkość, z jaką urządzenia otrzymują zaktualizowane wersje ważnych komponentów systemu operacyjnego, co z kolei poprawia bezpieczeństwo całego ekosystemu Androida.
Ale to, co nadchodzi, jest jeszcze ważniejsze i prawdopodobnie stanowi najważniejszą część długoterminowej strategii Google. Kiedy wskazaliśmy wcześniej, jak Treble zmodularyzował Androida, oddzielając framework systemu operacyjnego od dostawcy, jako część tego dostawcy dołączyliśmy „specyficzny dla urządzenia rozwidlenie jądra Linuksa”. kod. Każdy, kto zna Linuksa na komputerach stacjonarnych, rozpozna w nim problem: dlaczego jest on wrzucany do kodu dostawcy o zamkniętym kodzie źródłowym? Problem polega na tym, że chociaż urządzenia z Androidem są dostarczane z jądrem Linuksa, jądro to zawiera m.in działka kodu spoza drzewa.
Jak się tam dotarliśmy? Problem, jak opisał inżynier oprogramowania Google Todd Kjos pod adresem tegoroczna konferencja hydraulików systemu Linux (przez ArsTechnica), wynika z tego, że główne jądro Linuksa jest kilkakrotnie rozwidlane, zanim zostanie dostarczone na urządzenie z Androidem. Google rozwidla każde główne jądro Linuksa w „Wspólne jądro Androida", która ściśle śledzi wydanie główne, ale dodaje kilka poprawek specyficznych dla Androida. Następnie dostawcy SoC, tacy jak Qualcomm, MediaTek i Samsung, rozwidlają się To jądro dla każdego wykonanego przez siebie SoC. Producenci OEM następnie biorą jądro specyficzne dla SoC i dodają dodatkowe poprawki, aby zaimplementować obsługę konkretnego sprzętu, który chcą dostarczać.
W związku z tymi zmianami „aż 50% kodu działającego na urządzeniu to kod spoza drzewa (nie pochodzi z wyższego jądra Linuksa lub wspólnego jądra AOSP)„, według Google’a. Duża ilość kodu spoza drzewa na tych urządzeniach sprawia, że łączenie zmian poprzedzających jest długim i wymagającym procesem. Jest to szkodliwe dla bezpieczeństwa urządzeń, ponieważ producenci OEM muszą włożyć więcej pracy, aby wdrożyć poprawki do luk wykrytych w jądrze Linuksa. Co więcej, powoduje to, że większość urządzeń z Androidem korzysta z jądra sprzed wielu lat, co oznacza, że tracą one nowe funkcje jądra Linuksa.
Aby rozwiązać ten problem, Google pracuje nad ogólnym obrazem jądra systemu Android (GKI), który w zasadzie jest jądrem skompilowanym bezpośrednio z gałęzi ACK. GKI izoluje dostosowania dostawców SoC i OEM do modułów wtyczek, eliminując kod spoza drzewa i umożliwiając Google przesyłanie aktualizacji jądra bezpośrednio do użytkownika końcowego. Google od ponad roku pracuje nad sposobem dostarczania aktualizacji GKI poprzez Sklep Play, poprzez zastosowanie modułu Mainline.
Według naszych źródeł urządzenia uruchamiane za pomocą Androida 12 i dostarczane z jądrem Linuksa 5.10 muszą wdrożyć obraz rozruchowy podpisany przez Google. Własność Google Piksel 6 Seria będzie uruchamiana z systemem Android 12 od razu po wyjęciu z pudełka i dostarczana z jądrem Linux 5.10, zatem oba telefony mogą być pierwszymi urządzeniami na rynku masowym dostarczanymi z GKI.
Ponadto Todd Kjos z Google ujawnił, że firma planuje przejść na model rozwoju „najpierw na wyższym szczeblu” dla nowych funkcji jądra Linuksa. Pomoże to Google zapewnić, że nowy kod wyląduje jako pierwszy w głównym jądrze Linuksa, co zmniejszy przyszłe zadłużenie techniczne powstałe w wyniku lądowania większej liczby kodów spoza drzewa na urządzeniach z Androidem.
W tym tygodniu na konferencji hydraulików systemu Linux Kjos powiedział: „Ponieważ moduły spoza drzewa są naprawdę ważne w naszym przypadku użycia, spodziewamy się, że zawsze będziemy mieć zestaw eksportów i pewne rzeczy, które będą inne lub dodatkowe do tego, co jest upstream, ale cały ten projekt to projekt wieloletni, mający na celu pozbycie się jak największej liczby poprawek spoza drzewa i dostosowanie się w jak największym stopniu do pod prąd." Google zamierza zakończyć prace nad udoskonaleniem istniejących funkcji i izolowaniem zmian dostawców do końca 2022 r a od 2023 r. firma planuje przyjąć model rozwoju „najpierw na rynku wyższego szczebla”, aby uniknąć takich problemów na rynku przyszły.