Jak partycje A/B i płynne aktualizacje wpływają na rozwój niestandardowy na XDA

Być może słyszałeś już o płynnych aktualizacjach. Obejmuje to coś zwanego „partycjami A/B”. Co to jest i jak wpływa na rozwój niestandardowy na XDA?

Kiedy wypuszczono Androida Nougat, rozmawialiśmy o tym wszelkiego rodzaju nowe funkcje. Na początek otrzymaliśmy nowo zaktualizowany interfejs użytkownika wraz z długo oczekiwanymi możliwościami obsługi wielu okien i obsługą Vulkan Graphics API. Jednak jeden ukryty pod maską dodatek przeleciał nad głowami większości użytkowników. Android Nougat wprowadził „Bezproblemowe aktualizacje” na urządzeniach obsługujących partycje A/B. Zdecydowana większość istniejących urządzeń z Androidem (z wyjątkiem nowych Google Pixel i Google Pixel XL) nie miała wówczas partycji A/B i dlatego nie mogła korzystać z płynnych aktualizacji. Podstawowym założeniem tej funkcji jest to, że urządzenie ma drugi zestaw partycji systemowych, rozruchowych, dostawców i innych ważnych, a kiedy otrzymasz OTA aktualizacja aktualizacja odbywa się w tle, podczas gdy drugi zestaw partycji jest łatany, co pozwala na bezproblemowe ponowne uruchomienie do zaktualizowanej kompilacji oprogramowania. Jeśli aktualizacja się nie powiedzie, nastąpi powrót do działającej wersji, co oznacza, że ​​firmy będą miały mniej problemów, a konsumenci będą lepiej chronieni.

W przeciwieństwie do Project Treble obsługa bezproblemowych aktualizacji nie jest wymagana w przypadku żadnego nowego urządzenia z Androidem. W związku z tym zdecydowana większość nowych urządzeń z Androidem nie obsługuje tej funkcji. Do tej pory prowadziliśmy listę wszystkich obsługiwanych urządzeńi jasne jest, że ta funkcja nie jest powszechnie obsługiwana. A szkoda, bo partycje A/B przynoszą wiele korzyści zarówno zwykłym użytkownikom, jak i zaawansowanym użytkownikom. Jednak ta funkcja ma złą reputację w społeczności entuzjastów, ponieważ uważa się, że utrudnia rozwój Androida i flashowanie niestandardowych modyfikacji. W rzeczywistości tak nie jest, dlatego chcieliśmy wyjaśnić tajemnicę płynnych aktualizacji i wyjaśnić, w jaki sposób partycje A/B wpływają na rozwój niestandardowy na XDA.

Wielkie dzięki dla starszego członka XDA npjohnson, A Przyczynia się do LineageOS i opiekun Motorola Moto Z2 Force, która pomogła nam sprawdzić fakty w tym artykule.


Partycje na urządzeniu z Androidem

Partycja to po prostu wydzielona część pamięci wewnętrznej telefonu, w której przechowywane są dane. Rodzaj danych przechowywanych na poszczególnych partycjach zależy od sprzętu, systemu operacyjnego i wielu innych czynników. Program ładujący będzie go miał, system (Android OS) będzie go miał, dane użytkownika będą miały jeden... i tak dalej i tak dalej. Kiedy widzisz, że ludzie mówią o „/system” i „/cache”, mają na myśli podane nazwy tych partycji. Na przykład OnePlus 6 ma 72 partycje. To brzmi dużo, ale OnePlus 6 to jedno z urządzeń obsługujących bezproblemowe aktualizacje, co oznacza, że ​​wiele z tych partycji to po prostu wzajemne duplikaty.

Częściowe wyjście partycji w OnePlus 6. Niektóre partycje A/B są podkreślone w celach demonstracyjnych.

