Project Treble — oczekiwania kontra rzeczywistość, czyli instalujemy GSI i sprawdzamy co się stanie

W 2017 roku, wraz z premierą Androida 8.0 Oreo, zadebiutował tajemniczy Project Treble. W założeniach znacząco upraszczał proces dostosowywania oprogramowania pod kątem konkretnego urządzenia, co miało przełożyć się na szybsze udostępnianie aktualizacji. Cel szczytny i wiele wskazuje na to, że znalazł realne odzwierciedlenie w rzeczywistości. Jakby krócej trzeba oczekiwać, choć ciężko jednoznacznie stwierdzić, czy to „wina” panującego trendu czy wspomnianego projektu – być może jest to wypadkowa obu tych rzeczy.

No ale co miało wpływać na poprawę? Poprzez wydzielenie partycji VENDOR, czyli de facto sterowników podzespołów specyficznych dla danego urządzenia (HAL - Hardware Abstraction Layer), zlikwidowano przymus każdorazowego i niepotrzebnego aktualizowania sporych ilości danych. Co to oznacza w praktyce? Ano to, że instalując generyczny obraz systemu (GSI, czyli taki „ogólny”, nie skrojony pod nasz sprzęt) teoretycznie powinniśmy otrzymać coś zdatnego do działania. Z mojego doświadczenia wynika, iż bywa z tym różnie, jednak sam fakt „poprawnego wystartowania” robi na mnie ogromne wrażenie (choć muszę szczerze przyznać, że wiele zależy od szczęścia i posiadanego urządzenia). Warto przy tym wspomnieć, że niestety nie obeszło się bez podziału, tj. smartphony sprzedawane z Androidem 8.0 / 8.1 obsługują wyłącznie Legacy GSI (chyba, że otrzymają stosowne uaktualnienie partycji VENDOR), natomiast te z Androidem 9.0 to już Android GSI. Jeśli przyszła odsłona robocika postąpi w ten sam sposób, to nie unikniemy chaosu.

To tyle jeśli chodzi o laicki wstęp, przejdźmy do konkretów – uruchomimy GSI Androida Q (DP1 i DP2 w wersji Generic oraz Pixel) oraz Androida Pie na smartphonie Redmi Note 5 i sprawdzimy co się stanie. W przypadku tego pierwszego mowa jest o obrazach przygotowanych przez niejakiego Erfan, przystosowanych do urządzeń „a-only” (oryginalny obraz wspiera wyłącznie partycje A/B – niezbędne do Seamless Updates). Ponadto, do poprawnego działania wymagane jest wrzucenie dwóch dodatkowych paczekPermissiver v2 oraz ZygoteFix. Jeśli chodzi o „dziewiątkę” to wykorzystam aktywnie rozwijany przez phhusson GSI AOSP 9.0 w wersji ze zintegrowanymi GAPPS.

Jakby ten temat kogoś zainteresował…

… to warto odwiedzić stosowną podstronę GitHub’a. Znajdziecie tam wszystkie kluczowe informacje z tego zakresu oraz niezbędne odnośniki. Umieszczono tam nie tylko listę obsługiwanych urządzeń, lecz również wszelkie modyfikacje i ich GSI. Jakby dla kogoś to wciąż było zbyt mało, to istnieje też kilka grup na Telegramie – chociażby #phh-treble – device&logs oraz PROJECT TREBLE DEVELOPMENT, a nawet coś stricte pod Androida Q.

Przygotowanie

Zakładam, że osoby czytające ten wpis wiedzą czym jest ADB, recovery i inne tego typu cuda na kiju. Jeśli nie, to polecam przeczytać jeden z moich poprzednich wpisów – nie ma sensu ponownie się nad tym rozwodzić. Skoro mamy to już za sobą, to przejdźmy do pobrania niezbędnych plików – wszystko podlinkowane wyżej. Zapisujemy je w dogodnej lokalizacji, kopiujemy na smartphone (zależnie od preferencji można również skorzystać z ADB), odpalamy partycję przywracania, czyścimy partycje /system oraz /data, a następnie instalujemy trzeba. Na co zwrócić uwagę? Ano warto pamiętać o tym, że GSI, w przeciwieństwie do „customów” rozprowadzanych w formie plików ZIP, wgrywamy na /system. Stosowne okienko z wyborem zostanie nam oczywiście wyświetlone, wystarczy spokojnie czytać i nie klikać wszystkiego co popadnie. Generalnie żadna w tym filozofia, twórcy modyfikacji zawsze zamieszczają klarowne instrukcje.

