Overview of Android Internals
This corporate training programs takes participants through the internal workings of the android operating system. It gives an introduction to the Android Architecture and takes participants through managing the internal processes of an Android. Furthermore, the course walks participants through the Android Source code to give participants an understanding of the important hardware & software components of the Android Framework. This is a deep dive training programs at the end of which participants would fully understand the Android framework, be comfortable to build applications using NDK and JNI, customize Android and its processes, etc.
Duration
5 Days
Prerequisite for Android Internals
A good knowledge knowledge of Embedded systems and internal workings of an operating system would be beneficial for the training program
Course Outline for Android Internals
Day 1
- Introduction to Android Architecture (AOSP)
- Android Kernel Architecture and Driver code walk
- ( How to add driver support of Binder, Ashmem, Wakelock….)
- Bootloader and Bootchain
- Android Secure/Insecure Device
- Kick start Android Framework (Download and setup code )
- All about repo tool, make and build process
- How to compile and flash the Android image (boot.img, system.img …)
- Android Booting process (Linux to final Launcher Home screen )
- What is fastboot and how to use
Day 2
- Power Management Framework (Introduction, Work, source code walk )
- Password Management (Introduction, Work, source code walk )
- System Server (Introduction, Work, source code walk )
- Package Manager(Introduction, Work, source code walk )
- Activity Manager(Introduction, Work, source code walk )
- Media Server Architecture (Introduction, Work, source code walk )
- Android A/V Architecture (Introduction, Work, source code walk )
- Android system services (Introduction, Work, source code walk )
- How to add New system service to an Android framework, HAL and JNI
- Adding support for the new sensor in the Android HAL layer (intro and demo)
Lab Exercises with Hands-on
- Demo to add new sensor support in android HAL
- Demo to add new service in the Android framework
Day 3
- Android Treble
- What is Android HIDL component
- Introduction to Android HAL Layers (Introduction, Work, source code )
- Adding support for new hardware in android HAL layer (Intro and demo)
- Camera HAL and Framework(Introduction, Work, source code walk )
- Audio HAL and Framework(Introduction, Work, source code walk )
- Audio and Surface Flinger(Introduction, Work, source code walk )
- How to include a custom component or stock app or libraries?
- How to add new Vendor support in android source code
- How to add a new application in android source code
Lab Exercises with Hands-on
- Demo to add new vendor support in the Android build system
- Demo to add a new custom application to build android
Day 4
- About Android, mk, Device.mk and Its configuration
- What Android.bp file and its configuration
- Role of Zygote and ART in Android (Introduction, Work, source code )
- Android Debugging (SDK tools, DDMS, ADB, LOGCAT)
- Android Boot & Memory Optimizations (Introduction, Work, source code )
- Android System performance and stability
- AFW with Device Policy Controller
- What is SFI/MFI?
- What is OTA? (Full and Incremental )
Lab Exercises with Hands-on
- Demo on Add new device.mk
- Hands-on Debugging Android Linux, Filesystem and framework
Day 5
- Android Security Architecture Overview
- System and Linux kernel Security Introduction
- Android Application Security Introduction
- Authentication Overview with emphasis on Fingerprint and Gatekeeper component
- All about Keystore and TrustZone (Trusty API)
- Encryption- File-Based Encryption vs Full-Disk Encryption
- What is Secure Token loading/design, Token signing
- Android SELinux Implementation and customizations
- Verified Boot
- What is vold and fstab files?
- What is CTS and VTS in android?
Lab Exercises with Hands-on
- Demo on Add new SELinux policy in android device
- Hands-on to Setup and Run the CTS in android device
- JPA Rest