Android底层接口与驱动开发技术详解
Android底层接口与驱动开发技术详解封面图

Android底层接口与驱动开发技术详解

陈强, 编著

出版社:中国铁道出版社

年代:2015

定价:89.0

书籍简介:

本书从Android系统源码入手,遵循“内核分析—驱动实现—JNI层分析—Java应用层—系统移植和改造”这一主线,彻底剖析了Android系统中每一个底层接口和驱动系统的完整实现流程。本书涵盖了Android底层接口和驱动方面中的所有主要内容,内容言简意赅,讲解方法通俗易懂。

作者介绍:

陈强,西安交通大学计算机硕士,通信工程硕士,现就职于上海机锋科技公司担任项目经理。主要负责底层嵌入式项目,精通C++、C、Java语言开发,擅长Linux内核驱动开发,曾经开发了金地智能家居系统和娱乐时代智能电视系统,这两款系统在业界比较有名,并得到了消费者用户的欢迎。曾经独立编写并移植了高通801芯片,实现了完整的通信和传输应用功能。

书籍目录:

第1篇 基础知识篇

第1章 Android驱动开发基础

1.1 认识什么是驱动

1.1.1 驱动程序的作用

1.1.2 PC中的驱动

1.1.3 手机中的驱动程序

1.2 开源还是不开源

1.2.1 雾里看花的开源

1.2.2 从为什么选择Java谈为什么不开源驱动程序

1.2.3 对驱动开发者来说是一把双刃剑

1.3 Linux开发基础

1.3.1 Linux历史简介

1.3.2 主要版本

1.3.3 Linux的巨大前景

1.4 Android和Linux的关系

1.4.1 Android继承于Linux

1.4.2 Android和Linux内核的区别

1.5 简析Linux内核

1.5.1 Linux内核的体系结构

1.5.2 和Android密切相关的Linux内核知识

1.6 分析Linux内核源码

1.6.1 源码目录结构

1.6.2 浏览源码的工具

1.6.3 Linux内核的显著特性

1.6.4 学习Linux内核的方法

第2章 获取并编译Android源码

2.1 获取Android源码

2.1.1 在Linux系统获取Android源码

2.1.2 在Windows平台获取Android源码

2.2 分析Android源码结构

2.3 编译Android源码

2.3.1 搭建编译环境

2.3.2 开始编译

2.3.3 在模拟器中运行

2.3.4 常见的错误分析

2.3.5 实践演练——演示两种编译Android程序的方法

2.4 编译Android Kernel

2.4.1 获取Goldfish内核代码

2.4.2 获取MSM内核代码

2.4.3 获取OMAP内核代码

2.4.4 编译Android的Linux内核

第3章 Android驱动移植基础

3.1 驱动开发需要做的工作

3.2 Android移植基础

3.2.1 移植的任务

3.2.2 需要移植的内容

3.2.3 驱动开发需要做的工作

3.3 Android对Linux的改造

3.3.1 Android的独有驱动

3.3.2 Android的核心驱动

3.3.3 Android对Linux内核文件的改动

3.3.4 为Android构建 Linux的操作系统

3.4 内核空间和用户空间之间接口

3.4.1 内核空间和用户空间的相互作用

3.4.2 系统和硬件之间的交互

3.4.3 使用Relay实现内核到用户空间的数据传输

3.5 三类驱动程序

3.5.1 字符设备驱动

3.5.2 块设备驱动

3.5.3 网络设备驱动

第4章 分析三大内核系统

4.1 Goldfish内核和驱动解析

4.1.1 Goldfish基础

4.1.2 Android专用驱动简介

4.1.3 Ashmem驱动介绍

4.1.4 Pmem驱动介绍

4.1.5 Alarm驱动程序

4.1.6 USB Gadget驱动程序

4.1.7 Paranoid驱动介绍

4.1.8 Goldfish的设备驱动

4.2 MSM内核和驱动解析

4.2.1 MSM基础

4.2.2 移植MSM内核简介

4.2.3 移植MSM

4.3 OMAP内核和驱动解析

4.3.1 OMAP基础

4.3.2 OMAP内核

4.3.3 移植OMAP体系结构

4.3.4 移植Android专用驱动和组件

4.3.5 OMAP的设备驱动

