Android Framework 深入浅出-HAL, Binder, View System 与 Native Service

颛孙庆
2023-12-01

     Android 的 HAL (硬件抽像层)是 Google 因应厂商“希望不公开源码”(就是为了避开linux kernel的GPL license的束缚)的要求下,所推出的新观念。HAL 的目的是为了把 Android framework 与 Linux kernel 完整“隔开”,简而言之,Android把控制硬件的动作都放到了user space中,而再kernel driver里面只有最简单的读写寄存器的操作,而完全去掉了各种功能性的操作(比如控制逻辑等),这些能够体现硬件特性的操作都放到了Android的HAL层,而Android是基于Aparch的license,因此硬件厂商可以只提供二进制代码,所以说Android只是一个开放的平台,并不是一个开源的平台。让 Android 不至过度依赖 Linux kernel ,让 Android framework 的开发能在不考虑驱动程序的前提下进行发展。
由于Android的Java层级只是一个外壳框架而已,大部分的系统组件(Android本身)都是在Nataive层(又称C/C++层)执行。这是Android的整体架构,所以我们的应用程序也必须考虑分为两层的必要性,才能完全的融入Android的整体架构里。我们看到的Android应用架构(Application Framework)其实只是Android整体架构里的外壳结构而已。

第01堂課:Hardware Abstract Layer 架构与驱动模块开发

1.1 Service与Manager的内涵
1.2 libhardware 与 HAL API
1.3 Stub & Module 的理念
1.4 HAL Stub Analysis and Design (OOAD)
1.5 HAL Stub Class
1.6 HAL Stub Interface

第02堂課:Android Service 架构与 SystemServer 整合开发
2.1 Zygote & SystemServer 介绍
2.2 ServiceManager介绍
2.3 IPC、 Remote method call与Binder观念说明
2.4 AIDL介绍与IInterface设计理念解析
2.5 Activity & ApplicationContext
2.6 ServiceManager

第03堂課:Android Framework 架构原理分析 (OOD)
3.1 JNI 开发
3.2 Remote Object观念与IBinder介绍
3.3 如何以Proxy Object整合Android Service
3.4 Handler 与 Message 的解析与案例剖析

3.5 Doing Long Operations

3.6 Design Patterns of Android Framework

第04堂課:Android Process 模式与系统程序
4.1 Component与 Main Thread
4.2 Instance of Dalvik VM
4.3 Introduction of Dalvik VM
4.4 Android Process Model
4.5 Class Preloading
4.6 Dalvik VM Instantiation & Initialization

第5堂課:Manager API & Context
6.1 Introduction Context
6.2 getSystemService()
6.3 IPC & AIDL
6.4 IPC with Android Service using Binder Proxy

第7堂課:Native Service 实现完整解析
7.1 使用 IInterface (Java vs C++)
7.2 使用 BnInterface 与 BpInterface
7.4 Implementation of Native Servic
7.5 Implement Native Binder Proxy

第8堂課:Binder 原理与核心架构解析
8.1 Proxy Design Pattern
8.2 .asInterface() 深入解析
8.3 Linux Binder 驱动解析
8.4 BpInterface, Proxy object 与 IPC transaction
8.5 Architect of SensorManager

第9堂课:View System 设计模式与实现原理解析
9.1 Introduction to Activity, Window and View
9.2 Architecture of Android View System
9.3 Surface and Canvas
9.4 The flow of drawing: from View to SurfaceFlinger
9.5 The MVC design of View Hierarchy
9.6 The Composite pattern of View Hierarchy


 类似资料: