Home > Embedded Android

Embedded Android

In this course attendees will learn how to develop and customize Android on embedded systems.

The following topics will be covered:

  • 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 ( 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 (, 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 serfice 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 session, you can download the full agenda and the training slides (in Portuguese).

Some pictures of training sessions already presented are available here.


Students, engineers and software developers of embedded systems projects.


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.


All required development tools and equipment will be provided by Embedded Labworks.


The course material contains the slides of the presentations, 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.

Development kits

Training exercises are performed on the official Android emulator.

Open sessions

The 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 participating in the training but there is no open session available, please fill the pre-registration form clicking here. We will contact you as soon as a new training session is opened.

In-company sessions

If you plan to train your team or a group of people, consider a training session in your company.

In-company classes have the same characteristics of an open training session. In this model, the company is responsible for providing the necessary resources needed for the training, including 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 in a specific way, like preparing the training material for a specific hardware platform or developing additional content. Do not hesitate to contact us by e-mail or leaving a message in the contact page.

Take the training to your city

You can take the training session to your community at any city in Brazil!

Can't afford to take the course in São Paulo? Do you have a study group and want to learn more about a specific technology? Do you coordinate or participate in the coordination of a course at your university and would like to train the teachers and students? Do you have a space and would like to get some friends together and spend enjoyable hours learning about embedded systems?

Send an e-mail or leave a message in the contact page. Send the name of the course you are interested and the city. If we can get together a group of interested people, we can bring the training to your city!

Customers who already attended

If you have any question, please send an e-mail or leave us a message on the contact page.

Contact us