Embedded Android

Objective

In this course, attendees will learn the Android operating system internals and how to develop and customize Android for embedded systems.


Detailed agenda

  • Introduction to the Android operating system: history of Android, main features, software licenses, certification process, Android forks, basic components of the operating system.
  • Android source code: the Android Open Source Project (AOSP), repo tool and git repositories, source code directory organization, source code browsing, AndroidXRef, Android Code Search.
  • Android build system: the Android build system, makefiles (Android.mk) and Blueprint files (Android.bp), Soong, Ninja, and Kati tools, migration to Bazel, build product and variant, lunch command, compiling Android, generated images, other build commands, Goldfish and Cuttlefish emulators.
  • Operating system architecture: characteristics and hardware requirements for using Android, bootloader and fastboot, Linux kernel changes for Android (binder, ashmem, wakelocks, etc), GKI (Generic Kernel Image), file system organization, partitions and mount points (ramdisk, system, system_ext, data, vendor, odm, product, etc), Android security features, remote updates, ADB.
  • Products: product concepts, creating a new product, customizing the product, adding applications and files, resource overlays, changing properties, board makefile.
  • Android native layer: libraries and applications from the native layer, C library and Bionic, toolbox, toybox and busybox, shell, daemons (ueventd, vold, rild, netd, installd, etc), logcat, command line utilities.
  • Android boot process: overview of the boot process, Android startup, the init process and .rc configuration files, boot actions and triggers, services and daemons running at boot time, properties management, Android Runtime and virtual machine (Dalvik/ART), Zygote, System Server.
  • Modules: Android build system modules (libraries, applications, etc), creating makefiles (Android.mk), creating Blueprint files (Android.bp), compiling and installing modules.
  • Hardware abstraction layer: hardware abstraction on Android, HAL (Hardware Abstraction Layer) architecture, association between HALs and system services, HAL as a shared library (up to Android 7), Project Treble, HAL as a service (starting from Android 8), HIDL and AIDL, VTS, VNDK, VINTF Object, implementing a HAL in C++ for a serial port device.
  • Android framework: Android framework components, system services, services and processes (surfaceflinger, drmserver, mediaserver, cameraserver, etc), System Server, binder and the communication with system services, command line utilities, modifying the framework.
  • Extending the framework: reasons to extend the Android framework, implementing a system service in Java, defining the service interface with AIDL, JNI concepts, accessing the HAL via JNI, creating an API (Manager class) to access the service.
  • Android applications: basic characteristics of an Android application, application components (activities, services, broadcast receivers and content providers), manifest file, intents and communication between components, processes and threads of an Android application, life cycle of applications, memory management, security and permissions, NDK, developing a dedicated application (kiosk mode), Launcher application, lock task mode.
  • Additional resources: additional resources and links, book recommendations, final questions and comments, closing.

For more details on the content of this training, you can download the agenda and the slides (in Portuguese).

Additional information

Students, engineers and developers interested in the internal workings of the Android operating system and the process of porting and adapting Android to an embedded system.

Basic knowledge of GNU/Linux systems, shell command line and Git. Although not essential, minimal knowledge of embedded Linux and C, C++ and Java languages is recommended.

The course material contains the slides of the presentations, the book of activities and exercises, reference guides, and additional reference documents. All materials will be provided in an electronic format at the start of the training session.

This training does not require any development kits or additional hardware, since the Android emulator (Cuttlefish) is used during the exercises. If required by the contracting company, the training can be ported to other hardware platforms.

The training can be presented in the following languages: Brazilian Portuguese and English.

If you plan to train your team or a group of people, consider a training session inside your company. In an in-company training session, the company is responsible for providing the necessary resources needed for the training, including the training room, data projector and development machines. This model also brings big advantages for the company, since the cost of transportation and accommodation of several employees is reduced only to the instructor. If your company has a special requirement, we can study a program that meets your needs, like preparing the training material for a specific hardware platform or developing additional content. Don’t hesitate to get in touch via email or the contact page .

Open training sessions are presented in a pleasant environment, with a properly equipped laboratory and Internet access. Classes are usually presented full-time, with a stop for lunch and a coffee break in the morning. If you are interested in attending an open session but there are no classes available, send a message via the contact page and we will notify you as soon as new classes open.

This training can be executed in a remote/online environment. Online training is presented live on a virtual meeting platform like Google Meet or Zoom.


Some pictures from previous training sessions:

Customers testimonials

Testimonials from companies and students who have already attended an Embedded Labworks training session

highlight shape

Samsung is a company leader in the market of high technology and digital media

“One of the best training courses I have ever attended. The instructor has total control of the training agenda and excellent teaching skills”

Adriano Saviolli, Samsung

LG Electronics is a South Korean multinational company and one of the largest electronics companies in Brazil

“I am used to being very critical and it’s been some time since I don’t evaluate a training course with high scores in all aspects. Congratulations on the training!”

Vitor de Paula, LG Electronics

AOC International is the brand of TPV Technology Limited, a manufacturer of LCD and LED displays for computers and televisions

“Unique training and no doubt much more valuable than many university degrees we have today on the subject”

Lucas Tadeu Portela, AOC International

CTEx is a Brazilian military organization subordinate to the science and technology department of the Brazilian government

“The Embedded Labworks training fully met all objectives, as well as being motivating for us to continue learning embedded Linux. I recommend it!”

José Antonio de Sousa Fernandes, CTEx

Inatel is a center of excellence in teaching and research in telecommunications engineering

High-quality training, very helpful and with a highly structured agenda"

Luis Gustavo, Inatel

Intelbrás is a 100% Brazilian company that operates in the areas of security, telecom and networking, being a leader in several market segments

“An excellent professional applying a very good practical training session with a rich study material. Thanks!”

Paulo Morgado, Intelbrás

Still have questions?

Send an email to info@e-labworks.com or leave a message by filling out the form below:

Newsletter

Subscribe to the Embedded Labworks newsletter to receive messages about training, services and news from the embedded systems industry.

highlight shape