第2篇 专用驱动篇

第5章 分析JNI

5.1 JNI的本质

5.2 分析Java层

5.2.1 加载JNI库

5.2.2 实现扫描工作

5.2.3 读取并保存信息

5.2.4 删除不是SD卡中的文件信息

5.2.5 Process Directory

5.2.6 扫描函数Scan File

5.2.7 JNI中的异常处理

5.3 分析JNI层

5.3.1 将Native对象的指针保存到Java对象

5.3.2 创建Native层的Media Scanner对象

5.4 Native(本地)层

5.4.1 注册JNI函数

5.4.2 完成注册工作

5.4.3 动态注册

5.4.4 处理路径参数

5.4.5 扫描文件

5.4.6 添加TAG信息

5.4.7 总结函数JNI On Load与函数JNI On Unload的用途

5.4.8 Java与JNI基本数据类型转换

5.4.9 JNI Env接口

5.4.1 0 JNI中的环境变量

5.5 Camera模块的JNI实例分析

5.5.1 Java层预览接口

5.5.2 注册预览的JNI函数

5.5.3 C/C++层的预览函数

5.6 开发自己的JNI程序

第6章 硬件设备驱动程序

6.1 初识HAL层

6.1.1 HAL层简介

6.1.2 HAL legacy和HAL的对比

6.2 分析HAL层源码

6.2.1 分析HAL moudle

6.2.2 文件hardware.h

6.2.3 文件hardware.c

6.3 分析硬件抽象层的加载过程

6.4 分析硬件访问服务

6.4.1 定义硬件访问服务接口

6.4.2 实现硬件访问服务

6.5 分析mokoid工程

6.5.1 直接调用service方法的实现代码

6.5.2 通过Manager调用service的实现代码

6.6 分析Sensor(传感器)在HAL层的实现

6.6.1 HAL层的Sensor代码

6.6.2 Sensor编程的流程

6.7 HAL和系统移植

6.7.1 移植各个Android部件的方式

6.7.2 辅助工作

第7章 Binder驱动程序

7.1 引出Binder机制

7.2 Binder机制概述

7.3 分析Binder驱动程序的数据结构

7.4 设备初始化

7.5 打开Binder设备文件

7.6 实现内存映射

7.6.1 分析流程

7.6.2 分析具体代码

7.7 释放物理页面

7.8 处理内核缓冲区

7.8.1 分配内核缓冲区函数

7.8.2 添加到红黑树

7.8.3 释放内核缓冲区

7.8.4 查询内核缓冲区

7.9 Binder封装库

7.9.1 类BBinder

7.9.2 类BpRefBase

7.9.3 类IPCThreadState

第8章 Logger日志驱动

8.1 Logger系统基础

8.2 分析Logger驱动程序

8.2.1 分析文件logger.h

8.2.2 分析文件logger.c

8.3 日志库liblog

8.4 分析日志写入接口

8.4.1 分析C/C++层的写入接口

8.4.2 分析Java层的写入接口

第9章 内存系统驱动

9.1 分析Android的进程通信机制

9.1.1 Android的进程间通信(IPC)机制Binder

9.1.2 Service Manager是Binder机制的上下文管理者

9.2 分析Ashmem驱动程序

9.2.1 基础数据结构

9.2.2 初始化处理

9.2.3 打开匿名共享内存设备文件

9.2.4 内存映射

9.2.5 读/写操作

9.2.6 锁定和解锁

9.2.7 回收内存块

9.3 分析C++访问接口层

9.3.1 接口MemoryBase

9.3.2 接口MemoryBase

9.4 分析Java访问接口层

第10章 分析电源管理模块

10.1 Android Power Management基础

10.2 Framework层分析

10.2.1 文件PowerManager.java

10.2.2 文件PowerManagerService.java

10.3 JNI层分析

10.3.1 文件android_os_Power.cpp

10.3.2 文件power.c

10.4 Kernel(内核)层分析

10.4.1 文件power.c

10.4.2 文件earlysuspend.c

10.4.3 文件wakelock.c

10.4.4 文件resume.c

10.4.5 文件suspend.c

10.4.6 文件main.c

10.4.7 proc文件

10.5 wakelock和early_suspend

10.5.1 wake lock的原理

10.5.2 early_suspend的原理

