How Volvo and Polestar Run Chromium on Android Automotive OS
This article explains the technical architecture behind how automakers like Volvo and Polestar integrate and run an embedded build of the Chromium web browser on Android Automotive OS (AAOS). It covers the compilation of the browser for vehicle hardware, the use of Android native development tools, the integration of Digital Rights Management (DRM) for media streaming, and how the browser communicates with the car's safety systems to prevent driver distraction.
Understanding Android Automotive OS
To understand how Chromium runs in a car, it is first necessary to distinguish Android Automotive OS (AAOS) from Android Auto. While Android Auto merely projects a smartphone's screen onto the car's display, AAOS is a full-stack, open-source operating system that runs directly on the vehicle's built-in hardware. Because AAOS is built on the Android Open Source Project (AOSP), it natively supports standard Android application packages (APKs), making it capable of running a full desktop-class browser engine like Chromium.
Cross-Compiling Chromium for In-Car Hardware
Infotainment systems in Volvo and Polestar vehicles are powered by specialized automotive System on Chips (SoCs), typically utilizing Intel Atom (x86_64 architecture) or Qualcomm Snapdragon Cockpit Platforms (ARM64 architecture).
To run Chromium on these systems, developers do not use a desktop version of the browser. Instead, they pull the open-source Chromium code and cross-compile it specifically for the Android environment and the target processor architecture. This process utilizes two main toolsets:
- Android NDK (Native Development Kit): The core of Chromium—including the Blink rendering engine and the V8 JavaScript engine—is written in C++. The NDK allows developers to compile this massive C++ codebase into native libraries that can execute directly on the car's processor without performance loss.
- Android SDK (Software Development Kit): The user interface (UI), tab management, and system integration layers are written in Java or Kotlin using the standard Android SDK. The SDK acts as a wrapper around the native C++ Chromium engine.
Standalone Engine vs. System WebView
There are two ways to run a Chromium browser on AAOS. A developer can build a lightweight wrapper around the pre-installed Android System WebView (which is already powered by Chromium), or they can bundle a standalone build of the Chromium engine inside the app itself.
Browsers available on the Polestar and Volvo Google Play Store—such as Vivaldi or the native Polestar browser—typically use a custom, embedded Chromium build. Bundling the engine directly into the APK allows developers to control the exact version of Chromium, implement custom touch controls, and include proprietary media codecs. Furthermore, they integrate Google’s Widevine DRM directly into the browser build, which allows the browser to decrypt and stream protected video content from services like Netflix or YouTube when the car is parked.
Integrating with Vehicle Safety Systems
A standard Android tablet allows a user to browse the web at any time, but a car cannot allow a driver to watch videos or read web pages while in motion. To solve this, the embedded Chromium build must interface with the AAOS Car API and the Vehicle Hardware Abstraction Layer (VHAL).
The VHAL is the bridge between the Android operating system and the car's internal CAN bus network. It constantly reads physical data from the car, such as gear selection, parking brake status, and wheel speed.
Developers program the Chromium wrapper to listen to the
CarUxRestrictionsManager API. This works through a
straightforward process:
- The driver shifts the car from Park to Drive.
- The VHAL detects the gear change and alerts AAOS.
- AAOS broadcasts a restriction state change to all running applications.
- The Chromium browser receives this broadcast and immediately suspends its rendering view.
When this happens, the browser covers the web page with a safety screen stating that browsing is disabled while driving. However, because the underlying Chromium audio processes can be separated from the video rendering processes, the browser can be configured to allow audio streaming to continue while the screen is blocked.
Customizing the User Interface and Resource Management
Standard Chromium is designed for mouse-and-keyboard setups or small smartphone screens held close to the face. In a Volvo or Polestar, the screen is mounted on the dashboard at arm's length and oriented in a portrait layout.
To accommodate this, the top-level UI of the embedded Chromium build is heavily modified. Developers increase the DPI (dots per inch) scaling so that web pages render larger by default. The browser’s native navigation bar, back buttons, and tab switchers are enlarged to meet automotive safety guidelines, ensuring the driver or passenger can tap them easily without needing precise hand-eye coordination.
Finally, AAOS strictly manages the browser's system resources. Chromium is notorious for high memory consumption. On AAOS, the browser runs in a strict sandbox with capped RAM and CPU priority. If the browser consumes too much memory on a heavy webpage, the OS will aggressively throttle or terminate the Chromium tabs to ensure that critical vehicle functions—such as the backup camera, climate control interface, and navigation—never lag or crash.