Students
69
Lectures
99
Course Duration
Unlimited Duration
Updated
June 10, 2022

The Android Internals course trains you on the internals of the latest Android OS.
Android Internals focuses on the common Android architecture, vendor modules and hardware abstractions using HIDL and AIDL for HAL.

Ernesto Lee
4.67
4.666666666666667
22
Courses
1448
Students
This Android Internals course is for developers who want to dig deeper than the standard Android SDK. It is for those who want to hack the system a bit in order to add system services and hardware support for non-standard components or port Android to completely new boards.
In this Android Internals course, you will be able to:
- Build and run Android Cuttlefish VM, a configurable virtual Android device representing the current state of the AOSP development
- vnc to cuttlefish VM in the cloud
- Build and update the Android kernel; understand what is the Generic Kernel Image (GKI)
- Navigate the Android source code and correlate running processes to their original source code
- Open intermediate files to understand data marshalling for binder transaction
- Use intermediate files for method signature lookup
- Understand Android blueprint files
- Understand dynamic partitions - super.img
- Understand the purpose of the Generic System Image (GSI) and system_ext image
- Understand & customize Android, Linux and SELinux security policy & enforcements
- Understand how to create an OTA and what is A/B Updates
- Understand binder architecture - binder, hwbinder, vndbinder and their corresponding service managers
- Understand boot - init, zygote, system_server
- Use debug tools, dumpsys, strace, gdb, line2addr
- Use reverse engineers tools: dex2jar, jd-gui
- Create a vendor HIDL Service, a native daemon (introduced in Android 8, still in-use)
- Create a vendor HIDL Native client
- Create a vendor Java SDK Library (introduced in Android 10)
- Create a persistent app with control UI
- Create a vendor HIDL Java client
- Upgrade an HIDL to AIDL (hidl2aidl) (introduced in Android 11)
- Create a vendor AIDL service
- Create a vendor AIDL Java client
-
- 1. What is AOSP Unlimited
- 1.1 Lab Pre-Requisites Unlimited
- 1.2 Virtual Machine / Linux Unlimited
- 1.3 Customize Virtual Machine Unlimited
- 1.4 Install Linux Binaries Unlimited
- 1.5 Install the Repo Launch Tool Unlimited
- 1.6 Pull Android 12 Unlimited
- 1.7 Devices Unlimited
- 1.8 Cuttlefish Unlimited
- 1.9 Hmm Unlimited
- 1.10 Cuttlefish Build (6 hours) Unlimited
- 1.11 Cuttlefish Build Output Unlimited
- 1.12 Setup Cuttlefish with acloud Unlimited
- 1.13 Boot Cuttlefish with acloud Unlimited
- 1.14 Boot Cuttlefish without acloud Unlimited
- 1.15 Developer Options Unlimited
- 1.16 Tips and Troubleshooting Unlimited
-
- 2. Authorizing a real device for an adb connection Unlimited
- 2.1 UIDs and Discretionary Access Control Unlimited
- 2.3 SELinux Unlimited
- Private Application Files and Process Status Unlimited
- Lab Unlimited
- 3. Android Make Build System Unlimited
- 3.2 Product.mk and COMMON_LUNCH_CHOICES Unlimited
- 3.3 Product Makefiles and Inheritance Unlimited
- 3.4 Generic System Image Unlimited
- 3.5 Android Partitions Unlimited
- 3.6 Dynamic Partitions, “super.img”, A/B System Updates and “fastbootd” Unlimited
- HIDL Interface Unlimited
- Android Makefile in Cuttlefish Unlimited
- dmesg & sepolicy Unlimited
- hal_cpu_default.te & avc denied Unlimited
- audit2allow AND property_contexts Unlimited
- hwbinder_use macro Unlimited
- hal_cpu_hwservice & add_hwservice macro Unlimited
- Thin Native HIDL Client Unlimited
- JNI_OnLoad Unlimited
- cc_library_shared Unlimited
- The Application Class Unlimited
- Receiving set Scaling Governor Broadcast Unlimited
- Persistent Android App Unlimited
- Strings Resources File Unlimited
- Android app Unlimited
- SE Linux Unlimited
- Test the App Unlimited
- Adding HIDL Java Libs Unlimited
- Adding New TextViews Unlimited
- Instantiating a Java HIDL Proxy Unlimited
- Adding Java HIDL Proxy Calls Unlimited
- Moving the App from the Vendor to the System_ext Partition (SSI) Unlimited
- dex2jar & jdgui Unlimited
- Service Holder Template Unlimited
- Cpu service Unlimited
- Running the Service as a Native Daemon Unlimited
- Defining a New vintf AIDL Object Unlimited
- Adding the AIDL Service Unlimited
- Cpu service: SELinux Unlimited
- Adding the AIDL Jar Unlimited
- Adding a New AIDL Java Proxy to the Application Unlimited
- Adding the AIDL Call in our UI Unlimited
- Adding SE Linux Rules Unlimited
- Drozer install script Unlimited
- Drozer – available modules Unlimited
- Service list Unlimited
- dumpsys Surface Flinger Unlimited
- dumpsys activity Unlimited
- Power Management Unlimited