10.5.3 Android休眠

10.5.4 Android唤醒

第11章 分析低内存管理模块

11.1 分析OOM机制

11.1.1 OOM机制基础

11.1.2 分析OOM机制的具体实现

11.2 分析Low Memory Killer的原理和机制

11.3 分析Low Memory Killer驱动

11.3.1 Low Memory Killer驱动基础

11.3.2 分析核心功能

11.3.3 设置用户接口

第12章 分析物理内存驱动

12.1 PMEM基础

12.1.1 PMEM概述

12.1.2 Platform设备基础

12.1.3 PMEM与Ashmem的区别

12.2 分析PMEM系统驱动程序

12.2.1 分析设备实现

12.2.2 分析驱动的具体实现

12.2.3 总结PMEM驱动的调用流程

12.3 分析用户接口空间

12.3.1 释放位图内存

12.3.2 释放位图内存空间

12.3.3 获取位图占用内存

第13章 分析Time Device驱动

13.1 分析Timed Output驱动程序

13.1.1 设备类

13.1.2 分析Timed Output驱动的具体实现

13.1.3 实现timed_output_dev设备的读写操作

13.2 分析Timed Gpio驱动程序

13.2.1 Timed Gpio驱动的基本原理

13.2.2 分析Timed Gpio驱动的实现文件

第14章 分析调试机制驱动Ram Console

14.1 Ram Console基础

14.2 分析Ram Console的具体实现

14.2.1 分析文件ram_console.h

14.2.2 分析文件ram_console.c

第15章 分析时钟系统驱动Alarm

15.1 Alarm系统基础

15.1.1 Alarm层次结构介绍

15.1.2 需要移植的内容

15.2 分析RTC驱动程序

15.3 分析Alarm驱动程序

15.3.1 分析文件android_alarm.h

15.3.2 分析文件alarm.c

15.3.3 分析文件alarm-dev.c

15.4 分析JNI层

15.5 分析Java层

15.5.1 分析AlarmManagerService类

15.5.2 分析AlarmManager类

15.6 模拟器环境的具体实现

第16章 分析USB Gadget驱动

16.1 分析Linux内核的USB驱动程序

16.1.1 USB设备基础

16.1.2 分析USB 和sysfs的联系

16.1.3 分析urb通信方式

16.1.4 分析USB驱动的例程

16.2 分析USB Gadget驱动

16.2.1 分析软件结构

16.2.2 层次整合

16.2.3 USB设备枚举

第3篇 设备驱动篇

第17章 FrameBuffer显示系统驱动

17.1 显示系统介绍

17.2 分析内核层

17.2.1 分析接口文件fb.h

17.2.2 分析内核实现文件fbmem.c

17.3 分析硬件抽象层

17.3.1 分析头文件

17.3.2 分析硬件帧缓冲区

17.3.3 实现缓冲区的分配

17.3.4 显示缓冲映射

17.3.5 分析管理库文件LayerBuffer.cpp

第18章 输入系统驱动应用

18.1 输入系统介绍

18.1.1 Android输入系统结构元素介绍

18.1.2 移植工作

18.2 分析Input(输入)系统驱动

18.2.1 分析头文件

18.2.2 分析核心文件input.c

18.2.3 分析event机制

18.3 分析硬件抽象层

18.3.1 分析文件KeycodeLabels.h

18.3.2 分析文件KeyCharacterMap.h

18.3.3 分析Kl格式文件

18.3.4 分析KCM格式文件

18.3.5 分析文件EventHub.cpp

第19章 音频系统驱动

19.1 音频系统基础

19.2 分析音频系统的层次

19.2.1 层次说明

19.2.2 Media库中的Audio框架

19.2.3 本地代码

19.2.4 分析JNI代码

19.2.5 Java层代码简介

19.3 移植Audio系统的工作

19.3.1 我们的工作

19.3.2 分析硬件抽象层

19.3.3 分析AudioFlinger中的Audio硬件抽象层的实现

19.3.4 真正实现Audio硬件抽象层

19.4 在MSM平台实现Audio驱动系统

19.4.1 实现Audio驱动程序

19.4.2 实现硬件抽象层

第20章 视频输出系统驱动

20.1 视频输出系统结构

20.2 需要移植的部分

