Skip to content

Building for Android Automotive OS

Apps for the vehicle app store run on Android Automotive OS (AAOS) — Android that runs natively in the car’s head unit. This page covers the platform requirements every app must satisfy.

Declare the automotive feature

Your manifest must declare that the app targets automotive hardware:

<uses-feature android:name="android.hardware.type.automotive" android:required="true" />

For Car App Library (templated) apps, also declare the templates host feature:

<uses-feature android:name="android.software.car.templates_host" android:required="true" />

Car permissions: normal vs. dangerous

Request only the permissions your app actually uses, and understand their level:

  • Normal permissions (e.g. INTERNET) are granted at install time.
  • Dangerous permissions (e.g. location, ACCESS_FINE_LOCATION) require an explicit runtime grant from the driver and are scrutinized more closely during review.
  • Template permissions for Car App Library apps (e.g. androidx.car.app.MAP_TEMPLATES, androidx.car.app.NAVIGATION_TEMPLATES) depend on your app category.

Keep your permission set minimal — unused or overly broad permissions are flagged during validation.

Do not use enableEdgeToEdge()

Do not call enableEdgeToEdge() in automotive apps. Head units render system bars and insets differently from phones; edge-to-edge drawing causes content to be clipped or hidden behind system UI in the car. Lay out within the standard content area instead.

Handle the display cutout

Head-unit displays can have cutouts and irregular shapes. Respect window insets and the safe content area so critical UI is never obscured. Do not hard-code positions that assume a rectangular, cutout-free screen.

Design for resolution independence

Vehicle displays vary widely in size, density, and aspect ratio. Build layouts that scale: use density-independent units, constraint-based layouts, and vector assets. Never assume a fixed pixel resolution.

Test on the Automotive AVD

Validate your app on the Android Automotive OS emulator (AVD) before uploading:

Terminal window
# Install onto a running Automotive AVD
./gradlew :app:installDebug

The app appears in the car launcher. Exercise the full UI in the emulator’s landscape head-unit resolution, check distraction-optimized behavior, and confirm nothing is clipped by insets or cutouts. See App requirements for the production-build rules your release APK must also meet.