Course Outline
Android provides a rich application framework that allows you to build innovative apps and games for mobile devices in a Java and native languages. We can also find Android OS on many embedded systems as a good replacement to Embedded Linux. Using android as an "improved Linux" saves time because you get all you need out of the box (libraries, packages, data services, etc.) This course covers the internal side of android from top to bottom. You will learn how to use android in an embedded environment, how to access hardware and handling interrupts all over the android stack, and how data flows from the java application down to the kernel driver and the hardware.
Upcoming Meetings
There are no upcoming meetings for this course. Contact us to schedule this course, which will be customized specifically for your organization.
info@hackerupro.comModules
Android Overview
- Android history
- Android stack
- Writing Applications components
- Activities
- Intents
- Broadcast receivers
- Content Providers
- GUI basics, resources manifest file
- Processes and threads
- Examples
Android Stack: Android Linux Kernel Layer
- Binder
- Ashmem
- Pmem/ION
- Wakelock
- Early Suspend
- Alarm
- Low Memory Killer
- Logger
- Alarm
- Paranoid Network Security
- Other Kernel Changes
- Real time requirements and RT-patch
Android User-Space Native Layer
- Overview
- Bionic (libc)
- User-space Hardware Abstraction Layer (HAL)
- Native Daemons: ueventd, servicemanager, vold, netd, rild, mediaserver, keystore, racoon, zygote, system_server, adbd, surfaceflinger, etc
- Function libraries: libwebcore (Web Kit), V8, SQLite, libssl (OpenSSL), etc
- Android Runtime / Dalvik Virtual Machine
- Real – time requirements
Android Application Framework Layer
- Overview
- Managers and Services
- Overview of system services and how to use them
- The binder IPC
- The system server and service manager
Inter Process Communication (IPC) with Android Binder and AIDL
- Why IPC?
- What is Binder?
- What is AIDL?
- Building a Binder-based Service & Client by Example
- Async - IPC via Binder by Example
Android Security
- Android Security Architecture
- Application Signing
- User IDs
- File Access
- Using Permissions
- Permission Enforcement
- Declaring Custom Permissions
- Custom Permissions by Example
- Encryption in java and native code
Android Startup
- Bootloading the Kernel
- Android’s init Startup
- Startup of daemons
- Zygote Startup
- System Server Startup
- Startup of system services
- Startup of applications
Customizing Android
- Setting up Custom Device
- The Build System
- Adding a Custom Kernel
- Adding a custom driver
- Integrating with ueventd
- Adding a Custom Native Library & Executable
- Exposing our Native Library via Java (i.e. JNI)
- Consuming our a Custom Java/JNI, Native Library via a Custom App
- Exposing our Custom Library via a Custom IPC/Binder Service
- Building a Custom App Using a Custom Service Manager
- Creating a full system service
- Handling interrupts at any layer, Debugging code in AOSP (application & libraries)
Prerequisites
- Delegates should have a working knowledge in C/C++/Java/C#. (At least one)