深入理解Android核心设计思想


深入理解Android核心设计思想

文章插图
深入理解Android核心设计思想【深入理解Android核心设计思想】《深入理解Android核心设计思想》适用于Android 4.3以上的版本 。全书从作业系统的基础知识入手 , 全面剖析进程/执行绪、记忆体管理、Binder机制、GUI显示系统、多媒体管理、输入系统等核心技术在Android中的实现原理 。书中讲述的知识点大部分来源于工程项目研发 , 因而具有较强的实用性 , 希望可以让读者“知其然 , 更知其所以然” 。全书分为编译篇、系统原理篇、套用原理篇、系统工具篇共4篇22章 , 基本涵盖了参与Android开发所需具备的知识 , 并通过大量图片与实例来引导读者学习 , 以求儘量在原始码分析外为读者提供更易于理解的思维方式 。《深入理解Android核心设计思想》既适合Android系统工程师 , 也适合于套用开发工程师来阅读提升Android开发能力 。读者可以在《深入理解Android核心设计思想》潜移默化的学习过程中更深刻地理解Android系统 , 并将所学知识自然地套用到实际开发难题的解决中 。
基本介绍中文名:深入理解Android核心设计思想
书名:深入理解Android核心设计思想
类型:计算机与网际网路
出版日期:2014年5月1日
语种:简体中文
ISBN:7115348413
作者:林学森
出版社:人民邮电出版社
页数:687页
开本:16
基本介绍内容简介4次重大改版 , 10余次修订 , 历史3年完成 基于Android SDK最新版本 全面剖析了进程/执行绪、记忆体管理、Binder机制、GUI显示系统、多媒体管理、输入系统等核心知识在Android中的实现原理 通过大量图片与实例来引导读者学习 , 以求儘量在源码分析外 , 为读者提供更易于理解的思维路径 由浅入深 , 由总体框架再到细节实现 , 让读者儘快了解Android核心的设计思想作者简介林学森 , 香港中文大学计算机硕士 , 曾于多家跨国企业担任研发和管理工作 , 并已在国内外会议、杂誌上发表多篇一作文章 。现为某行业知名企业Android软体创始人、负责人 。有丰富的技术研发与项目管理经验 , 擅长作业系统架构设计与核心分析 。图书目录第1篇 Android编译篇 第1章 Android系统简介 1.1 Android系统发展历程 1.2 Android系统特点 1.3 Android系统框架 第2章 Android源码下载及编译 2.1 Android源码下载指南 2.1.1 基于Repo和Git的版本管理 2.1.2 Android源码下载流程 2.2 原生态系统编译指南 2.2.1 建立编译环境 2.2.2 编译流程 2.3 定製产品的编译与烧录 2.3.1 定製新产品 2.3.2 Linux核心编译 2.3.3 烧录 2.4 Android系统映像档案 2.4.1 boot.img 2.4.2 ramdisk.img 2.4.3 system.img 2.5 OTA系统升级 2.5.1 生成升级包 2.5.2 获取升级包 2.5.3 OTA升级—RecoveryMode 2.6 Android反编译 第3章 Android编译系统 3.1 Makefile入门 3.2 Android编译系统 3.2.1 Makefile依赖树的概念 3.2.2 树根节点droid 3.2.3 main.mk解析 3.2.4 droidcore节点 3.2.5 dist_files 3.2.6 Android.mk的编写规则 第2篇 Android原理篇 第4章 作业系统基础 4.1 计算机体系结构(Computer Architecture) 4.1.1 冯·诺依曼结构 4.1.2 哈佛结构 4.2 什幺是作业系统 4.3 进程间通信的经典实现 4.3.1 共享记忆体(Shared Memory) 4.3.2 管道(Pipe) 4.3.3 Unix Domain Socket 4.3.4 RPC(RemoteProcedure Calls) 4.4 同步机制的经典实现 4.4.1 信号量(Semaphore) 4.4.2 Mutex 4.4.3 管程(Monitor) 4.4.4 同步範例 4.5 Android中的同步机制 4.5.1 进程间同步——Mutex 4.5.2 条件判断——Condition 4.5.3 “栅栏、障碍”——Barrier 4.5.4 加解锁的自动化操作——Autolock 4.6 作业系统记忆体管理基础 4.6.1 虚拟记忆体(Virtual Memory) 4.6.2 记忆体保护(Memory Protection) 4.6.3 记忆体分配与回收 4.6.4 进程间通信——mmap 4.7 Android中的Low Memory Killer 4.8 Android匿名共享记忆体(Anonymous Shared Memory) 4.8.1 Ashmem设备 4.8.2 Ashmem套用实例 4.9 JNI 4.9.1 Java函式的本地实现 4.9.2 本地代码访问JVM 4.10 学习Android系统的两条线索 第5章 Android进程/执行绪管理 5.1 Android进程和执行绪 5.2 Handler ,  MessageQueue , Runnable与Looper 5.3 UI主执行绪——ActivityThread 5.4 Thread类 5.4.1 Thread类的内部原理 5.4.2 Thread休眠和唤醒 5.4.3 Thread实例 5.5 Android应用程式的典型启动流程 第6章 进程间通信——Binder 6.1 智慧型指针 6.1.1 智慧型指针的设计理念 6.1.2 强指针sp 6.1.3 弱指针wp 6.2 进程间的数据传递载体——Parcel 6.3 Binder驱动与协定 6.3.1 打开Binder驱动——binder_open 6.3.2 binder_mmap 6.3.3 binder_ioctl 6.4 “DNS”伺服器——ServiceManager(Binder Server) 6.4.1 ServiceManager的启动 6.4.2 ServiceManager的构建 6.4.3 获取ServiceManager服务——设计思考 6.4.4 ServiceManagerProxy 6.4.5 IBinder和BpBinder 6.4.6 ProcessState和IPCThreadState 6.5 Binder客户端——Binder Client 6.6 Android接口描述语言——AIDL 6.7 匿名Binder Server 第7章 Android启动过程简析 7.1 第一个系统进程(init) 7.1.1 init.rc语法 7.1.2 init.rc实例分析 7.2 系统关键服务的启动简析 7.2.1 Android的“DNS伺服器”——ServiceManager 7.2.2 “孕育”新的执行绪和进程——Zygote 7.2.3 Android的“系统服务”——SystemServer 第8章 管理Activity和组件运行状态的系统进程——Activity ManagerService (AMS) 8.1 AMS功能概述 8.2 管理当前系统中Activity状态——Activity Stack 8.3 startActivity流程 8.4 完成同一任务的“集合”——Activity Task 8.4.1 “后进先出”——Last In , First Out 8.4.2 管理Activity Task 第9章 GUI系统之SurfaceFlinger 9.1 OpenGL ES与EGL 9.2 Android的硬体接口——HAL 9.3 Android终端显示设备的“化身”——Gralloc与Framebuffer 9.4 Android中的本地视窗 9.4.1 FramebufferNativeWindow 9.4.2 应用程式端的本地视窗——Surface 9.5 BufferQueue详解 9.5.1 BufferQueue的内部原理 9.5.2 BufferQueue中的缓冲区分配 9.5.3 应用程式的典型绘图流程 9.5.4 应用程式与BufferQueue的关係 9.6 SurfaceFlinger 9.6.1 “黄油计画”——Project Butter 9.6.2 SurfaceFlinger的启动 9.6.3 接口的服务端——Client 9.7 VSync的产生和处理 9.7.1 VSync信号的产生和分发 9.7.2 VSync信号的处理 9.7.3 handleMessageTransaction 9.7.4 “界面已经过时/无效 , 需要重新绘製”——handleMessageInvalidate 9.7.5 合成前的準备工作——precomposition 9.7.6 可见区域——rebuildLayerStacks 9.7.7 为“Composition”搭建环境——setupHWComposer 9.7.8 doDebugFlashRegions 9.7.9 docomposition 第10章 GUI系统之“视窗管理员”——WMS 10.1 “视窗管理员”——WMS综述 10.1.1 WMS的启动 10.1.2 WMS的基础功能 10.1.3 WMS的工作方式 10.1.4 WMS , AMS与Activity间的联繫 10.2 视窗属性 10.2.1 视窗类型与层级 10.2.2 视窗策略(Window Policy) 10.2.3 视窗属性(LayoutParams) 10.3 视窗的添加过程 10.3.1 系统视窗的添加过程 10.3.2 Activity视窗的添加过程 10.3.3 视窗添加实例 10.4 Surface管理 10.4.1 Surface申请流程(relayout) 10.4.2 Surface的跨进程传递 10.4.3 Surface的业务操作 10.5 performLayoutAndPlaceSurfacesLockedInner 10.6 视窗大小的计算过程 10.7 启动视窗的添加与销毁 10.7.1 启动视窗的添加 10.7.2 启动视窗的销毁 10.8 视窗动画 10.8.1 视窗动画类型 10.8.2 动画流程跟蹤——WindowStateAnimator 10.8.3 AppWindowAnimator 10.8.4 动画的执行过程 第11章 让你的界面炫彩起来的GUI系统之View体系 11.1 应用程式中的View框架 11.2 Activity中View Tree的创建过程 11.3 在WMS中注册视窗 11.4 ViewRoot的基本工作方式 11.5 View Tree的遍历时机 11.6 View Tree的遍历流程 11.7 View和ViewGroup属性 11.7.1 View的基本属性 11.7.2 ViewGroup的属性 11.7.3 View , ViewGroup和ViewParent 11.7.4 Callback接口 11.8 “作画“工具集——Canvas 11.8.1 “绘製UI”——Skia 11.8.2 数据中介——Surface.lockCanvas 11.8.3 解锁并提交结果——unlockCanvasAndPost 11.9 draw和onDraw 11.10 View中的讯息传递 11.10.1 View中TouchEvent的投递流程 11.10.2 ViewGoup中TouchEvent的投递流程 11.11 View动画 第12章 “问渠哪得清如许 , 为有源头活水来”——InputManagerService与输入事件 12.1 事件的分类 12.2 事件的投递流程 12.2.1 InputManagerService 12.2.2 InputReaderThread 12.2.3 InputDispatcherThread 12.2.4 ViewRootImpl对事件的派发 第13章 套用不再同质化——音频系统 13.1 音频基础 13.1.1 声波 13.1.2 音频的录製、存储与回放 13.1.3 音频採样 13.1.4 Nyquist–Shannon採样定律 13.1.5 声道和立体声 13.1.6 声音定级——Weber–Fechner law 13.1.7 音频档案格式 13.2 音频框架 13.2.1 Linux中的音频框架 13.2.2 TinyAlsa 13.2.3 Android系统中的音频框架 13.3 音频系统的核心——AudioFlinger 13.3.1 AudioFlinger服务的启动和运行 13.3.2 AudioFlinger对音频设备的管理 13.3.3 PlaybackThread的循环主体 13.3.4 AudioMixer 13.4 策略的制定者——AudioPolicyService 13.4.1 AudioPolicyService概述 13.4.2 AudioPolicyService的启动过程 13.4.3 AudioPolicyService与音频设备 13.5 音频流的回放——AudioTrack 13.5.1 AudioTrack套用实例 13.5.2 AudioPolicyService的路由实现 13.6 音频数据流 13.6.1 AudioTrack中的音频流 13.6.2 AudioTrack和AudioFlinger间的数据互动 13.6.3 AudioMixer中的音频流 13.7 音量控制 13.8 音频系统的上层建筑 13.8.1 从功能入手 13.8.2 MediaPlayer 13.8.3 MediaRecorder 13.8.4 一个典型的多媒体录製程式 13.8.5 MediaRecorder源码解析 13.8.6 MediaPlayerService简析 13.9 Android支持的媒体格式 13.9.1 音频格式 13.9.2 视频格式 13.9.3 图片格式 13.9.4 网路流媒体 13.10 ID3信息简述 13.11 Android多媒体档案管理 13.11.1 MediaStore 13.11.2 多媒体档案信息的存储“仓库”——MediaProvider 13.11.3 多媒体档案管理中的“生产者”——MediaScanner …… 第3篇 套用原理篇 第4篇 Android系统工具