Embedded Android + Automotive


Android Automotive is a version of Android tailored for In-Vehicle Infotainment (IVI) – navigation, vehicle status, audio, and more. The source code for Android Automotive is available as part of the Android Open Source Project (AOSP), on which this course is based.

The first part of the course gives a detailed background on the Android operating system, following the same curriculum as the 2net Embedded Android course. In this section, you will learn how to build Android from source and flash the system images using fastboot. You will learn about the Android security framework and SELinux policy. There are modules on how SurfaceFlinger renders graphics for various displays, and on the all-important topic of debugging and profiling the final system. All code and examples are based on Android version 10 and covers the hardware abstraction layers introduced in Project Treble.

Once the ground work is in place, the later topics show how the services and features that are part of Android Automotive provide the framework for an IVI system. You will begin by building Android Automotive from AOSP and then see how it integrates with vehicle networks, such as CAN bus, via the Vehicle HAL. You will also find out about the new Exterior View System which ensures the video stream from the exterior cameras is presented to the driver within 2 seconds of booting the device.

Roughly half of the course is taken by hands-on lab sessions during which you will apply the theory to create an Android Automotive device. At the moment it is only available on-line, using a virtual classroom. You will be building AOSP in the cloud and downloading images so they can be tested locally using the Android emulator.
Download course details as a PDF
Click here for information about booking a course

Duration

5 days

Upcoming courses

None scheduled: contact us to request a quote

Audience

This course is ideal for system architects, engineers and project leaders who want to learn the details of Android Automotive

Prerequisites

Good knowledge of C/C++ and Java

Familiarity with embedded Linux concepts (toolchain/bootloader/kernel/root filesystem)

Familiarity with Linux command-line tools such as make, grep, and find

Materials

All students will receive:

  • Electronic copies presentations and lab notes
  • Worked solutions to the problems

Outline

Introduction to Android

  • Android architecture: the big picture
  • The Android Open Source Project (AOSP)
  • Building Android from source
  • The impact of Project Treble

Creating a new Android product

  • The structure of an Android device
  • Setting basic hardware characteristics
  • Adding the product to the "lunch" menu

The kernel

  • Looking at some Android-specific changes to Linux
  • Building Linux from source

Booting Android

  • Options for storage layout
  • Flashing images using fastboot
  • Android init: events and services
  • Understanding run command (.rc) scripts

The Android build system

  • Building a product from packages and modules
  • Android makefiles (Android.mk)
  • Android Blueprint files (Android.bp)

The Android framework

  • Understanding Android services
  • The role of binder and AIDL
  • Adding a custom system service inside a persistent app
  • Accessing the service from a platform library

Security

  • How Android permissions work and how to add your own
  • POSIX user ID and group ID within Android
  • Understanding and modifying SELinux policy files

The Hardware Abstraction layer

  • HIDL – the HAL Interface Definition language
  • Run-time linking and the Vendor Native Development Kit (VNDK)
  • The Vendor Interface (VINTF)

Testing: CTS and VTS

  • Validating your Android implementation using the Compatibility Test Suite, CTS
  • Testing your vendor HAL using the Vendor Test Suite, VTS
  • Android Automotive

    • Android and IVI (In-Vehicle Infotainment)
    • The architecture of Android Automotive
    • Building Android Automotive from AOSP

    The Vehicle HAL

  • Interface to vehicle buses (e.g. CAN)
  • Defining and exporting Vehicle Properties
  • Subscribing to vehicle events

The Car API

  • The Car Service
  • The android.car.* classes
  • Writing system car apps
  • 3rd party car apps
  • Audio in Android Automotive

  • Audio in normal Android
  • Audio policy configuration
  • Integrating Android audio with the vehicle audio system
  • The Exterior View System

  • Meeting the 2 second boot requirement
  • The Exterior View System (EVS)
  • The EVS camera and display HALs