展开全部

主编推荐语

最新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日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。