Na urządzeniu znajduje się wiele partycji, którymi jako użytkownik nigdy nie będziesz musiał się martwić. Wiele z tych partycji nigdy nie jest modyfikowanych podczas flashowania niestandardowych ROM-ów, jąder, odzyskiwania lub modyfikacji, takich jak Magisk lub Xposed. Wiele z tych partycji będzie albo nieużywanych do naszych celów, albo będzie zbyt niebezpiecznych, aby ich dotknąć, chyba że wiesz, co robisz (XLOADER i OEMINFO na Huawei/Honor przychodzą mi na myśl urządzenia.) W przypadku zdecydowanej większości użytkowników Androida partycje, z którymi najczęściej mamy do czynienia, to partycje systemowe, rozruchowe, odzyskiwania, dane użytkownika, a ostatnio dostawcy i vbmeta. Oto krótkie wyjaśnienie celu każdej partycji:

  • system - przechowuje system operacyjny Android, biblioteki systemowe, aplikacje systemowe i inne multimedia systemowe, takie jak animacje rozruchowe, tapety stockowe, dzwonki itp.
  • boot - przechowuje jądro, ramdysk, a na urządzeniach A/B także odzyskiwanie
  • recovery - przechowuje recovery, podczas którego TWRP jest najczęściej flashowane na urządzeniach A-only (urządzenia A/B nie mają dedykowanej partycji recovery)
  • dane użytkownika — przechowuje wszystkie dane aplikacji, systemu i pamięci wewnętrznej
  • sprzedawca — przechowuje specyficzne dla platformy i urządzenia warstwy HAL, czyli pliki niezbędne, aby system operacyjny Android mógł komunikować się ze sprzętem bazowym
  • vbmeta - partycja dla Android Verified Boot 2.0, która weryfikuje integralność procesu rozruchu

Producenci OEM urządzeń mogą zmieniać schematy partycji, aby używać dowolnego układu. Na przykład Huawei dzieli partycję rozruchową na ramdisk_recovery i jądro. Istnieje również wiele dodatkowych partycji, które mogą zawierać inne aplikacje systemowe, takie jak cust, produkt i oem, a podczas gdy można je bezpiecznie modyfikować, generalnie nie jest to zalecane, jeśli chcesz ułatwić sobie powrót do stanu magazynowego. Gdzie zatem podziały A/B odgrywają rolę?


Schemat podziału A/B

Jak aktualizacje działają na urządzeniach z płynnymi aktualizacjami

Bardzo prosty obraz, który zrobiłem poniżej, ilustruje sposób obsługi aktualizacji na urządzeniu obsługującym partycję A/B. Pokazana partycja to partycja systemowa, chociaż inne partycje, takie jak partycja rozruchowa i sprzedawca, mogą również zostać zaktualizowane za pomocą dowolnej aktualizacji OTA od producenta OEM. Ten proces aktualizacji dotyczy nie tylko głównych aktualizacji wersji Androida, ale także aktualizacji poprawek zabezpieczeń.

  1. Zaczynamy od dwóch partycji systemowych, system_a i system_b, obie w tej samej wersji Androida.
  2. Zakładając, że system_a jest aktywny, aktualizacja OTA załata system_b, nieaktywną partycję, w tle.
  3. system_a jest ustawiony na nieaktywny, a system_b staje się aktywny po ponownym uruchomieniu użytkownika.
  4. Nieaktywna partycja system_a zostanie zaktualizowana po wprowadzeniu kolejnej aktualizacji OTA.

Jakie są zalety tego procesu aktualizacji?

  1. Jeśli aktualizacja się nie powiedzie, urządzenie powróci do działającej wersji na drugim gnieździe.
  2. Twoje dane pozostaną nienaruszone, nawet jeśli aktualizacja zostanie przerwana, ponieważ istnieje tylko jedna partycja (dane użytkownika), która przechowuje Twoje dane.
  3. Przesyłanie strumieniowe aktualizacji: Jeśli partycja danych jest pełna, aktualizację można pobrać i przesłać strumieniowo do nieaktywnego gniazda. Jest to całkiem fajna funkcja, która oznacza, że ​​nie musisz marnować tymczasowej pamięci na aktualizacje. Dlatego na urządzeniach A/B nie ma partycji pamięci podręcznej, ponieważ nie są one już potrzebne.

Jaki wpływ ma schemat partycjonowania A/B na pamięć urządzenia?

Czy fakt, że bezproblemowe aktualizacje powodują powstanie wielu zduplikowanych partycji, oznacza, że ​​tracisz dużo miejsca na dysku? Zupełnie nie. Google twierdzi, że w przypadku urządzeń z płynną obsługą aktualizacji spadek wydajności powinien wynosić zaledwie kilkaset megabajtów w wyniku usunięcia partycji /cache i /recovery. Usunięcie obu równoważy koszt dodania drugiego zestawu partycji. Według Google obraz systemu A/B Pixela jest o połowę mniejszy niż obraz systemu tylko A. Większość dodatkowego wykorzystania pamięci masowej wynika w rzeczywistości z dodania drugiej partycji dostawcy. Ma to sens, ponieważ na partycji dostawcy znajdują się wszystkie zastrzeżone pliki binarne używane przez producentów OEM (część Project Treble), więc oczekuje się, że zajmie sporo miejsca. Chociaż Google nie zaleca partycjonowania A/B na urządzeniach z 4 GB pamięci (ponieważ stanowi to prawie 10% całkowitej dostępnej pamięci), zaleca ją na urządzeniach o pojemności 8 GB i większej.

