Proces uruchamiania to ciąg działań, który zaczyna się od ROM-u rozruchowego, a potem przechodzi przez bootloader, jądro, Init, Zygote i serwer systemowy (pogrubienie wskazuje proces uruchamiania specyficzny dla Androida). W ramach procesu rozruchu w samochodach wczesne usługi, takie jak kamera cofania, muszą być uruchamiane podczas uruchamiania jądra.
| Zamówienie | Komponent | Android | Android Automotive | 
|---|---|---|---|
| 1 | Pamięć ROM rozruchowa | Ładuje pierwszy etap programu ładującego do wewnętrznej pamięci RAM. | |
| 2 | Program rozruchowy | Inicjowanie pamięci, weryfikacja zabezpieczeń i ładowanie jądra. | |
| 3 | Bąbelki | Konfiguruje kontrolery przerwań, ochronę pamięci, pamięć podręczną i planowanie; uruchamia procesy użytkownika w pokoju. | Proces kamery tylnej (RVC) rozpoczyna się na wczesnym etapie uruchamiania jądra. Po zakończeniu procesu GPIO z VMCU powoduje, że RVC wyświetla się na ekranie. | 
| 4 | Proces inicjowania | Przetwarza skrypty init.rc, montuje systemy plików, uruchamia Zygote, uruchamia proces systemowy. | HAL pojazdu (VHAL) uruchamia się w fazie inicjalizacji jako część podstawowych usług. Może być przenoszony do wcześniejszych stanów w zależności od ServiceManagera; wymaga usunięcia zależności od wspólnych bibliotek (np. init). | 
| 5 | Zygote | Konfiguruje środowisko uruchomieniowe Java i pamięć początkową dla obiektów Androida. | |
| 6 | Serwer systemowy | Pierwszy komponent Java w systemie, uruchamia podstawowe usługi Androida. | Usługa CarService uruchamia się po uruchomieniu wszystkich usług systemowych. | 
Optymalizacja czasu uruchamiania
Aby skrócić czas uruchamiania systemu, postępuj zgodnie z tymi wskazówkami:
- 
    Jądro. Ładowanie tylko używanych modułów i inicjowanie tylko używanych komponentów sprzętowych. 
- 
    init.rc- Zwróć uwagę na operacje blokowania (usługa w porównaniu z wywołaniem polecenia).
- Uruchom tylko to, co jest używane.
- Ustawianie prawidłowego priorytetu usług.
 
- 
    Zygote. Optymalizacja wstępnego wczytywania zajęć (określ listę zajęć do wczytania). 
- 
    Menedżer pakietów - 
        Zoptymalizuj obraz produktu, aby zawierał tylko używane pliki APK. 
 
- 
        
- 
    Serwer systemowy. Uruchamiać tylko używane usługi systemowe. 
Aby ułatwić optymalizację, Google udostępnia te narzędzia:
- 
    Użyj packages/services/Car/tools/bootanalyze/bootanalyze.py, aby przeanalizować logi logcat i dmesg.
- 
    Użyj packages/services/Car/tools/bootio/, aby rejestrować operacje wejścia/wyjścia dla procesów podczas uruchamiania. Musisz skompilować jądro z użyciem określonych flag (patrz plikREADME.md).
Wczesna aktywacja usług
W sekwencji uruchamiania niektóre usługi mogą być uruchamiane przed uruchomieniem Androida.
Kamera wsteczna
Tylny aparat (RVC) powinien być obsługiwany w rdzeniu. VMCU powiadamia natywny proces jądra, gdy pojazd przełączy się na bieg wsteczny, a ten wyświetla obraz z RVC na wyświetlaczu. HAL pojazdu może sterować RVC za pomocą hardware/libhardware/include/hardware/vehicle_camera.h.
Interfejs HAL pojazdu (VHAL)
Niektóre systemy mogą wymagać odczytu i zapisu danych CAN (np. prędkości pojazdu czy stanu biegu) na wczesnych etapach sekwencji uruchamiania, podczas oczekiwania na uruchomienie usługi w przestrzeni użytkownika (co następuje później w sekwencji uruchamiania). W tym scenariuszu wymagane jest bardzo wczesne uruchamianie kontrolerów VNS, HAL i CAN, zwykle w ciągu kilku sekund.
- 
    Systemy, które mogą szybko zamontować /system, mogą po prostu uruchomić menedżera usług, a następnie VNS.
- 
    System, który nie może szybko zamontować /system, musi przenieść zarówno menedżera usług, jak i VNS do obrazu rozruchu jądra, a także połączyć wszystkie zależne biblioteki statycznie.