Android Automotive OS Architecture: Definitive Guide

In this article, we will dive into the architecture of Android Automotive OS (AAOS), which powers in-car infotainment systems. In a previous article, we discussed the differences between Android Auto and Android Automotive.
While there are plenty of resources on Android OS, there are fewer articles that specifically address the architecture of AAOS. This article is written for developers and leaders who want to gain a better understanding of the AAOS architecture, focusing on the layers and the project paths of various modules in the AAOS source tree
AAOS Architecture Overview
The architecture of Android Automotive OS is organized into several layers, each with its own responsibilities and components. Let’s go through each layer to get a better understanding.

1. Application Layer
The Application Layer is where users interact with the infotainment system through the car’s infotainment display. This layer contains several key components:
- Car Launcher App: Similar to a typical Android launcher, it is responsible for loading apps, widgets, and managing the overall layout of the infotainment system.
- Car System UI: This handles car-specific system interfaces, such as the status bar, navigation bar, and other system-level UI elements.
Code located under the path packages/apps/Car/SystemUI
- Car UI Library (car-ui-lib): This is a reusable UI toolkit designed for application developers to build user interfaces. It provides predefined themes, layouts, and optimized buttons for touch and rotary controls, making it easier to develop automotive apps while adhering to Android Automotive design principles.
Code located under the path packages/apps/Car/libs/car-ui-lib
- OEM Apps and System Apps: OEM (Original Equipment Manufacturer) apps are custom apps provided by car manufacturers, while system apps include essential services like the dialer or media player.
- Third-Party Apps: Apps that can be downloaded from the Google Play Store.
2. Framework Layer
The Framework Layer is the core of the Android system, providing APIs and essential services for app development. It also includes the Car API, which is a top-level API designed for Android Automotive OS deployments.
Car API
The Car API allows developers to access automotive-specific features in their apps. It provides access to hardware properties, vehicle state information, UX restrictions, and power management.
This API ensures that only devices with the necessary automotive features can call certain automotive-related methods, preventing errors on non-automotive devices.
3. Service Layer
The Service Layer is where the core system services and native libraries reside. This layer includes the Car Libraries (car-lib), which provide essential functions for the system and applications. It also includes both Car Managers and Car Services, which enable communication between the Android system and the vehicle’s hardware.
Car Managers
Car Managers are APIs implemented as platform libraries. They provide structured access to various vehicle data and functionalities. For example:
- CarPropertyManager: Manages vehicle property data, such as fuel levels, speed, and battery status.
- CarPowerManager: Controls the car’s power states, including sleep modes and other power features.
- CarSensorManager: Interfaces with vehicle sensors to retrieve data like tire pressure and seatbelt status.
Code located under: packages/services/Car/car-lib
Car Services
The CarService is a core system service that wraps vehicle properties and exposes a set of APIs to applications. It provides access to important vehicle functionalities, such as controlling the car’s media system, climate settings, and more. Implemented as a system service, it runs in a persistent system app named com.android.car. The service can be debugged using tools like dumpsys car_service
.
Code located under packages/services/Car/service
4. Vehicle Hardware Abstraction Layer (VHAL)
The Vehicle Hardware Abstraction Layer (VHAL) plays a crucial role in managing vehicle data. It abstracts the signals from the vehicle’s bus (e.g., speed, heating control settings) and stores them as Vehicle Properties. These properties can either change automatically when the vehicle’s signals change or can be manipulated programmatically through Android applications.
VHAL provides an interface called IVehicle, which allows the system to interact with vehicle properties consistently across different vehicle models. This abstraction layer makes it easier for the system to adjust climate control, monitor speed, and manage other vehicle settings without needing to directly interact with the hardware.
5. Linux Kernel
At the foundation of AAOS lies the Linux Kernel, which provides the basic functionality for managing hardware drivers like display, camera, Bluetooth, and audio. These drivers are critical for the smooth operation of the Android runtime on automotive devices.
Conclusion
Android Automotive OS is rapidly becoming the platform of choice for automakers seeking to integrate advanced infotainment systems into their vehicles. With its modular and flexible architecture, AAOS provides a comprehensive suite of tools that not only enhance the user experience but also empower automotive developers to create custom solutions.
Thanks for reading! If this article was helpful, please follow me in medium and share this article on social media!!!
Follow me on Linkedin
Reference: