Sei sulla pagina 1di 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

Potrebbero piacerti anche