20.3 分析硬件抽象层

20.3.1 Overlay系统硬件抽象层的接口

20.3.2 实现Overlay系统的硬件抽象层

20.3.3 实现接口

20.4 实现Overlay硬件抽象层

第21章 振动器系统驱动

21.1 振动器系统结构

21.2 分析硬件抽象层

21.3 分析JNI层部分

21.4 分析Java层部分

21.5 实现移植工作

21.5.1 移植振动器驱动程序

21.5.2 实现硬件抽象层

21.6 在MSM平台实现振动器驱动

第22章 传感器系统驱动

22.1 传感器系统的结构

22.2 分析需要移植的内容

22.2.1 移植驱动程序

22.2.2 移植硬件抽象层

22.2.3 实现上层部分

22.3 在模拟器中实现传感器驱动

第23章 照相机系统

23.1 Camera系统的结构

23.2 分析需要移植的内容

23.3 移植和调试

23.3.1 V4L2驱动程序

23.3.2 硬件抽象层

23.4 实现Camera系统的硬件抽象层

23.4.1 Java程序部分

23.4.2 Camera的Java本地调用部分

23.4.3 Camera的本地库libui.so

23.4.4 Camera服务libcameraservice.so

第24章 Wi-Fi系统、蓝牙系统和GPS系统

24.1 Wi-Fi系统

24.1.1 Wi-Fi系统的结构

24.1.2 分析需要移植的内容

24.1.3 分析本地实现

24.1.4 分析JNI层

24.1.5 分析Java FrameWork层

24.1.6 分析Setting中的Wi-Fi设置

24.2 蓝牙系统

24.2.1 蓝牙系统的结构

24.2.2 分析需要移植的内容

24.2.3 分析驱动程序

24.2.4 分析本地代码

24.2.5 在MSM平台实现蓝牙驱动系统

24.3 定位系统

24.3.1 分析定位系统的结构

24.3.2 分析需要移植的内容

24.3.3 分析驱动程序

24.3.4 分析硬件抽象层

24.3.5 分析上层应用部分

内容摘要:

Android系统从诞生到现在短短的几年时间,凭借其操作易用性和开发的简洁性,赢得了广大消费用户和开发者的支持,目前一直位居智能手机操作系统市场占有率榜首的位置。《Android底层接口与驱动开发技术详解》分为三篇,共计24章,循序渐进地讲解了Android系统中底层驱动方面的知识。《Android底层接口与驱动开发技术详解》从获取源码和源码结构分析讲起,依次讲解了基础知识篇、专用驱动篇和设备驱动篇三大部分的基本知识。在讲解每一个驱动时,都从Android系统源码开始入手,遵循“内核分析—驱动实现—JNI层分析—Java应用层—系统移植和改造”这一主线,透彻地剖析了每一个驱动系统的完整实现流程。《Android底层接口与驱动开发技术详解》几乎涵盖了Android驱动方面的所有主要内容,并且全书内容言简意赅,讲解方法通俗易懂,不但适用于应用高手们,也适合初学者学习并消化。
  《Android底层接口与驱动开发技术详解》定位于有一定基础的Android开发人员,帮助其细致分析Android源码和底层驱动开发,积累经验,快速向Android殿堂级高手迈进。

编辑推荐:

同套系图书重点推荐:
  《Android系统源代码分析》
  《Android底层接口与驱动开发技术详解》
  细致分析底层驱动,提炼Android系统的本质与精华
  遵循”内核分析-驱动实现-JNI层分析-Java应用层-系统移植“主线
  完全从实际需要出发,作者十年开源系统开发经验和盘托出

书籍规格:

书籍详细信息
书名Android底层接口与驱动开发技术详解站内查询相似图书
9787113197957
如需购买下载《Android底层接口与驱动开发技术详解》pdf扫描版电子书或查询更多相关信息,请直接复制isbn,搜索即可全网搜索该ISBN
出版地北京出版单位中国铁道出版社
版次2版印次1
定价(元)89.0语种简体中文
尺寸26 × 19装帧平装
页数印数

书籍信息归属:

Android底层接口与驱动开发技术详解是中国铁道出版社于2015.3出版的中图分类号为 TN929.53 的主题关于 移动终端-应用程序-程序设计 的书籍。