Oto zestawienie przestrzeni dyskowej używanej w Google Pixel z partycjami A/B i bez nich.

Rozmiary partycji

A/B

Tylko A

Program rozruchowy

50MB*2

50MB

Uruchomić

32MB*2

32 MB

Powrót do zdrowia

32 MB

Pamięć podręczna

100MB

Radio

70MB*2

70 MB

Sprzedawca

300MB*2

300 MB

System

2048MB*2

4096MB

Całkowity

5000MB

4680MB

Co się stało z partycją recovery?

Podstawowe jądro Linuksa na urządzeniach z Androidem pozwala Androidowi rozpoznać i prawidłowo używać sprzętu na smartfonie. Na urządzeniach z Androidem typu A zazwyczaj masz dwie wersje jądra: jedna jest spakowana na partycji odzyskiwania, a druga na partycji rozruchowej. Na urządzeniach A/B obsługujących bezproblemowe aktualizacje odzyskiwanie odbywa się teraz wewnątrz obrazu rozruchowego wraz z jądrem. Główną funkcją odzyskiwania było instalowanie aktualizacji, ale ponieważ zajmuje się tym sam system (aktualizacja_silnika) podczas uruchamiania systemu Android dedykowana partycja odzyskiwania nie jest już potrzebna.

Aby zainstalować niestandardowe odzyskiwanie na urządzeniach A/B, musimy zmodyfikować partycję rozruchową i zastąpić zapasowe odzyskiwanie własną. Dlatego, aby zainstalować TWRP, musisz użyć polecenia fastboot, aby najpierw uruchomić niestandardowy obraz rozruchowy i Następnie flashuj skrypt instalacyjny TWRP, ponieważ fastboot nie może łatać partycji - jedynie całkowicie je flashować. Technicznie rzecz biorąc, możesz wstępnie załatać istniejący obraz rozruchowy za pomocą TWRP, a następnie sflashować go przez fastboot, ale to więcej kłopotów niż jest warte. Skrypt instalatora TWRP łata partycje boot_a i boot_b, aby zainstalować TWRP.

Ciekawostka: silnik aktualizacji Androida, który obsługuje bezproblemowe aktualizacje, jest w zasadzie zgrany prosto z systemu operacyjnego Chrome. Tylko ostatnio zostały usunięte ciągi zawierające „Chrome OS” z dziennika update_engine, aby uniknąć nieporozumień dla każdego, kto sprawdzi logcat.

Czy mój smartfon z systemem Android obsługuje partycje A/B w celu zapewnienia płynnych aktualizacji?

Podczas gdy my zachowaj listę wszystkich urządzeń które to wspierają, możesz też łatwo sprawdzić siebie.


W jaki sposób płynne aktualizacje wpływają na rozwój niestandardowy?

Postrzeganie przez użytkownika partycji A/B

Przez wielu użytkowników bezproblemowe aktualizacje są w rzeczywistości dobrodziejstwem dla programistów. Powód, dla którego urządzenia A/B są postrzegane jako posiadające słabe wsparcie rozwojowe, wynika z ceny pierwszych urządzeń A/B. Przecież urządzenia Google Pixel jako jedne z pierwszych obsługiwały płynne aktualizacje i w porównaniu do smartfonów Nexus z przeszłości były stosunkowo drogie. Co więcej, dzięki niezliczonym ulepszeniom, jakie Google wprowadził do systemu operacyjnego Android, który stworzył niestandardowe ROMy i modyfikacje mniej popularne na urządzeniach Google, smartfony Google Pixel nie wyrobiły się na naszych forach tak dobrze, jak Nexus smartfony. Połączenie czynników zewnętrznych doprowadziło do ograniczenia możliwości tworzenia niestandardowych rozwiązań na smartfonach Google Pixel, chociaż większość użytkowników zamiast tego zrzuciła winę na obsługę partycji A/B. Porównaj dostępność niestandardowych rozwiązań na urządzeniach takich jak Google Pixel z urządzeniami takimi jak Xiaomi Mi A1 na naszych forach.

