精华内容
下载资源
问答
  • 深入理解Android内核设计思想.pdf
  • Android系统实际上是运行在Linux内核之上的一系列“服务进程”,并不算一个完整意义上的操作系统。这些进程是维持设备正常工作的关键,而它们的老祖宗就是init。Ini是linux系统用户空间的第一个进程,也就是Android...

    第四章 操作系统基础

    操作系统的实质是向下负责管系统理硬件,并为上层应用提供稳定编程接口和人机交换界面的软件集合。

    进程间通信方式:共享内存,管道(pipe),sockst,rpc。

    第五章 Android进程/线程管理

    四大组件并不是程序(进程)的全部,而只是它的“零件”,应用程序启动后,将创建ActicityThread主线程,一个Activity启动后至少有3个线程:即1个主线程和2个Binder线程。

    第六章 Binder

    1 Binder驱动——路由器

    Service Manager——DNS

    Binder Client——客户端

    Binder Server——服务器

    Binder的本质是:进程1(客户端)希望与进程2(服务器)进行互访。但因为它们之间是跨进程(跨网络)的,所以必须借助Binder驱动(路由器)来吧请求正确投递到对方所在进程(网络)中。而参与通信的进程们需要持有Binder颁发的唯一标志(IP地址)。和TCP/IP网络中类似,Binder中的DNS并不是必须的,前提是客户端能记住它要访问的进程的Binder标志(IP地址);而且要特别注意这个标志是动态的,这意为这即使客户端记住了本次通信过程目标进程的唯一标志,下一次访问仍然需要重新 获取,这无疑加大了客户端的难度。DNS的出现可以完美地解决这个问题,用于管理Binder标志与可读性更强的“域名”间的对应关系,并向用户提供查询功能,在BInder机制中,DNS的角色由Service Manager来扮演。

    第七章 Android启动过程简析

    Android系统实际上是运行在Linux内核之上的一系列“服务进程”,并不算一个完整意义上的操作系统。这些进程是维持设备正常工作的关键,而它们的老祖宗就是init。Ini是linux系统用户空间的第一个进程,也就是Android系统中用户空间的第一个进程,PID=0。init通过解析init.rc来陆续启动其他关键的系统进程服务——其中最重要的ServiceManager,Zygote和SystemServer。

    1 ServiceManager :Binder机制中的“DNS服务器”,负责域名(某Binder服务在ServiceManager注册时提供的名称)到IP地址(由底层Binder驱动分配的值)得解析。

    2 Zygote: 预载各种系统类(在ZygoteInte这个函数中),启动SystemServer。

    3 SystemServer:完成本地层服务的启动,例如:SurfaceFlinger,AudioFlinger;启动java层的各种服务,例如ActivityManagerService等。


    展开全文
  • 这本书太深了,不适合略读,可以在碰到相关问题时仔细研读,知识覆盖面较广...overview.png笔记文字深入理解Android内核思想1 4 操作系统基础1.1 4.3 进程间通信的经典实现1.1.1 共享内存1.1.2 管道pipe1.1.2.1 管道...

    这本书太深了,不适合略读,可以在碰到相关问题时仔细研读,知识覆盖面较广

    这么多大块的时间来一条条钻研这些内核实现细节其实不如学习算法来的有用,毕竟一个是形式,一个是内功

    留待查阅

    图片:

    efc7e22ea00e

    深入理解Android 内核设计思想 overview.png

    笔记文字

    深入理解Android内核思想

    1 4 操作系统基础

    1.1 4.3 进程间通信的经典实现

    1.1.1 共享内存

    1.1.2 管道pipe

    1.1.2.1 管道是单向的

    1.1.2.2 有容量限制

    1.1.3 Unix domain socket

    1.1.3.1 专门针对单机的进程间通信,并不依赖Network socket 的那些TCP/IP协议

    1.1.3.2 Android上使用最多的一种IPC机制是Binder,其次就是UDS

    1.1.4 RPC(Remote Procedure Calls)

    1.2 4.4 同步机制的经典实现

    1.2.1 定义

    1.2.1.1 如果多个进程间存在时序关系,需要协同工作以完成一项任务,则称为同步

    1.2.1.2 如果它们并不满足协同条件,而只是因为共享具有排他性资源时所产生的关系,称为互斥

    1.2.2 信号量(Semaphore)

    1.2.2.1 信号量与PV原语操作 是使用最广泛的互斥方法之一

    1.2.2.2 PV原语都属于原子操作(Atomic Operations)

    1.2.3 Mutex(Mutual Exclusion)

    1.2.4 管程(Monitor)

    1.2.4.1 对Semaphore机制的延伸和改善,是一种控制更为简单的同步手段

    1.2.4.2 管程中的方法都是受Mutex保护的,意味着同一时刻只允许有一个访问者使用它们

    1.3 4.5 Android中的同步机制

    1.3.1 Mutex

    1.3.2 Condition

    1.3.3 Barrier

    1.3.3.1 Barrier是填充了具体条件的Condition

    1.3.3.2 专门为SurfaceFlinger而设计

    1.4 4.6 操作系统内存管理基础

    1.4.1 核心点:虚拟内存、内存分配与回收、内存保护

    1.4.2 虚拟内存

    1.4.2.1 地址空间

    1.4.2.1.1 逻辑地址,也称相对地址,是程序编译后所产生的地址

    1.4.2.1.1.1 组成部分: Segment Selector + Offset

    1.4.2.1.2 线性地址

    1.4.2.1.3 物理地址

    1.4.3 内存保护

    1.4.4 内存分配与内存回收

    1.4.5 进程间通信mmap

    1.5 4-7 Android中的Low Memory Killer

    1.5.1 OOMKiller

    1.5.2 策略考虑因素

    1.5.2.1 进程消耗的内存

    1.5.2.2 进程占用的CPU时间

    1.5.2.3 oom_adj(OOM权重)

    1.5.3 自己改变oom_adj?

    1.5.3.1 1 写文件 : /proc//oom_adj

    1.5.3.2 2 android:persistent 添加到application标签中,设置应用为常驻内存

    1.6 4-8 Android 匿名共享内存

    1.6.1 Anonymous Shared Memory

    1.6.2 Ashmem 设备

    1.6.2.1 创建时机

    1.6.2.2 操作函数及实现原理

    1.6.2.3 Linux 共享机制的区别与联系

    1.6.3 Ashmem应用实例

    1.7 4-9 JNI

    2 5 Android 进程/线程管理

    2.1 5.1 Android进程和线程

    2.1.1 Activity启动后,除了主线程 ActivityThread之外还需要两个Binder线程

    2.1.2 Service与Activity一样,也寄存于ActivityThread之中,并且启动流程和Activity基本一致

    2.1.3 启动Service时,同样也需要两个Binder线程支持

    2.1.4 对于同一个AndroidManifest.xml中定义的四大组件,除非有特别声明,否则它们都运行于同一个进程中

    2.1.5 Android提供了特殊的方式让不是同一个包里的组件也可以运行于相同的进程中,优势是可以方便地进行资源共享

    2.1.5.1 针对个别组件,可以在标签中加入android:process

    2.1.5.2 针对整个包,直接在标签中加入android:process属性来指明

    2.2 5.2 Handler, MessageQueue Runnable, Looper

    2.2.1 Handler

    2.2.1.1 功能:处理Message、将Message压入MessageQueue

    2.2.1.2 函数

    2.2.1.2.1 post

    2.2.1.2.1.1 post

    2.2.1.2.1.2 postAtTime

    2.2.1.2.1.3 postDelay

    2.2.1.2.2 send

    2.2.1.2.2.1 sendEmptyMessage

    2.2.1.2.2.2 sendMessageAtFrontOfQueue

    2.2.1.2.2.3 sendMessageAtTime

    2.2.1.2.2.4 sendMessageDelay

    2.2.2 MessageQueue

    2.2.3 Looper

    2.2.3.1 分为两种:主线程、普通线程

    2.2.3.2 ThreadLocal 成员变量

    2.3 5.3 UI主线程——ActivityThread

    2.3.1 prepareMainLooper

    2.3.1.1 prepare

    2.3.1.2 不允许退出

    2.3.2 sMainThreadHandler

    2.3.2.1 创建处理消息环境

    2.3.2.2 循环处理消息

    2.4 5.4 Thread类

    2.4.1 内部原理

    2.4.1.1 implements Runnable

    2.4.1.2 state

    2.4.1.2.1 NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED

    2.4.2 休眠和唤醒

    2.4.2.1 相关方法:wait,notify,notifyAll, interrupt,join, sleep

    2.4.2.2 wait和notify/notifyAll

    2.4.2.3 interrupt

    2.4.2.4 join

    2.4.2.4.1 保证两个线程顺序执行

    2.4.2.4.2 带时间参数的join,保证在规定时间没有执行完前面的线程,也会继续执行后面的语句,防止无限等待

    2.4.2.5 sleep

    2.4.2.5.1 wait等待某个object

    2.4.2.5.2 sleep则是等待时间

    3 6. 进程间通信——Binder

    3.1 组成

    3.1.1 Binder驱动

    3.1.2 Service Manager

    3.1.2.1 在Binder通信中的唯一标志永远都是0

    3.1.3 Binder Client

    3.1.4 Binder Server

    3.2 智能指针

    3.2.1 引用计数器,由object自身持有

    3.2.2 强指针SP

    3.2.3 弱指针WP,主要使命是解决循环引用的问题

    3.2.3.1 弱指针必须升级为强指针才能访问它所指向的对象

    3.3 进程间的数据传递载体——Parcel

    3.4 Binder 驱动协议

    3.5 ServiceManager[Binder Server]

    3.5.1 类似“DNS”服务器

    3.6 Binder Client

    3.7 Android接口描述语言AIDL

    3.8 匿名Binder Server

    4 7. Android启动过程简析

    4.1 第一个系统进程 init

    4.2 系统关键服务的启动简析

    5 8. 管理Activity和组件运行状态的系统进程 Activity Manager Service(AMS)

    5.1 AMS功能概述

    5.1.1 寄存于SystemServer中。会在系统启动时创建一个线程来循环处理客户请求

    5.2 ActivityStack

    5.2.1 ActivityState

    5.2.2 ArrayList

    5.2.3 记录特殊状态下的Activity

    5.3 startActivity流程

    5.4 ActivityTask

    5.4.1 android:taskAffinity

    5.4.1.1 当启动Activity的Intent中带有FLAG_ACTIVITY_NEW_TASK标志时

    5.4.1.1.1 表示它希望为activity新开一个task, 如果有task的affinity与新Activity的affinity一样,则会复用此task,否则,新建task

    5.4.1.2 当Activity中的allowTaskReParenting属性设置为true时

    5.4.1.2.1 Activity具有动态转移能力

    5.4.2 android:alwaysRetainTaskState

    6 9. GUI系统之SurfaceFlinger

    7 11. View体系

    7.1 应用程序中的View框架

    7.1.1 ViewRoot是View的管理者,ViewRoot的核心任务就是与WindowManagerService进行通信

    7.1.2 Activity内部有一个mWindow成员变量

    7.1.3 Window与WindowManagerImpl的关系

    7.1.3.1 一个应用可能有很多个Window,不会让它们单独地与WMS通信

    7.1.4 ViewRoot与WindowManagerImpl的关系

    7.2 Activity中ViewTree的创建过程

    7.2.1 有了Window以后生成具体的内容由setContentView发起,设置mDecor

    7.3 在WMS中注册窗口

    7.4 ViewRoot的基本工作方式

    7.5 ViewTree的遍历时机

    7.6 ViewTree的遍历流程

    7.7 View 和 ViewGroup属性

    7.8 Canvas

    7.9 draw和onDraw

    7.10 View中的消息传递

    7.11 View动画

    8 12. InputManager Service与输入事件

    8.1 事件分类

    8.1.1 KeyEvent

    8.1.2 TouchEvent

    8.1.3 MouseEvent

    8.1.4 TrackBallEvent

    8.2 事件的投递流程

    9 13. 音频系统

    9.1 基础

    9.2 框架

    9.3 核心

    9.4 策略制定者

    9.5 回放

    9.6 数据流

    9.7 音量控制

    9.8 上层建筑

    9.9 支持的格式

    9.10 ID3简介

    9.11 多媒体文件管理

    10 14. Intent匹配规则

    10.1 Intent 属性

    10.2 匹配规则

    10.3 源码简析

    11 15. APK应用程序的资源适配

    11.1 资源类型

    11.2 可选资源

    11.3 最佳匹配流程

    11.4 屏幕适配

    12 16. Android字符编码格式

    12.1 ISO/IEC 8859

    12.2 ISO/IEC 10646

    12.3 Unicode

    12.4 String类型

    13 17. Android和OpenGL ES

    13.1 3D 基础

    13.2 OpenGL SE

    13.3 API-EGL

    13.4 GLSurfaceView

    14 18. SystemUI

    14.1 组成元素

    14.2 实现

    14.3 壁纸

    15 19. Widget

    15.1 AppWidgetProvider

    15.2 AppWidgetHost

    16 20. 编译和打包

    16.1 Ant

    16.2 命令行

    16.3 编译过程

    16.4 信息安全

    16.5 签名

    16.6 签名源码

    17 21. 版本控制

    17.1 Git

    18 22. 调试工具

    18.1 Emulator

    18.2 ADB

    展开全文
  • 深入理解Android内核设计思想》 基本信息 作者: 林学森 出版社:人民邮电出版社 ISBN:9787115348418 上架时间:2014-4-25 出版日期:2014 年5月 开本:16开 页码:687 版次:1-1 所属分类:计算机 >...

    《深入理解Android内核设计思想》

    基本信息

    作者: 林学森   

    出版社:人民邮电出版社

    ISBN:9787115348418

    上架时间:2014-4-25

    出版日期:2014 年5月

    开本:16开

    页码:687

    版次:1-1

    所属分类:计算机 > 软件与程序设计 > 移动开发 > Android

    更多关于》》》《深入理解Android内核设计思想》

     

     

    编辑推荐 

        基于Android SDK最新版本

      全面细致地剖析了进程/线程模型、内存管理、Binder机制、GUI显示系统、多媒体管理、输入系统等核心模块在Android操作系统中的设计思想

      通过大量图片与实例引导读者学习,以求尽量在源码分析外,为读者提供更易于理解的思维路径

      由浅入深,由总体框架再到细节实现,让读者在学习中潜移默化地彻底理解Android内核的实现原理

     

    内容简介

        书籍

        计算机书籍

    《深入理解android内核设计思想》适用于android 4.3以上的版本。全书从操作系统的基础知识入手,全面剖析进程/线程、内存管理、binder机制、gui显示系统、多媒体管理、输入系统等核心技术在android中的实现原理。书中讲述的知识点大部分来源于工程项目研发,因而具有较强的实用性,希望可以让读者“知其然,更知其所以然”。全书分为编译篇、系统原理篇、应用原理篇、系统工具篇共4篇22章,基本涵盖了参与android开发所需具备的知识,并通过大量图片与实例来引导读者学习,以求尽量在源代码分析外为读者提供更易于理解的思维方式。

    《深入理解android内核设计思想》既适合android系统工程师,也适合于应用开发工程师来阅读提升android开发能力。读者可以在《深入理解android内核设计思想》潜移默化的学习过程中更深刻地理解android系统,并将所学知识自然地应用到实际开发难题的解决中。

     

    目录

    《深入理解android内核设计思想》

    第1篇 android编译篇

    第1章 android系统简介 2

    1.1 android系统发展历程 2

    1.2 android系统特点 4

    1.3 android系统框架 8

    第2章 android源码下载及编译 10

    2.1 android源码下载指南 10

    2.1.1 基于repo和git的版本管理 10

    2.1.2 android源码下载流程 11

    2.2 原生态系统编译指南 12

    2.2.1 建立编译环境 13

    2.2.2 编译流程 15

    2.3 定制产品的编译与烧录 17

    2.3.1 定制新产品 17

    2.3.2 linux内核编译 21

    2.3.3 烧录 22

    2.4 android系统映像文件 23

    2.4.1 boot.img 23

    2.4.2 ramdisk.img 25

    2.4.3 system.img 26

    2.5 ota系统升级 26

    2.5.1 生成升级包 27

    2.5.2 获取升级包 28

    2.5.3 ota升级-recoverymode 29

    2.6 android反编译 31

    第3章 android编译系统 34

    3.1 makefile入门 34

    3.2 android编译系统 35

    3.2.1 makefile依赖树的概念 36

    3.2.2 树根节点droid 36

    3.2.3 main.mk解析 38

    3.2.4 droidcore节点 39

    3.2.5 dist_files 41

    3.2.6 android.mk的编写规则 42

    第2篇 android原理篇

    第4章 操作系统基础 48

    4.1 计算机体系结构(computer architecture) 48

    4.1.1 冯·诺依曼结构 48

    4.1.2 哈佛结构 48

    4.2 什么是操作系统 49

    4.3 进程间通信的经典实现 51

    4.3.1 共享内存(shared memory) 52

    4.3.2 管道(pipe) 54

    4.3.3 unix domain socket 55

    4.3.4 rpc(remoteprocedure calls) 58

    4.4 同步机制的经典实现 58

    4.4.1 信号量(semaphore) 58

    4.4.2 mutex 59

    4.4.3 管程(monitor) 59

    4.4.4 同步范例 60

    4.5 android中的同步机制 61

    4.5.1 进程间同步——mutex 61

    4.5.2 条件判断——condition 62

    4.5.3 “栅栏、障碍”——barrier 64

    4.5.4 加解锁的自动化操作——autolock 66

    4.6 操作系统内存管理基础 66

    4.6.1 虚拟内存(virtual memory) 66

    4.6.2 内存保护(memory protection) 69

    4.6.3 内存分配与回收 69

    4.6.4 进程间通信——mmap 70

    4.7 android中的low memory killer 71

    4.8 android匿名共享内存(anonymous shared memory) 74

    4.8.1 ashmem设备 74

    4.8.2 ashmem应用实例 78

    4.9 jni 83

    4.9.1 java函数的本地实现 83

    4.9.2 本地代码访问jvm 86

    4.10 学习android系统的两条线索 88

    第5章 android进程/线程管理 89

    5.1 android进程和线程 89

    5.2 handler, messagequeue,runnable与looper 95

    5.3 ui主线程——activitythread 102

    5.4 thread类 105

    5.4.1 thread类的内部原理 105

    5.4.2 thread休眠和唤醒 106

    5.4.3 thread实例 110

    5.5 android应用程序的典型启动流程 112

    第6章 进程间通信——binder 114

    6.1 智能指针 117

    6.1.1 智能指针的设计理念 117

    6.1.2 强指针sp 120

    6.1.3 弱指针wp 121

    6.2 进程间的数据传递载体——parcel 128

    6.3 binder驱动与协议 135

    6.3.1 打开binder驱动——binder_open 136

    6.3.2 binder_mmap 137

    6.3.3 binder_ioctl 140

    6.4 “dns”服务器——servicemanager(binder server) 141

    6.4.1 servicemanager的启动 141

    6.4.2 servicemanager的构建 142

    6.4.3 获取servicemanager服务——设计思考 147

    6.4.4 servicemanagerproxy 151

    6.4.5 ibinder和bpbinder 153

    6.4.6 processstate和ipcthreadstate 155

    6.5 binder客户端——binder client 185

    6.6 android接口描述语言——aidl 190

    6.7 匿名binder server 202

    第7章 android启动过程简析 205

    7.1 第一个系统进程(init) 205

    7.1.1 init.rc语法 205

    7.1.2 init.rc实例分析 208

    7.2 系统关键服务的启动简析 209

    7.2.1 android的“dns服务器”——servicemanager 209

    7.2.2 “孕育”新的线程和进程——zygote 209

    7.2.3 android的“系统服务”——systemserver 211

    第8章 管理activity和组件运行状态的系统进程——activity managerservice (ams) 213

    8.1 ams功能概述 213

    8.2 管理当前系统中activity状态——activity stack 215

    8.3 startactivity流程 217

    8.4 完成同一任务的“集合”——activity task 224

    8.4.1 “后进先出”——last in,first out 225

    8.4.2 管理activity task 226

    第9章 gui系统之surfaceflinger 229

    9.1 opengl es与egl 229

    9.2 android的硬件接口——hal 231

    9.3 android终端显示设备的“化身”——gralloc与framebuffer 233

    9.4 android中的本地窗口 237

    9.4.1 framebuffernativewindow 239

    9.4.2 应用程序端的本地窗口——surface 245

    9.5 bufferqueue详解 249

    9.5.1 bufferqueue的内部原理 249

    9.5.2 bufferqueue中的缓冲区分配 252

    9.5.3 应用程序的典型绘图流程 258

    9.5.4 应用程序与bufferqueue的关系 263

    9.6 surfaceflinger 267

    9.6.1 “黄油计划”——project butter 267

    9.6.2 surfaceflinger的启动 271

    9.6.3 接口的服务端——client 275

    9.7 vsync的产生和处理 279

    9.7.1 vsync信号的产生和分发 279

    9.7.2 vsync信号的处理 285

    9.7.3 handlemessagetransaction 287

    9.7.4 “界面已经过时/无效,需要重新绘制”——handlemessageinvalidate 291

    9.7.5 合成前的准备工作——precomposition 293

    9.7.6 可见区域——rebuildlayerstacks 295

    9.7.7 为“composition”搭建环境——setuphwcomposer 299

    9.7.8 dodebugflashregions 301

    9.7.9 docomposition 302

    第10章 gui系统之“窗口管理员”——wms 309

    10.1 “窗口管理员”——wms综述 310

    10.1.1 wms的启动 312

    10.1.2 wms的基础功能 312

    10.1.3 wms的工作方式 313

    10.1.4 wms,ams与activity间的联系 314

    10.2 窗口属性 316

    10.2.1 窗口类型与层级 316

    10.2.2 窗口策略(window policy) 320

    10.2.3 窗口属性(layoutparams) 322

    10.3 窗口的添加过程 324

    10.3.1 系统窗口的添加过程 324

    10.3.2 activity窗口的添加过程 333

    10.3.3 窗口添加实例 337

    10.4 surface管理 340

    10.4.1 surface申请流程(relayout) 341

    10.4.2 surface的跨进程传递 344

    10.4.3 surface的业务操作 347

    10.5 performlayoutandplacesurfaceslockedinner 347

    10.6 窗口大小的计算过程 349

    10.7 启动窗口的添加与销毁 358

    10.7.1 启动窗口的添加 358

    10.7.2 启动窗口的销毁 362

    10.8 窗口动画 363

    10.8.1 窗口动画类型 364

    10.8.2 动画流程跟踪——windowstateanimator 365

    10.8.3 appwindowanimator 368

    10.8.4 动画的执行过程 370

    第11章 让你的界面炫彩起来的gui系统之view体系 377

    11.1 应用程序中的view框架 377

    11.2 activity中view tree的创建过程 380

    11.3 在wms中注册窗口 386

    11.4 viewroot的基本工作方式 388

    11.5 view tree的遍历时机 389

    11.6 view tree的遍历流程 393

    11.7 view和viewgroup属性 402

    11.7.1 view的基本属性 402

    11.7.2 viewgroup的属性 408

    11.7.3 view,viewgroup和viewparent 408

    11.7.4 callback接口 408

    11.8 “作画“工具集——canvas 411

    11.8.1 “绘制ui”——skia 412

    11.8.2 数据中介——surface.lockcanvas 413

    11.8.3 解锁并提交结果——unlockcanvasandpost 417

    11.9 draw和ondraw 417

    11.10 view中的消息传递 423

    11.10.1 view中touchevent的投递流程 423

    11.10.2 viewgoup中touchevent的投递流程 427

    11.11 view动画 430

    第12章 “问渠哪得清如许,为有源头活水来”——inputmanagerservice与输入事件 436

    12.1 事件的分类 436

    12.2 事件的投递流程 439

    12.2.1 inputmanagerservice 440

    12.2.2 inputreaderthread 441

    12.2.3 inputdispatcherthread 441

    12.2.4 viewrootimpl对事件的派发 445

    第13章 应用不再同质化——音频系统 447

    13.1 音频基础 448

    13.1.1 声波 448

    13.1.2 音频的录制、存储与回放 448

    13.1.3 音频采样 449

    13.1.4 nyquist–shannon采样定律 451

    13.1.5 声道和立体声 451

    13.1.6 声音定级——weber–fechner law 452

    13.1.7 音频文件格式 453

    13.2 音频框架 454

    13.2.1 linux中的音频框架 454

    13.2.2 tinyalsa 456

    13.2.3 android系统中的音频框架 457

    13.3 音频系统的核心——audioflinger 459

    13.3.1 audioflinger服务的启动和运行 460

    13.3.2 audioflinger对音频设备的管理 461

    13.3.3 playbackthread的循环主体 468

    13.3.4 audiomixer 473

    13.4 策略的制定者——audiopolicyservice 475

    13.4.1 audiopolicyservice概述 475

    13.4.2 audiopolicyservice的启动过程 477

    13.4.3 audiopolicyservice与音频设备 480

    13.5 音频流的回放——audiotrack 482

    13.5.1 audiotrack应用实例 482

    13.5.2 audiopolicyservice的路由实现 489

    13.6 音频数据流 494

    13.6.1 audiotrack中的音频流 495

    13.6.2 audiotrack和audioflinger间的数据交互 498

    13.6.3 audiomixer中的音频流 504

    13.7 音量控制 506

    13.8 音频系统的上层建筑 510

    13.8.1 从功能入手 510

    13.8.2 mediaplayer 511

    13.8.3 mediarecorder 514

    13.8.4 一个典型的多媒体录制程序 517

    13.8.5 mediarecorder源码解析 518

    13.8.6 mediaplayerservice简析 520

    13.9 android支持的媒体格式 523

    13.9.1 音频格式 523

    13.9.2 视频格式 523

    13.9.3 图片格式 524

    13.9.4 网络流媒体 524

    13.10 id3信息简述 525

    13.11 android多媒体文件管理 528

    13.11.1 mediastore 529

    13.11.2 多媒体文件信息的存储“仓库”——mediaprovider 530

    13.11.3 多媒体文件管理中的“生产者”——mediascanner 533

    第3篇 应用原理篇

    第14章 intent的匹配规则 538

    14.1 intent属性 538

    14.2 intent的匹配规则 540

    14.3 intent匹配源码简析 546

    第15章 apk应用程序的资源适配 551

    15.1 资源类型 552

    15.1.1 状态颜色资源 553

    15.1.2 图形资源 554

    15.1.3 布局资源 555

    15.1.4 菜单资源 556

    15.1.5 字符串资源 556

    15.1.6 样式资源 557

    15.1.7 其他资源 558

    15.1.8 属性资源 558

    15.2 提供可选资源 561

    15.3 最佳资源的匹配流程 565

    15.4 屏幕适配 567

    15.4.1 屏幕适配的重要参数 567

    15.4.2 如何适配多屏幕 569

    第16章 android字符编码格式 572

    16.1 字符编码格式背景 572

    16.2 iso/iec 8859 573

    16.3 iso/iec 10646 573

    16.4 unicode 574

    16.5 string类型 577

    16.5.1 构建string 578

    16.5.2 string对多种编码的兼容 579

    第17章 android和opengl es 583

    17.1 3d图形学基础 584

    17.1.1 计算机3d图形 584

    17.1.2 图形管线 585

    17.2 android中的opengl es简介 587

    17.3 图形渲染api—egl 588

    17.3.1 egl与opengl es 588

    17.3.2 egl.cfg 588

    17.3.3 egl接口解析 590

    17.3.4 egl实例 593

    17.4 简化opengl es开发——glsurfaceview 593

    第18章 “系统的ui”——systemui 601

    18.1 systemui的组成元素 601

    18.2 systemui的实现 603

    18.3 android壁纸资源——wallpaperservice 610

    18.3.1 wallpapermanagerservice 611

    18.3.2 imagewallpaper 613

    第19章 android常用的工具“小插件”——widget机制 616

    19.1 “功能的提供者”——appwidgetprovider 616

    19.2 appwidgethost 618

    第20章 android应用程序的编译和打包 624

    20.1 “另辟蹊径”采用第三方工具——ant 624

    20.2 通过命令行编译和打包apk 625

    20.3 apk编译过程详解 626

    20.4 信息安全基础概述 628

    20.5 应用程序签名 633

    20.6 应用程序签名源码简析 636

    第4篇 android系统工具

    第21章 软件版本管理 642

    21.1 版本管理简述 642

    21.2 git的安装 643

    21.2.1 linux环境下安装git 643

    21.2.2 windows环境下安装git 644

    21.3 git的使用 644

    21.3.1 基础配置 644

    21.3.2 新建仓库 646

    21.3.3 文件状态 647

    21.3.4 忽略某些文件 649

    21.3.5 提交更新 649

    21.3.6 其他命令 650

    21.4 git原理简析 650

    21.4.1 分布式版本系统的特点 651

    21.4.2 安全散列算法——sha-1 652

    21.4.3 四个重要对象 653

    21.4.4 三个区域 657

    21.4.5 分支的概念与实例 658

    第22章 系统调试辅助工具 662

    22.1 万能模拟器——emulator 662

    22.1.1 qemu 662

    22.1.2 android工程中的qemu 667

    22.1.3 模拟器控制台(emulator console) 670

    22.1.4 实例:为android模拟器添加串口功能 672

    22.2 此android非彼android 674

    22.3 快速建立与模拟器或真机的通信渠道——adb 676

    22.3.1 adb的使用方法 676

    22.3.2 adb的组成元素 678

    22.3.3 adb源代码解析 679

    22.3.4 adb protocol 684

     

    本图书信息来源:互动出版网

     

    转载于:https://www.cnblogs.com/china-pub/p/3715756.html

    展开全文
  • 深入理解Android内核设计思想》适用于Android 4.3以上的版本。全书从操作系统的基础知识入手,全面剖析进程/线程、内存管理、Binder机制、GUI显示系统、多媒体管理、输入系统等核心技术在Android中的实现原理。书...
  • 深入理解Android内核设计思想电子书pdf下载链接: https://pan.baidu.com/s/1EB7T5tE5YgO5PNis-KppjA 提取码获取方式:关注下面微信公众号,回复关键字: androidke

     

    深入理解Android内核设计思想电子书pdf下载链接:

    https://pan.baidu.com/s/1EB7T5tE5YgO5PNis-KppjA

    提取码获取方式:关注下面微信公众号,回复关键字: androidke

    展开全文
  • 深入理解Android内核设计思想(第2版)(上下册)-试读版.pdf
  • 深入理解Android内核设计思想》读书笔记 第5章 Android进程/线程管理 6.0 前言 1、要进行进程间通信的原因 不同的进程运行在不同的内存空间,所以无法直接通过内存地址来访问别的进程的数据。Binder的存在就...
  • 深入理解Android内核设计思想》林学森编著,这本书是带我的老师给我的。因为最近啃《Android系统源代码情景分析》这本书binder驱动相关部分时被撂倒在地。 于是跑去跟老师诉苦,她给我推荐了这本书。今天下午拿到...
  • 深入理解Android内核设计思想》适用于Android 4.3以上的版本。全书从操作系统的基础知识入手,全面剖析进程/线程、内存管理、Binder机制、GUI显示系统、多媒体管理、输入系统等核心技术在Android中的实现原理。书...
  • 深入理解Android内核设计思想》第五章,总结: 1.四大组件并不是程序(进程)的全部,而只是它的‘零件’。 2.应用程序启动后,将创建ActivityThread主线程 3.同一个包中的组件将运行在相同的进程空间 4.不同...
  • 深入理解Android内核设计思想 android内核 全面 显示系统 音频系统 基础知识
  • 本文摘自人民邮电出版社异步社区《深入理解Android内核设计思想(第2版)(上下册)》 购书地址:http://item.jd.com/12212640.html 试读地址:http://www.epubit.com.cn/book/details/4829第2章 Android源码...
  • 对冗余挑拣重点,对重点深入补充,输出结构清晰的精简版 操作系统内存管理基础 1.虚拟内存 2.内存分配与回收 3.mmap 4.Copy on Write Android 内存管理 1.Low Memory Killer 2.Ashmem 驱动 3.MemoryFile 原理 总结...
  • 第5章 Android进程/线程和程序内存优化5.1 Android 进程和线程进程(Process)是程序的一个运行实例,以区别于“程序”这一静态的概念而线程(Thread)则是CPU调度的基本单位。实验1 创建Activity结论:启动了3个线程:...
  • 5.1 进程和线程 进程是程序的一个运行实例,...ADT(Android development tool) 安卓开发工具 在eclipse中的 1、应用程序启动后会创建ActivityThread主线程,主线程始终只有一个(包括当执行别的Activity时...
  • 第5章 Android进程/线程和程序内存优化 5.1 Android 进程和线程 进程(Process)是程序的一个运行实例,以区别于“程序”这一静态的概念 而线程(Thread)则是CPU调度的基本单位。 实验1 创建Activity 结论:启动了3...
  • 4.1 计算机体系结构(Computer Architecture) 4.1.1 冯·诺依曼结构 ...辅线:在主线的基础上,以Android系统的5层框架为辅,逐一解析各层框架中的重要元素,或拾级而上,或深入浅出,直到问题的最根源处。
  • 工作原因,好久没有总结了,花了点时间看了看大神写得书并用Xmind梳理了一下。链接:https://pan.baidu.com/s/1080clkHmIrWAndP8hQ_G6w 密码:px8o
  • 本文摘自人民邮电出版社异步社区《深入理解Android内核设计思想(第2版)(上下册)》购书地址:item.jd.com/12212640.ht…试读地址:www.epubit.com.cn/book/detail… 第2章 Android源码下载及编译 在分析Android...
  • 对冗余挑拣重点,对重点深入补充 以更易理解且简洁的方式记录呈现 不是杂乱无章的笔记,而是原书的精简版… 1. 进程间通信的经典实现 1.共享内存 2.管道 3.UNIX Domain Socket 4.Remote Procedure Calls 2. 同步...
  • Android系统 Android的分层 什么是基于OS的系统 Android系统映像 Android系统反编译 操作系统基础 计算机体系结构 什么是操作系统 进程间通信的经典实现 同步机制的经典实现 前言 这本书用我之前一个同事的话说...
  • 说明:基于Android4.3以上版本74页 App一直运行的方法改进程的adj(在Android中,被称为oom_adj)的两个方法: 1. 写文件 on early-init write /proc/1/oom_adj-162. android:persistent 对于某些非常重要的...
  • 对冗余挑拣重点,对重点深入补充,输出结构清晰的精简版 智能指针 binder 驱动中的结构体 ProcessState IPCThreadState BpBinder BinderProxy ServiceManager getService 流程 智能指针 在 binder 相关源码可以...
  • 对冗余挑拣重点,对重点深入补充,输出结构清晰的精简版 1.必备知识 设备驱动 文件描述符 页框 2.Binder 概述 3.binder 驱动 binder_open binder_mmap binder_ioctl 4.Service Manager 启动 注册与查询 5.最后 ...
  • 第4篇 Android系统工具 Android系统这个“大杂烩”不仅融合了众多知名的开源大项目,同时也有各式各样的小工具。这也是开源工程的一大好处,可以最大限度地使用已有资源,从而防止重复开发。而且通过合理的组织,...
  • 本书下面所提出的释义也未必能完整解读这个词,读者可以带着自己的理解深入思考。 Ecosystem原本是生态学中的一个概念。简单而言,它体现了一定时间和空间内能量的可循环平衡流动,例如,自然界的生态系统组成如下。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,453
精华内容 2,181
关键字:

深入理解android内核设计思想