Android 核心原理与系统级应用高效开发作 者: 韩超 等著出版时间: 2012内容简介 《android核心原理与系统级应用高效开发》是一本介绍android核心开发的技术图书,主要目标是让android的开发者更深入地理解android系统,让开发的过程更正确、更有效率。本书主要由两大部分组成,第1篇自下而上介绍android核心框架层的结构,并将开发的技巧和要点蕴含于其中;第2篇偏重系统级的应用层,关注android开发过程中的重点方面。《android核心原理与系统级应用高效开发》为android系统级别的开发者系统化而有条理性地展示了庞大的android系统的软件结构,点明开发思路;android应用程序的开发者可以通过本书加深认识,拓展开发手段;从事android硬件移植的开发者可以通过本书加深对系统全局的了解。目录第1篇 Android核心框架层开发第1章 Android系统框架1.1 Android系统基础结构1.2 Android的开发环境1.2.1 开发环境1.2.2 源代码获取1.2.3 编译Android源代码1.2.4 仿真器运行1.2.5 使用工具1.3 系统结构和代码结构1.3.1 软件系统结构1.3.2 源代码结构第2章 编译结构和各种构建2.1 Android的系统构建2.1.1 编译环境要求2.1.2 构建流程2.1.3 环境设置2.1.4 系统构建结果2.2 各种部件的构建2.2.1 Android.mk的语法2.2.2 各种部件的构建方式2.2.3 预编译内容的安装2.3 Android编译的板级支持2.3.1 支持一个板的工作2.3.2 buildspec.mk文件的作用2.3.3 vendersetup.sh和lunch命令2.3.4 BoardConfig.mk文件的作用2.3.5 AndroidProducts.mk文件2.3.6 AndroidBoard.mk文件2.3.7 编译中的层叠加第3章 本地层基础部分3.1 本地层基础部分结构3.2 C语言基础:Bionic3.2.1 Bionic各个部分的结构3.2.2 Bionic的头文件3.2.3 内存泄露的检查库3.2.4 属性系统的支持3.3 C语言底层库3.3.1 Log库3.3.2 C语言工具库libcutils3.3.3 属性和套接字支持3.4 init可执行程序和相关脚本3.4.1 init可执行程序的结构3.4.2 启动脚本init.rc3.4.3 init的内建动作和初始化3.4.4 init的循环3.4.5 设备管理功能3.5 shell工具3.5.1 shell程序sh3.5.2 命令工具箱toolbox3.6 Android属性和套接字机制3.6.1 属性机制3.6.2 套接字机制第4章 本地层框架部分4.1 本地层框架部分结构4.2 框架层的工具库libutils4.2.1 libutils的结构4.2.2 基本的定义和类型4.2.3 数据结构和容器类4.2.4 工具类4.2.5 引用计数和强弱引用指针4.2.6 线程类及相关辅助功能4.2.7 文件操作的监听循环4.3 作为全局守护进程的可执行程序4.3.1 app_process4.3.2 keystore4.3.3 installd4.3.4 vold4.3.5 netd4.4 Binder的IPC机制结构4.4.1 Android Binder机制的层次结构4.4.2 具体Binder的实现4.5 Binder库以及相关内容4.5.1 具体Binder的实现4.5.2 Binder库的核心功能4.5.3 Binder框架和具体IPC结构的实现4.5.4 IServiceManager相关4.5.5 Binder库中的其他部分4.6 servicemanager可执行程序和服务的实现4.6.1 服务管理器可执行程序和进程4.6.2 在系统中实现“服务”4.6.3 servicemanager对服务的管理4.6.4 Android中本地服务的层次结构第5章 本地的启动流程、调试和设计结构5.1 Android启动流程的本地阶段5.1.1 启动流程概述5.1.2 BootLoader运行及加载内核5.1.3 Linux内核运行和加载根文件系统5.1.4 运行用户空间的第一个进程5.1.5 挂接各个文件系统5.1.6 系统各个进程的运行5.1.7 启动图5.2 Android本地部分的调试5.2.1 标准Linux调试方法5.2.2 使用log的方法5.2.3 Android的特殊调试工具5.3 本地程序的结构设计5.3.1 目标和设计思路5.3.2 守护进程+保留Socket的设计结构5.3.3 守护进程+本地层Binder的设计结构第6章 Java运行环境6.1 Dalvik虚拟机和相关工具6.1.1 Dalvik的概述6.1.2 虚拟机的实现和运行6.1.3 Dalvik工具6.1.4 nativehelper库6.2 Java基础库libcore6.2.1 libcore的源代码结构6.2.2 luni目录中的内容6.2.3 libcore中的其他内容第7章 Java框架层7.1 Java框架层结构7.2 Android的Java层的API7.2.1 Java框架层API的含义7.2.2 API的描述文件7.2.3 被隐藏的内容7.2.4 不赞成使用的(过时的)API7.3 Java框架库framework.jar7.3.1 框架库的组成和作用7.3.2 框架库的API7.3.3 框架库的编译结构7.3.4 框架库的各个部分7.3.5 属性机制7.3.6 套接字机制7.4 Java服务库services.jar7.4.1 服务库的组成和作用7.4.2 服务管理器7.4.3 主要的服务功能7.4.4 启动结束的处理7.5 资源包framework-res.apk7.5.1 资源包的组成和作用7.5.2 作为API的资源id7.5.3 资源包AndroidManifest.Xml文件7.6 策略库7.6.1 策略库的组成和作用7.6.2 策略库的功能和使用7.7 Java层的Binder机制7.7.1 Java Binder的框架7.7.2 Java框架层的Binder使用7.7.3 Binder中参数和返回值的类型第8章 Java本地调用8.1 Android的Java本地调用8.1.1 JNI的基本概念8.1.2 Android的JNI实现基础8.1.3 Android中JNI的存在方式8.2 在框架中使用JNI8.2.1 框架层使用JNI的结构8.2.2 框架层JNI的实现8.3 在应用程序包中使用JNI8.3.1 应用程序包的JNI部分8.3.2 应用程序包中JNI的典型实现方式8.3.3 结构上的几种变化8.4 JNI的高级使用8.4.1 JNI的双向调用8.4.2 线程的处理8.4.3 JNIHelp中的特殊处理第9章 Java启动流程、调试和程序结构9.1 Java部分的启动流程9.1.1 启动流程概述9.1.2 Java系统的守护进程9.1.3 ZygoteInit 类的执行9.1.4 系统服务器部分9.1.5 Java应用程序部分的启动9.2 Java部分的调试9.2.1 在Java中使用Log9.2.2 Java层的命令行程序9.2.3 代码内容相关的调试9.2.4 DDMS工具9.2.5 HierarchyViewer工具9.3 Java层程序的结构设计9.3.1 目标和设计思路9.3.2 在系统服务器中服务的设计结构9.3.3 Service组件的设计结构第10章 GUI系统和应用程序管理10.1 GUI系统的结构和模块关系10.2 UI框架库及相关10.2.1 基本类型方面10.2.2 显示相关10.2.3 按键和事件的处理10.2.4 其他内容10.3 Surface图层系统10.3.1 Surface系统的结构10.3.2 Surface本地的接口部分10.3.3 Surface本地实现部分10.3.4 Surface的JNI代码10.3.5 Surface的Java部分10.4 2D图形系统10.4.1 2D图形系统的结构10.4.2 Skia底层库10.4.3 图形系统的JNI接口10.4.4 2D图形包10.5 3D图形系统10.5.1 OpenGL系统的结构10.5.2 OpenGL的本地代码10.5.3 OpenGL的JNI代码10.5.4 OpenGL的Java类10.6 窗口和视图部分10.6.1 窗口和视图部分的结构10.6.2 窗口管理的底层实现10.6.3 视图实现和上层的窗口管理器的实现10.7 活动和应用程序管理10.7.1 活动和应用程序管理的结构10.7.2 活动界面的实现10.7.3 应用程序管理的实现第2篇 Android系统级应用开发要点第11章 Android应用层接口结构与安全11.1 Android应用层接口结构11.1.1 标准应用程序和源代码开发的应用程序11.1.2 第三方应用程序和预置应用程序11.2 Android的安全系统11.2.1 安全机制概述11.2.2 Linux的用户和组11.2.3 Android的许可11.3 程序签名问题11.3.1 Android应用签名的概念11.3.2 Android应用签名的流程11.3.3 不同的程序签名11.3.4 证书生成工具11.4 安全策略11.4.1 安全策略的几个方面11.4.2 安全策略的实现11.4.3 安全策略的定制第12章 应用层的本地内容和NDK开发12.1 本地应用的标准化12.2 NDK环境12.2.1 NDK的基本概念12.2.2 从几个方面理解NDK的不同含义12.3 NDK的组成结构12.3.1 NDK环境的结构12.3.2 NDK中包含的内容12.4 NDK开发基础12.4.1 编译流程12.4.2 NDK编程要点12.4.3 开发结构12.5 使用JNI的方式12.5.1 NDK中使用JNI工程结构12.5.2 在本地操作Bitmap位图12.5.3 在本地使用OpenGL ES绘制12.5.4 程序实现12.6 在本地构建应用12.6.1 本地应用接口基础12.6.2 实现本地活动的辅助库:android_native_app_glue12.6.3 程序实现第13章 预置的应用程序层13.1 预置应用层程序概述13.2 预置综合应用程序13.2.1 主屏幕13.2.2 设置13.2.3 联系人和电话13.2.4 短信息和彩信13.2.5 浏览器和邮件13.2.6 音乐13.2.7 照相机和录音机13.2.8 画廊13.2.9 搜索13.2.10 时钟、计算器和日历13.3 预置内容提供者13.3.1 联系人信息提供者13.3.2 媒体信息提供者13.3.3 电话信息提供者13.3.4 下载信息提供者13.4 预置输入法13.5 活动墙纸系统13.5.1 活动墙纸选择器13.5.2 几个具体的活动墙纸13.6 实现框架功能的应用程序包13.6.1 系统界面13.6.2 设置信息提供者13.6.3 几个主体为Service组件的应用程序包第14章 Android系统定制14.1 Android系统定制概述14.2 普通应用程序的定制14.2.1 普通应用定制的方面14.2.2 预置的应用程序的组件可见性14.2.3 组件的intent-filter14.3 桌面的定制14.3.1 桌面程序的入口和功能14.3.2 桌面程序细节14.3.3 在桌面之前执行的程序14.4 系统资源的定制14.4.1 定义资源的概念和原则14.4.2 一些配置的数值14.4.3 可绘制内容的定制14.4.4 样式和主题的定制14.4.5 内部布局的定制14.5 框架内部组件和界面的定制14.5.1 内部组件14.5.2 内部界面14.6 状态栏界面的定制14.6.1 状态栏界面的功能和 上一篇: Android 微博应用开发实践 下一篇: Android多媒体应用开发实战详解:图像、音频、视频、2D和3D