Ponadto brak zrozumienia, w jaki sposób partycje A/B zmieniły sposób, w jaki użytkownicy muszą instalować niestandardowe ROMy, jądra, odzyskiwanie i modyfikacje, doprowadził do niepopularności obsługi partycji A/B. Ponieważ odzyskiwanie znajduje się teraz w obrazie rozruchowym, flashowanie modyfikacji w niewłaściwej kolejności, takiej jak Magisk lub Xposed, może powodować konflikty i prowadzić do pętli rozruchowej. Kolejność flashowania tych modów może być ważna, chociaż w przypadku niestandardowych ROM-ów nie powinieneś martwić się o to, do którego gniazda flashujesz. Wbrew powszechnemu przekonaniu skrypt instalacyjny większości niestandardowych pamięci ROM nie miga w obu gniazdach. W większości nie musisz się tym martwić, ponieważ nie powinieneś ręcznie zmieniać miejsc.

Jak programiści postrzegają partycje A/B

Budując pamięć ROM, programiści mogą wykorzystać obie partycje do testowania oddzielnych kompilacji. Jeśli jedna nie działa, mogą po prostu wrócić do partycji roboczej i odbudować pamięć ROM. Programiści mogą również testować regresje, po prostu instalując aktualizację, przełączając aktywną partycję i porównując obie bez konieczności czyszczenia danych. Oto jak zespół LineageOS postrzega obsługę partycji A/B:

„Wiele osób w społeczności Androida krytykuje technologię A/B jako „trudną w obsłudze” i „nieprzyjazną programistom”, podczas gdy w rzeczywistości prawidłowo wdrożona jest łatwiej wspierać i tak samo przyjazny dla programistów.” – jrizzoli, Dziennik zmian LineageOS 19

Początkowe trudności ze wsparciem A/B dla programistów wynikały z modyfikowania istniejących narzędzi w celu obsługi tych urządzeń. Twórca Magisk, topjohnwu, dodał oficjalne wsparcie dla Google Pixel rok po tym wypuszczono – nie dlatego, że było to trudne, ale raczej dlatego, że zdobycie urządzenia zajęło mu rok pracować nad. Wsparcie TWRP przyszedł dość szybko na urządzeniach A/B po tym, jak główny programista, Dees_Troy, spróbował tego. LineageOS 15.1 teraz wspiera Urządzenia A/B po tym, jak ochotnicy znaleźli czas na naprawienie skryptu addon.d.

Jak zaktualizować urządzenie A/B, które ma niestandardowe odzyskiwanie, jądro lub inne mody

Niestandardowe ROMy

Flashowanie aktualizacji na urządzeniu z niestandardową pamięcią ROM oznacza, że ​​musisz uważać na to, które gniazdo flashujesz, prawda? Nie do końca. TWRP faktycznie obsłuży wiele z tego za ciebie i domyślnie wybiera nieaktywne miejsce do flashowania niestandardowej pamięci ROM. Jeśli twoim aktywnym gniazdem jest A i flashujesz niestandardową pamięć ROM, tak naprawdę flashujesz do gniazda B. Po ponownym uruchomieniu aktywne miejsce to teraz B. Programiści mogą modyfikować skrypt instalacyjny i flashować go w obu gniazdach, aby ułatwić to użytkownikowi końcowemu, chociaż większość niestandardowych skryptów instalacyjnych ROM jest obecnie flashowana tylko w jednym gnieździe. Wreszcie, niestandardowe ROMy mogą zaimplementować aktualizator A/B w swojej ROM, dzięki czemu użytkownicy nie muszą nawet zadzierać z ręczne flashowanie aktualizacji — najnowszy LineageOS 15.1 zawiera narzędzie Lineage Updater i XDA Senior Member USA-RedDragon wykonana ogólny aktualizator A/B z których mogą korzystać inni programiści.

Stockowe ROMy

