0% found this document useful (0 votes)
233 views

Android Internals Training4days

This 4-day training course covers Android internals from the operating system stack to building custom ROMs. Day 1 introduces Android history and architecture, including the Linux kernel, native libraries, and app framework. Day 2 covers main building blocks like activities, intents, services, and content providers. Day 3 dives into device drivers, kernel features, and power management. Finally, Day 4 teaches how to build a custom ROM from source, including initializing the build environment, building images, and flashing to hardware.

Uploaded by

Swami Nathan
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
233 views

Android Internals Training4days

This 4-day training course covers Android internals from the operating system stack to building custom ROMs. Day 1 introduces Android history and architecture, including the Linux kernel, native libraries, and app framework. Day 2 covers main building blocks like activities, intents, services, and content providers. Day 3 dives into device drivers, kernel features, and power management. Finally, Day 4 teaches how to build a custom ROM from source, including initializing the build environment, building images, and flashing to hardware.

Uploaded by

Swami Nathan
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

Android Internals Training (4 days)

Day 1
Android Overview and History
Overview of Android
Why Android is different
Android Stack
Overview of the stack
Linux kernel
Native libraries
DalvikApp framework
Apps
SDK Overview
Platforms
Tools
Versions
Quick Start
Installing SDK
Hello, World!
The Emulator
Hello World App
Creating your first project
The manifest file
Layout resource
Running your app on Emulator
Android system Overview
File System
Preferences
Notifications
Security model

DAY2
Main Building Blocks
Activities
Activity lifecycle
Intents
Services
Content Providers
Broadcast Receivers
Android User-space Native Layer
Bionic (libc)
User-space hardware abstraction layer (HAL) libhardware and libhardware_legacy
Native daemons: servicemanager, vold, rild, netd, mediaserver, installd, keystore, dhcpd,
ueventd, adbd.
Flingers: audio flinger and surface flinger
Function libraries: libwebcore (WebKit), V8, SQLite, FreeType, etc.
Media framework library: OpenCORE, Stagefright, Khronos' OpenMAX IL
3D and 2D libraries: OpenGL, OpenSL

Dalvik: motivation, differences from JavaSE and JavaME, optimizations, JIT, profiling,
Zygote
Android Linux kernel Layer
Overview of the Linux kernel and its role in Android OS
Binder IPC: overview, motivation, uses
Ashmem: overview of shared memory on Android
Pmem/ION: overview of device driver memory mapping
Wakelocks: power management on Android
Low-memory killer: process life-cycle management on Android
Logger: logging and debugging on Android
Android Native Layer
Java Native Interface (JNI)
JNI Overview
Java methods in Native code
Using NDK
Introduction to Linux Kernel (Brief)
Kernel Folder Structure
Compilation
Boot Loader (U-Boot)
GIT (Source Content Manager)
Kernel patch management using GIT
Very deep focus on ARM Boot process
Kernel Adaption (new cpu/new board)
Boot loader (UBoot) ARM Linux [In-Depth Coverage]

DAY3
Device Drivers
Modules I: Basics
Character Devices
Kernel Features
Interrupts and Exceptions
Modules II: Exporting, Licensing and Dynamic Loading
Debugging Techniques
Race Conditions and Synchronization Methods
Unified Device Model and sysfs
Firmware
Memory Management and Allocation
Transferring Between User and Kernel Space
Sleeping and Wait Queues
Interrupt Handling: Deferrable Functions and User Drivers
PCI
Platform Drivers
Power Management
Power Management in Android
Notifiers
CPU Frequency Scaling

CPU Idle
System-wide Power Management

DAY4
Building a Custom ROM
Building from source
Initializing the build environment: Linux, MacOS X
Downloading the source: overview of git and repo, manifest, branches, etc.
Android source-code structure
Overview of the source tree (walk-through)
Building Android image
Understanding the build environment
Device build names and build types
Understanding built images: ramdisk.img, boot.img, system.img, userdata.img, recovery.img,
etc.
Running custom Android images with the emulator
Flashing custom Android images on real hardware
Building and using a custom Linux Kernel
Bootloading the kernel
Android's init startup
Understanding init.rc language and options
Overview of generic and device-specific init.rc files and startup
Startup of daemons

You might also like