Audience
This course is ideal for system architects, engineers and project leaders who want to know how Android works, and how to customize and extend the platform
Precognition
- Good knowledge C/C++ and Java
- Familiarity with Linux development and command-line tools
Learning target
- 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 8.1 “Oreo” and covers the new 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 embedded Android device.
Contend
- Introduction to Android
- Android architecture: the big picture
- The impact of Project Treble
- The Android Open Source Project (AOSP)
- Building Android from source
- Creating a new Android product
- Creating a new product
- Setting basic hardware characteristics
- Adding the product to the “lunch” menu
- The kernel
- Android-specific changes to Linux
- Google common kernel and vendor kernels
- Building Linux from source
- Understanding and modifying device trees
- Booting Android
- Learning how the bootloader starts Android
- Flashing images using fastboot
- Customizing init boot scripts
- Controlling system behaviour using system properties
- The Android build system
- Building a product from packages and modules
- Android makefiles (Android.mk)
- Android blue print files (Android.bp)
- The Hardware Abstraction layer
- Changes to the HAL since Project Treble
- The Vendor INTerface: VINTF
- Types of HAL
- *legacy HAL
- *passthrough and Same Process
- *binderized HAL
- HIDL – the HAL Interface Definition
- Run-time linking: the Vendor Native Development Kit (VNDK)
- Testing; CTS and VTS
- Testing the application interface using the Compatibility Test Suite, CTS
- Testing the Vendor HAL using the Vendor Test Suite, VTS
- The Android framework
- Understanding Android services
- The role of binder and AIDL in defining interfaces to services
- Calling native code using JNI
- Graphics
- How SurfaceFlinger orchestrates image rendering
- Internal and external displays
- Streaming multi-media
- Applications
- Application sandboxing
- Dalvik and ART
- How to write a single-use kiosk-mode application
- Debugging and profiling
- Debugging native code
- Profiling CPU usage using perf
- Profiling power usage
- Security
- User and group IDs
- Android permissions
- Understanding and modifying SELinux policy files
- Security threats and “rooting”
- Android Automotive
- Android and IVI (In-Vehicle Infotainment)
- The architecture of Android Automotive
- Building Android Automotive from AOSP
- The Car API
- Car apps and the Car Service
- The Vehicle HAL
- Interface to vehicle buses (e.g. CAN)
- Defining and exporting Vehicle Properties
- Subscribing to vehicle events
- The Exterior View System
- Meeting the 2 second boot requirement
- The Exterior View System (EVS)
- The EVS camera and display HALs
Language
This course will be held in english