Ale czy nie jest to problematyczne, jeśli na Twoim urządzeniu działa standardowa pamięć ROM z różnymi modyfikacjami i chcesz zainstalować aktualizację bez utraty wszystkich tych modów? Może się tak zdarzyć, jeśli nie znasz odpowiednich kroków, aby zainstalować aktualizację. Na przykład w OnePlus 6 nie można flashować przyrostowego OTA na zmodyfikowanym urządzeniu, ponieważ przyrostowa OTA spróbuje załatać zmodyfikowany obraz rozruchowy. W ten sposób prawdopodobnie skończy się bootloopem i dlatego musisz sflashować pełną aktualizację ROM, aby całkowicie zastąpić zmodyfikowany obraz rozruchowy. Oto ogólne kroki, które należy wykonać, aby zainstalować aktualizację OxygenOS na OnePlus 6, zachowując jednocześnie TWRP, Magisk i opcjonalnie niestandardowe jądro.

  1. Pobrałem najnowsze pełny ROM zamek błyskawiczny
  2. Wgraj pełny ROM zip podczas odzyskiwania
  3. (Opcjonalnie) Niestandardowe jądro Flash
  4. Flashowy instalator TWRP
  5. Uruchom ponownie od razu i wróć do odzyskiwania
  6. Flash Magiska

Na urządzeniach Google Pixel jest to możliwe flashuj obraz fabryczny bez usuwania danych, następnie uruchom TWRP, zainstaluj TWRP za pomocą skryptu instalacyjnego, a następnie zainstaluj Magisk.

Wyodrębnianie aktualizacji w celu flashowania obrazów poszczególnych partycji

Pliki aktualizacji dla wielu urządzeń A/B różnią się nieco w porównaniu z urządzeniami typu A-only. Nie są już zwykłym plikiem ZIP zawierającym mnóstwo obrazów (z wyjątkiem fabrycznych obrazów Google i Razera), zamiast tego mają formę pliku payload.bin. Możesz wyodrębnić ten plik i ręcznie sflashować każdą część, ale wymaga to specjalnego narzędzia. Jeśli chcesz dowiedzieć się, jak to zrobić na OnePlus 6, Xiaomi Mi A1 i wielu innych urządzeniach A/B, czytaj dalej.

Konfigurowanie wyodrębniania pliku payload.bin

  1. Upewnij się, że masz Pythona 3.6 zainstalowany.
  2. Pobierz payload_dumper.py i update_metadata_pb2.py Tutaj.
  3. Wyodrębnij swój plik zip OTA i umieść plik payload.bin w tym samym folderze, co te pliki.
  4. Otwórz program PowerShell, wiersz poleceń lub terminal, w zależności od systemu operacyjnego.
  5. Wprowadź następujące polecenie: python -m pip install protobuf
  6. Kiedy to się skończy, wprowadź to polecenie: python payload_dumper.py payload.bin
  7. Rozpocznie się wyodrębnianie obrazów z pliku payload.bin do bieżącego folderu, w którym się znajdujesz.

Jeśli chcesz, możesz teraz sflashować każdy z tych obrazów osobno poprzez fastboot. W następnej sekcji pokazano, jak to zrobić.

Używanie funkcji fastboot do flashowania obrazów na urządzeniu obsługującym płynne aktualizacje

Istnieje wiele poleceń, które są przeznaczone wyłącznie dla urządzeń systemu partycji A/B. Możesz zmienić aktywne gniazdo i flashować do określonych gniazd. Jeśli masz projekt Treble-kompatybilne urządzenie i chcę się tego nauczyć flashuj ogólne obrazy systemu, powinieneś znać te polecenia. Spójrz na poniższą tabelę.

Polecenia Fastboota

Komenda

Uzyskaj bieżący aktywny slot

fastboot getvar wszystko | grep „current-slot” Jeśli korzystasz z komputera z systemem Windows, polecenie „grep” nie będzie działać.

Ustaw inny slot jako aktywny

fastboot set_active inny

Ustaw określone gniazdo jako aktywne

fastboot set_active $ORfastboot --set-active=_$slot, gdzie $ oznacza a lub b

Flashuj obraz na określoną partycję w bieżącym gnieździe

partycja flash fastboot partycja.img

Flashuj obraz na określoną partycję w określonym gnieździe

fastboot flash partycja_a partycja.imgfastboot flash partycja_b partycja.img

(Uwaga: na urządzeniach A/B możesz albo określić partycję w konkretnym gnieździe, na którą chcesz wykonać flashowanie, albo możesz pominąć sufiks gniazda i będzie on migał w bieżącym aktywnym gnieździe. Na przykład możesz zamienić „partycję” w poleceniu flash na „system”, „system_a” lub „system_b.”)

Na komputerach z systemem Windows nie można używać grep, więc po prostu usuń tę część i poszukaj „current-slot”.

Słowo o projekcie Treble i bezproblemowych aktualizacjach

