Android Automotive: Shifting Gears from Mobile to Automotive

Sreelakshmi S Dilip
4 min readJan 31, 2024

--

Authors: Thiruppathi Krishnan | Sreelakshmi S Dilip

(AI generated image with prompt: A split-screen image showcasing a smartphone app and an in-vehicle infotainment system app side-by-side. Car interior: A modern car dashboard with a sleek infotainment system, but no visible driver or steering wheel)

Introduction

Intrigued by the buzz surrounding Android Automotive? Are you a mobile app developer curious about its distinct features? Perhaps you’re an automotive enthusiast wondering why it’s generating so much excitement. Or maybe you’re an Android developer eager to dive into the world of automotive human-machine interfaces (HMI).

Do any of these describe you? If so, then this blog series is for you!

We’ve explored the reasons behind Android Automotive’s surging popularity and provided a comprehensive architectural overview. This blog series serves as your launchpad for becoming an Android Automotive developer, highlighting key differences from mobile app development and outlining your next steps for a smooth transition.

Why Android Automotive? What was before Android Automotive?

Before Android Automotive, the Original Equipment Manufacturers(OEMs) relied on proprietary embedded systems for their infotainment systems. These systems were often closed-source and lacked access to a larger app ecosystem.

Android Automotive addresses these limitations by offering an open, flexible, and constantly evolving platform for in-vehicle infotainment, paving the way for a more connected, innovative and personalized driving experience in the future.

Compared to proprietary systems, Android Automotive offers a stable open source platform that the OEMs can adapt and build upon. Android’s existing user base and developer ecosystem translate to a vast pool of resources and expertise for automotive applications. This promotes faster development cycles, wider app availability and cost effective solutions for OEMs.

Architectural Overview of Android Automotive

(Source: https://source.android.com/docs/automotive/security/vehicle_system_isolation)

While the core development process shares similarities with standard Android app development, Android Automotive Operating System(AAOS) introduces differentiators like the Vehicle Hardware Abstraction Layer (VHAL) for interacting with vehicle data.

While the Hardware Abstraction Layer (HAL) in mobile app development facilitates direct communication with hardware components, VHAL in AAOS acts as a mediator, granting controlled access to vehicle properties like engine oil level through properties named “ENGINE_OIL_LEVEL.” This allows your apps to consume essential vehicle information.

In essence, Android Automotive is Android and Android Automotive extends Android.

Automotive Specific Components

Let’s have a look at the additional components in Android Automotive.

At the top of the stack, we have system apps, OEM apps, and third-party apps. In standard Android environments, apps communicate directly with services through the Android framework. However, in automotive apps, a specialized Car API is employed for communication with the Car Service.

The Car Service acts as a central hub, interacting with the Car Manager over Binder IPC using Android Intermediate Definition Language(AIDL) interfaces. Car services and Android system services are in the same layer. The car services communicate with the Android system services for its functioning. The system server initiates the Car Service during device boot-up, enabling it to engage with the Vehicle HAL(VHAL) through Binder IPC utilizing AIDL/HIDL(HAL Interface Description Language) interfaces (note that in Android 13 and later, VHAL is migrated to AIDL). In turn, the VHAL interacts with Automotive Electronic Control Units(ECUs), effectively communicating with the vehicle’s core components.

Let’s delve deeper, starting from the lower layer:

The VHAL establishes communication with vehicle ECUs over the CAN bus or other vehicle-specific bus systems. These specialized interconnection networks serve as the backbone for component communication within the vehicle. To retrieve vehicle data, such as speed, the In-Vehicle Infotainment(IVI) ECU interacts with other ECUs, and the Vehicle HAL meticulously stores the extracted information as vehicle properties. The Android framework leaves data transfer protocols and network selection (including In Vehicle Networks) up to the VHAL’s implementation. This flexibility allows not only CAN bus integration, but also connection to internal networks like Local Interconnect Network(LIN) and future in-vehicle communication standards.

In essence, this architecture establishes a multi-layered hierarchy for automotive app functionality, ensuring controlled and efficient interaction with vehicle systems.

Comparison between Android and Android Automotive

Conclusion

Android mobile developers can easily transition to Android Automotive development. It is a journey that requires a strategic approach. Developers are encouraged to:

  • Learn Embedded Android: This includes learning about the Android Open Source Project (AOSP) and how Android interacts with the underlying hardware.
  • Understand Car Manager, Car Services, and VHAL properties: This will equip you with the necessary foundation. Familiarizing yourself with the development setup and different car components in the source code will help you in this journey.
  • Familiarize yourself with Android Automotive design guidelines: These are essential. Developers can study them and apply them to their applications.

Hands-on experience can always solidify understanding, and our next blog is just about building your first Android Automotive application. We will also discuss the different car components in action there.

Stay tuned for upcoming updates on building system applications and seamlessly integrating them with the Android Automotive OS (AAOS) system image. You can also learn with us.

--

--