
promotional video for the visual embedded android (aosp) with drawings and practice course, highlighting the course focus on visuals and practical drawing skills in an embedded android context.
Definition of embedded system, purpose of using embedded systems, difference between safety critical and non-safety critical applications.
Why do we customize hardware and software? What are the responsibilities of embedded system developers? Hardware and software components in a basic embedded system.
Scheduling, memory management, logging, C library, kernel in Android compared with Linux. Introduction to Low Memory Killer, Binder, Hardware Abstraction Layer.
How applications, services, libraries work together and talk with the device drivers in Linux kernel? Linux software stack introduction and examples. System call functions. Interprocess communication.
Android operating system software stack, Android API, Android Framework, Android System Services, Android Runtime. Example software stack. Case Study: Application requesting system to suspend. SELinux introduction. Examples for each software stack layers in Android.
Linux and Android boot introduced with drawings and examples. Purposes of bootloader, Linux kernel, Linux userspace are explained. Android boot explained (Android Runtime, Zygote, system_server)
Downloading Android source using repo tool. Configuring build using lunch command. Building Android source. Build variants (userdebug, user, eng) explained.
Downloading Android 11 source for ASUS Tinkerboard 2 using repo tool
Downloading Android 11 source for ASUS Tinkerboard 2. Information on how to build Linux kernel, Android images, bootloader, and how to generate SD card image to use for ASUS Tinkerboard2.
Flashing image to ASUS Tinkerboard 2 using balenaEtcher tool
Directories that contain Android (AOSP) source code are explained with examples.
userdata, odm, product, vendor, system_ext, system partitions explained. Which stakeholders will use which partitions? Is there possibility to have access in between different partitions? These questions are explained.
Introduction to ASUS Tinkerboard 2 Hardware. Interfacing using Serial Interface using minicom tool. Getting access to terminal.
Getting access to the Android device using Android Debugging Bridge (ADB) over USB connection. Flashing seperate images and getting information using fastboot command.
Enabling fastboot mode in the device. Using fastboot tool to flash images to the system.
Accessing and visualizing graphical desktop interface using AdbRemoteScreen tool.
Exploring ASUS Tinkerboard 2 source and finding board, build, and device configuration files
Exploring ASUS Tinkerboard 2 source and finding init scripts (RC files)
Exploring ASUS Tinkerboard 2 source and finding devicetree and kernel config files
Exploring ASUS Tinkerboard 2 source and finding Android Framework customization files
Integrate a launcher app written in Android Studio into the Android Open Source Project build system and flash it to a tinker board for boot-time verification.
Create a dedicated device workspace to contain your changes, including a udemy_my_name folder, overlays, and policy directories, then include it in the Android build to apply customizations.
Learn to integrate a prebuilt APK into the Android build system using an Android.mk module, signing with platform certificates, and prebuilt source handling, with examples like the Asus toolkit.
Enable night mode by updating the android framework’s config.xml to set night mode to yes, then build, flash, and boot to verify the dark theme in settings and default apps.
Modify the Android framework to replace the default wallpaper using overlays and three image files. Also adjust the boot string to Jarvis for a cohesive, dark startup.
Explore how Android system properties act like environment variables to hold runtime configuration, reveal build details via ADB shell getprop, and control features with setprop and getprop.
Port Linux binaries into the Android build system using external examples, via CC rules and Autotools or CMake, then add to the device folder and build, flash, run.
Deploy binaries, libraries, or build artifacts to different Android build system partitions such as system, product, ODM, or system x, with default behavior when unspecified.
Build a specific module quickly by using the mm command after running the environment setup and launch scripts, focusing on the example service and its libraries.
What is required for native service creation in Android? What will we be doing in the next few lectures? How does the files and directories we will modify look like?
Create an init script to start a service on boot by extending an rc file and defining the service and its path, with reference to Android init language documentation.
Modify manifest and framework compatibility matrix to register an IDL AIDL interface in the Android build, ensuring the system recognizes the example service API transport and enables IPC.
Add an IDL interface to the Android bp file, define the API example.service.api, enable Java, CPP, and SDK generation, then update and freeze the API to generate hashes.
Configure a C Linux build and SELinux policy extensions for an example service, create domain and file contexts, and fix AVC denials to run.
Create a test Android app that binds to the example service over an AIDL interface and calls the get values function to retrieve an example type data via binder.
In this lecture, we will have a look at what's wrong in our logcat logs and we will try to fix logcat problems.
Google tests, CDD requirements, Compatibility Test Suite (CTS), Vendor Test Suite (VTS), Security Test Suite (STS), Compatibility Test Suide Verifier (CTS Verifier). How to make sure that our device is officially Android-compatible?Running CTS tests, debugging issues in CTS tests.
Explained commands for listing packages, users, features, broadcasts. How to pull or push data from/to device? How do debug crashed applications? How to filter logcat output?
Hi,
My name is Mustafa Ozcelikors, a Linux & Android Engineer with more than +7 years of experience working in automotive, who have won Google SOC event in 2017. Here comes a unique beginner to intermediate course that is dedicated to teach Android Open Source Project and Embedded Android concepts to a larger audience.
Visual Embedded Android Training is a unique course in the way that I use slideshows, pen and canvas for theoretical subjects, whereas makes hands-on examples for the practical subjects. I have mastered this technique over the years, teaching my colleagues at work, teaching on Youtube, and now I have decided to move on to Udemy to reach larger audience.
Theoretical subjects are carefully planned and almost for every important subject, multiple block diagrams have been created for better understanding. Almost every figure, schematic, drawing comes from years of experience in the field, not from the internet or from any book. In practical subjects we take a deep dive in exploring AOSP directories and open up a terminal to achieve things within it.
At the end of the course we together will have a custom Android with custom launcher and custom theme, with integrated AIDL service and test application.
You are in this now for the following great content:
Understand embedded Android and Linux software stacks
Get around with Android 11 source code and Soong (Android.bp) build system
Use ASUS Tinkerboard 2 and run Android 11 on it , completely from the source.
Create AIDL interfaces, native C++ Android services, create test applications
Port existing Android Java applications to Soong (Android.bp build system
Understand AOSP folder layout, partitions
Understand and work with SELinux policies
Flash images confidently using fastboot tool
Talk to embedded device confidently using adb tool
Run CTS tests
Log and dump Android system information
Thank you!!
Kindly yours,
Mustafa