Powszechnym błędnym przekonaniem jest to, że obsługa Project Treble i obsługa partycji A/B są ze sobą powiązane, ale w rzeczywistości tak nie jest. Posiadanie jednego nie oznacza drugiego. Motorola Moto Z2 Force korzysta ze schematu partycjonowania A/B, ale nie obsługuje tonów wysokich. Z drugiej strony Honor 9 Lite obsługuje Project Treble, ale jest urządzeniem tylko A.

Honor 9 Lite obsługuje Project Treble, ale nie obsługuje płynnych aktualizacji

Często zadawane pytania/podsumowanie

  • Jakie są zalety partycjonowania A/B?
    • Partycjonowanie A/B umożliwia aktualizację smartfona z systemem Android podczas jego używania, po prostu uruchamiając go ponownie, gdy będziesz gotowy do uruchomienia nowej wersji. Działa również jako ochrona przed cegłami — jeśli aktualizacja się nie powiedzie, powrócisz do działającej instalacji.
  • Czy podział A/B utrudnia rozwój?
    • Choć dostosowanie się zajęło programistom trochę czasu, odpowiedź brzmi: nie. W rzeczywistości może to pomóc programistom, ponieważ mogą podwójnie uruchomić niestandardową pamięć ROM ze starą wersją i nową wersją testową, aby sprawdzić regresje.
  • W jaki sposób partycje A/B wpływają na mody, takie jak niestandardowe jądra, Magisk lub Xposed?
    • Podczas ich instalowania należy zachować ostrożność, ale obecnie nie ma żadnych problemów. Magisk oficjalnie obsługuje urządzenia z płynnymi aktualizacjami i dopóki flashujesz rzeczy we właściwej kolejności, nie powinieneś mieć żadnych problemów. Pamiętaj o flashowaniu niestandardowego jądra przed flashowaniem innych modów i wszystko powinno być gotowe.
  • Czy mogę flashować dwie różne pamięci ROM na każdej partycji i wykonywać podwójny rozruch?
    • Teoretycznie tak. Problemy pojawiają się jednak z powodu współdzielonej partycji danych, więc nie jest to zalecane.
  • Czy posiadanie schematu partycji A/B oznacza, że ​​mam mniej miejsca na dysku?
    • Nie! Google twierdzi, że urządzenia obsługujące bezproblemowe aktualizacje poświęcają tylko kilkaset megabajtów pamięci, aby to obsługiwać. Korzyści przewyższają ten koszt.
  • Moje urządzenie obsługuje partycje A/B. Czy to oznacza, że ​​mogę korzystać z ogólnego obrazu systemu Project Treble?
    • Niekoniecznie. Projekt Treble i wsparcie A/B nie są ze sobą powiązane. Motorola Moto Z2 Force nie obsługuje Project Treble, ale obsługuje schemat partycji A/B.
  • Moje urządzenie obsługuje Project Treble. Czy to oznacza, że ​​mam schemat partycji A/B?
    • Nie zawsze tak jest. Honor 9 Lite jest tego doskonałym przykładem, ponieważ obsługuje Project Treble, ale nie ma schematu podziału A/B.
  • Dlaczego muszę najpierw uruchomić TWRP za pomocą fastboot, a następnie flashować?
    • Wynika to ze sposobu działania fastboot i faktu, że partycja odzyskiwania już nie istnieje. Recovery jest umieszczany wewnątrz partycji rozruchowej, więc musimy zmodyfikować zarówno boot_a, jak i boot_b. Nie możesz załatać partycji w fastboocie, możesz jedynie flashować ją. Teoretycznie można utworzyć wstępnie poprawiony obraz rozruchowy, a następnie zamiast tego sflashować go.
  • Czy istnieją jakieś zagrożenia związane z przegrodami A/B? Jak ochrona przed wycofaniem wpływa na sytuację?
    • Google dołożył wszelkich starań, aby nie stanowiło to problemu, ale w przypadku Motoroli Moto Z2 Force, znane były przypadki ponownej aktywacji starszego slotu przez urządzenie po aktualizacji do Androida Oreo. Oznaczało to, że włączyła się ochrona przed wycofywaniem zmian, a właściciele urządzeń mogli uratować swój smartfon jedynie poprzez odzyskanie EDL. Google twierdzi jednak, że ochrona przed wycofywaniem zmian uruchamia się dopiero po pierwszym uruchomieniu, więc gniazdo musi w pełni działać po aktualizacji, zanim nie będzie można już przejść na niższą wersję.