Skoro to wszystko już wiemy, to zainstalujmy GSI AOSP 9.0

No i przyznam szczerze, że to co przytrafiło mi się po instalacji zaskoczyło mnie całkowicie – bezlitosny bootloop. Kilkukrotnie ponawiałem procedurę, próbowałem różnych kombinacji i nic. W żaden sposób nie mogłem zmusić tego wydania do poprawnego uruchomienia. Jako, że chciałem jedynie sprawdzić, czy się odpali i jak będzie działać, a nie kombinować na siłę, to odpuściłem w tym momencie. Nie to nie, najwyraźniej nie było mi pisane przetestowanie tego na swoim urządzeniu.

Teoretycznie mogłem robić coś źle, ale ...

… druga próba zakończyła się sukcesem. Bez problemu uruchomiłem Androida Q, co pozwoliło mi wyeliminować (przynajmniej teoretycznie) mnie samego jako źródło problemu. Uczciwie trzeba jednak przyznać, że choć załadował się bez komplikacji, o tyle jego działanie dalekie było od ideału. Wersja Pixel na okrągło straszyła niespodziewanym zatrzymaniem działania Pixel Launchera, więc teoretycznie wystarczyło go zamienić na inny. Gdyby to było jedyne niedociągnięcie, to faktycznie można by się bawić tym dalej – niestety tak nie było. Niektóre podstrony systemowych ustawień wywalały całość lub wyświetlały jedynie białe tło (chociażby zarządzanie baterią). Odnośnik do nowej zakładki z informacjami, póki co obecnej jedynie w wersji Androida Q dla Pixeli, w ogóle nie reagował na dotyk. Automatyczna jasność ekranu nie funkcjonowała jak powinna i nawet bym przymknął na to oko, lecz suwak manualnej regulacji również był wyłącznie na paradę. I żeby nie było – wersja Generic była równie niedopracowana.

Powyższe żale idealnie podsumowuje zwrot „gra niewarta świeczki”. Chyba, że naprawdę jest nam to niezbędne do pracy, tj. tworzenie i dostosowywanie aplikacji do nadchodzącej odsłony Androida. Super sprawa w formie ciekawostki, lecz nic ponad to.

Kilka słów otuchy

Choć moje pierwsze kroki w świecie GSI zdecydowanie nie należą do udanych, to jednak warto mieć kilka rzeczy na uwadze. Przede wszystkim trzeba zdawać sobie sprawę z tego, że choć całość powinna działać wszędzie tak samo, to w praktyce wypada z tym mocno różnie – to, że u mnie coś nie działało nie oznacza, iż jest to regułą. Niektórym system się w ogóle nie uruchomi, u innych z niewielkimi problemami, a jeszcze u innych będzie całkowicie nieużywalny – wystarczy zerknąć na XDA. Nawet jeśli jest na to jakaś reguła, to nie mam na tyle obszernej wiedzy, by ją zauważyć / rozpoznać. Podejrzewam, że wiele tutaj zależy od dobrej woli producenta i jego implementacji założeń projektu Treble.

W związku z powyższym, uruchomienie GSI bardzo często wymaga dodatkowego zaangażowania ze strony twórcy danej modyfikacji oraz samego zainteresowanego użytkownika. Ogromne nakłady energii przeznaczone na kombinowanie są momentami nie do uniknięcia, chyba, że w ogóle nam na tym nie zależy – wtedy machnie się na to ręką i wróci do mniej problematycznych rozwiązań (oryginalne oprogramowanie lub modyfikacje skrojone pod nasze urządzenie).