obecny ekosystem Androida jest zanieczyszczony setkami różnych wersji Androida, z których każda działa w innym wariancie jądra Linuksa. Każda wersja jest przeznaczona dla innego telefonu i ma różne konfiguracje. Google pracuje nad rozwiązaniem problemu, dodając główne jądro Linuksa do Androida.
jak jądro Linuksa jest obecnie obsługiwane w Androidzie
zanim dotrze do ciebie, jądro Linuksa na Twoim telefonie przechodzi przez trzy główne kroki.
Po Pierwsze, Google pobiera wersję LTS (Long Term Support) jądra Linuksa i dodaje cały kod specyficzny dla Androida. Staje się to „wspólnym jądrem Androida”.
następnie Google wysyła ten kod do firmy, która tworzy System na chipie (SoC), który uruchamia telefon. Zazwyczaj jest to Qualcomm.
gdy producent SoC zakończy Dodawanie kodu do obsługi procesora i innych układów, jądro jest następnie przekazywane do rzeczywistego producenta urządzeń, takiego jak Samsung lub Motorola. Następnie producent urządzenia dodaje kod obsługujący resztę telefonu, taki jak wyświetlacz i aparat.
każdy z tych kroków zajmuje trochę czasu i skutkuje jądrem, które nie będzie działać z żadnym innym urządzeniem. Oznacza to również, że jądro jest bardzo stare, zwykle ma około dwóch lat. Na przykład Google Pixel 4, który został wysłany w zeszłym miesiącu, ma jądro od listopada 2017 r., które nigdy nie zostanie zaktualizowane.
Google zobowiązało się do tworzenia łatek bezpieczeństwa dla starszych urządzeń, co oznacza, że utkną na oku ogromną ilość starego kodu.
przyszłość
w zeszłym roku Google ogłosiło plany naprawienia tego bałaganu. W tym roku ujawnili, jakie postępy poczynili na konferencji 2019 Linux Plumbers Conference.
„wiemy, czego potrzeba, aby uruchomić Androida, ale niekoniecznie na dowolnym sprzęcie. Więc naszym celem jest znalezienie tego wszystkiego, potem pod prąd i spróbowanie być jak najbliżej linii głównej.”
Sandeep Patil, Kierownik Zespołu ds. Jądra Androida
pokazali Xiaomi poco F1 z systemem Android z odpowiednim jądrem Linuksa. Jednak niektóre rzeczy nie wydają się działać, takie jak procent baterii, który utknął w 0%.
więc jak Google planuje to zrobić? Biorąc stronę z ich projektu Treble playbook. Przed projektem Treble, niskopoziomowy kod, który wchodził w interakcję z urządzeniem i samym Androidem, był jednym wielkim bałaganem kodu. Projekt Treble oddzielił te dwa i uczynił je modułowymi, dzięki czemu aktualizacje Androida mogły być wysyłane szybciej, a kod niskiego poziomu mógł pozostać niezmieniony między aktualizacjami.
Google chce wprowadzić tę samą modułowość do jądra. Ich plan ” zakłada stabilizację ABI w jądrze Linuksa i posiadanie stabilnego interfejsu dla jądra Linuksa i dostawców sprzętu do pisania. Google chce oddzielić jądro Linuksa od wsparcia sprzętowego.”
oznacza to więc, że Google wysyłałoby jądro, a sterowniki sprzętowe byłyby ładowane jako moduły jądra. Obecnie jest to tylko propozycja. Istnieje jeszcze sporo problemów technicznych, które muszą zostać rozwiązane. więc to się nie wydarzy w najbliższym czasie.
opozycja ze strony Open Source
społeczność Open Source nie będzie zadowolona z pomysłu umieszczania zastrzeżonego kodu w jądrze. Wytyczne dla jądra Linuksa stwierdzają, że sterowniki muszą mieć licencję GPL, aby mogły zostać włączone do jądra. Zwracają również uwagę, że jeśli zmiana kierowcy spowoduje błąd, zostanie on rozwiązany przez osobę, która go stworzyła. Oznacza to mniej pracy dla producentów urządzeń w dłuższej perspektywie.
końcowe przemyślenia na temat włączenia jądra mainline do Andorid
jak na razie jest to tylko propozycja. Istnieje duża szansa, że Google zacznie pracować nad projektem tylko po to, aby go porzucić, gdy zdadzą sobie sprawę, ile pracy to zajmie. Wystarczy spojrzeć na to, ile projektów Google już porzucił.
Android Police słusznie zauważył, że Google pracuje nad swoim systemem operacyjnym Fuchsia, który wydaje się mieć na celu zastąpienie Androida pewnego dnia.
więc pytanie brzmi, które zadanie Google spróbuje wykonać, uruchamiając Androida z jądrem Linuksa, czy zakończyć pracę nad ich zunifikowanym zamiennikiem Androida? Tylko czas może na to odpowiedzieć.