计算机
类型
8.8
豆瓣评分
可以朗读
语音朗读
1525千字
字数
2017-06-01
发行日期
展开全部
主编推荐语
最新Android版本开发技巧,深入理解运行机制。
内容简介
本书以最新的Android版本为写作的蓝图,深入浅出的讲解了Android系统的应用开发、底层开发,通过案例分析阐述了Android应用开发的技巧,以及Android运行的原理,让读者更好地了解Android的运行机制,以便开发出更好的应用。
目录
- 版权信息
- 内容提要
- 第1版前言
- 第2版前言
- 第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 原生Android系统编译指南
- 2.2.1 建立编译环境
- 2.2.2 编译流程
- 2.3 定制产品的编译与烧录
- 2.3.1 定制新产品
- 2.3.2 Linux内核编译
- 2.3.3 烧录/升级系统
- 2.4 Android Multilib Build
- 2.5 Android系统映像文件
- 2.5.1 boot.img
- 2.5.2 ramdisk.img
- 2.5.3 system.img
- 2.5.4 Verified Boot
- 2.6 ODEX流程
- 2.7 OTA系统升级
- 2.7.1 生成升级包
- 2.7.2 获取升级包
- 2.7.3 OTA升级——Recovery模式
- 2.8 Android反编译
- 2.9 NDK Build
- 2.10 第三方ROM的移植
- 第3章 Android编译系统
- 3.1 Makefile入门
- 3.2 Android编译系统
- 3.2.1 Makefile依赖树的概念
- 3.2.2 Android编译系统抽象模型
- 3.2.3 树根节点droid
- 3.2.4 main.mk解析
- 3.2.5 droidcore节点
- 3.2.6 dist_files
- 3.2.7 Android.mk的编写规则
- 3.3 Jack Toolchain
- 3.4 SDK的编译过程
- 3.4.1 envsetup.sh
- 3.4.2 lunch sdk-eng
- 3.4.3 make sdk
- 3.5 Android系统GDB调试
- 第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(Remote Procedure Calls)
- 4.4 同步机制的经典实现
- 4.4.1 信号量(Semaphore)
- 4.4.2 Mutex
- 4.4.3 管程(Monitor)
- 4.4.4 Linux Futex
- 4.4.5 同步范例
- 4.5 Android中的同步机制
- 4.5.1 进程间同步——Mutex
- 4.5.2 条件判断——Condition
- 4.5.3 “栅栏、障碍”——Barrier
- 4.5.4 加解锁的自动化操作——Autolock
- 4.5.5 读写锁——ReaderWriterMutex
- 4.6 操作系统内存管理基础
- 4.6.1 虚拟内存(Virtual Memory)
- 4.6.2 内存保护(Memory Protection)
- 4.6.3 内存分配与回收
- 4.6.4 进程间通信——mmap
- 4.6.5 写时拷贝技术(Copy on Write)
- 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 Java中的反射机制
- 4.11 学习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应用程序如何利用CPU的多核处理能力
- 5.6 Android应用程序的典型启动流程
- 5.7 Android程序的内存管理与优化
- 5.7.1 Android系统对内存使用的限制
- 5.7.2 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
- 7.2.4 Vold和External Storage存储设备
- 7.3 多用户管理
- 第8章 管理Activity和组件运行状态的系统进程——ActivityManagerService(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
- 8.5 Instrumentation机制
- 第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动画
- 11.12 UiAutomator
- 第12章 “问渠哪得清如许,为有源头活水来”——InputManagerService与输入事件
- 12.1 事件的分类
- 12.2 事件的投递流程
- 12.2.1 InputManagerService
- 12.2.2 InputReaderThread
- 12.2.3 InputDispatcherThread
- 12.2.4 ViewRootImpl对事件的派发
- 12.3 事件注入
- 第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篇 应用原理篇
- 第14章 Intent的匹配规则
- 14.1 Intent属性
- 14.2 Intent的匹配规则
- 14.3 Intent匹配源码简析
- 第15章 APK应用程序的资源适配
- 15.1 资源类型
- 15.1.1 状态颜色资源
- 15.1.2 图形资源
- 15.1.3 布局资源
- 15.1.4 菜单资源
- 15.1.5 字符串资源
- 15.1.6 样式资源
- 15.1.7 其他资源
- 15.1.8 属性资源
- 15.2 提供可选资源
- 15.3 最佳资源的匹配流程
- 15.4 屏幕适配
- 15.4.1 屏幕适配的重要参数
- 15.4.2 如何适配多屏幕
- 15.4.3 横竖屏切换的处理
- 第16章 Android字符编码格式
- 16.1 字符编码格式背景
- 16.2 ISO/IEC 8859
- 16.3 ISO/IEC 10646
- 16.4 Unicode
- 16.5 String类型
- 16.5.1 构建String
- 16.5.2 String对多种编码的兼容
- 第17章 Android和OpenGL ES
- 17.1 3D图形学基础
- 17.1.1 计算机3D图形
- 17.1.2 图形管线
- 17.2 Android中的OpenGL ES简介
- 17.3 图形渲染API——EGL
- 17.3.1 EGL与OpenGL ES
- 17.3.2 egl.cfg
- 17.3.3 EGL接口解析
- 17.3.4 EGL实例
- 17.4 简化OpenGL ES开发——GLSurfaceView
- 17.5 OpenGL分析利器——GLTracer
- 第18章 “系统的UI”——SystemUI
- 18.1 SystemUI的组成元素
- 18.2 SystemUI的实现
- 18.3 Android壁纸资源——WallpaperService
- 18.3.1 WallPaperManagerService
- 18.3.2 ImageWallpaper
- 第19章 Android常用的工具“小插件”——Widget机制
- 19.1 “功能的提供者”——AppWidgetProvider
- 19.2 AppWidgetHost
- 第20章 Android应用程序的编译和打包
- 20.1 “另辟蹊径”采用第三方工具——Ant
- 20.2 通过命令行编译和打包APK
- 20.3 APK编译过程详解
- 20.4 信息安全基础概述
- 20.5 应用程序签名
- 20.6 应用程序签名源码简析
- 20.7 APK重签名实例
- 第21章 Android虚拟机
- 21.1 Android虚拟机基础知识
- 21.1.1 Java虚拟机核心概念
- 21.1.2 LLVM编译器框架
- 21.1.3 Android中的经典垃圾回收算法
- 21.1.4 Art和Dalvik之争
- 21.1.5 Art虚拟机整体框架
- 21.1.6 Android应用程序与虚拟机
- 21.1.7 Procedure Call Standard for Arm Architecture(过程调用标准)
- 21.1.8 C++ 11标准中的新特性
- 21.2 Android虚拟机核心文件格式—— Dex字节码
- 21.3 Android虚拟机核心文件格式——可执行文件的基石ELF
- 21.3.1 ELF文件格式
- 21.3.2 Linux平台下ELF文件的加载和动态链接过程
- 21.3.3 Android Linker和动态链接库
- 21.3.4 Signal Handler和Fault Manager
- 21.4 Android虚拟机核心文件格式——“主宰者”OAT
- 21.4.1 OAT文件格式解析
- 21.4.2 OAT的两个编译时机
- 21.5 Android虚拟机的典型启动流程
- 21.6 堆管理器和堆空间释义
- 21.7 Android虚拟机中的线程管理
- 21.7.1 Java线程的创建过程
- 21.7.2 线程的挂起过程
- 21.8 Art虚拟机中的代码执行方式综述
- 21.9 Art虚拟机的“中枢系统”——执行引擎之Interpreter
- 21.10 Art虚拟机的“中枢系统”——执行引擎之JIT
- 21.10.1 JIT重出江湖的契机
- 21.10.2 Android N版本中JIT的设计目标及策略
- 21.10.3 Profile Guided Compilation(追踪技术)
- 21.10.4 AOT Compilation Daemon
- 21.11 Art虚拟机的“中枢系统”——执行引擎之本地代码
- 21.12 Android x86版本兼容ARM二进制代码——Native Bridge
- 21.13 Android应用程序调试原理解析
- 21.13.1 Java代码调试与JDWP协议
- 21.13.2 Native代码调试
- 21.13.3 利用GDB调试Android Art虚拟机
- 第22章 Android安全机制透析
- 22.1 Android Security综述
- 22.2 SELinux
- 22.2.1 DAC
- 22.2.2 MAC
- 22.2.3 基于MAC的SELinux
- 22.3 Android系统安全保护的三重利剑
- 22.3.1 第一剑:Permission机制
- 22.3.2 加强剑:DAC(UGO)保护
- 22.3.3 终极剑:SEAndroid
- 22.4 SEAndroid剖析
- 22.4.1 SEAndroid的顶层模型
- 22.4.2 SEAndroid相关的核心源码
- 22.4.3 SEAndroid标签和规则
- 22.4.5 TE文件的语法规则
- 22.4.6 SEAndroid中的核心主体——init进程
- 22.4.7 SEAndroid中的客体
- 22.5 Android设备Root简析
- 22.6 APK的加固保护分析
- 第4篇 Android系统工具
- 第23章 IDE和Gradle
- 23.1 Gradle的核心要点
- 23.1.1 Groovy与Gradle
- 23.1.2 Gradle的生命周期
- 23.2 Gradle的Console语法
- 23.3 Gradle Wrapper和Cache
- 23.4 Android Studio和Gradle
- 23.4.1 Gradle插件基础知识
- 23.4.2 Android Studio中的Gradle编译脚本
- 第24章 软件版本管理
- 24.1 版本管理简述
- 24.2 Git的安装
- 24.2.1 Linux环境下安装Git
- 24.2.2 Windows环境下安装Git
- 24.3 Git的使用
- 24.3.1 基础配置
- 24.3.2 新建仓库
- 24.3.3 文件状态
- 24.3.4 忽略某些文件
- 24.3.5 提交更新
- 24.3.6 其他命令
- 24.4 Git原理简析
- 24.4.1 分布式版本系统的特点
- 24.4.2 安全散列算法——SHA-1
- 24.4.3 4个重要对象
- 24.4.4 三个区域
- 24.4.5 分支的概念与实例
- 第25章 系统调试辅助工具
- 25.1 万能模拟器——Emulator
- 25.1.1 QEMU
- 25.1.2 Android工程中的QEMU
- 25.1.3 模拟器控制台(Emulator Console)
- 25.1.4 实例:为Android模拟器添加串口功能
- 25.2 此Android非彼Android
- 25.3 快速建立与模拟器或真机的通信渠道——ADB
- 25.3.1 ADB的使用方法
- 25.3.2 ADB的组成元素
- 25.3.3 ADB源代码解析
- 25.3.4 ADB Protocol
- 25.4 SDK Layoutlib
- 25.5 TraceView和Dmtracedump
- 25.6 Systrace
- 25.7 代码覆盖率统计
- 25.8 模拟GPS位置
- 欢迎来到异步社区!
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。