Android系统源代码情景分析笔记00

深入Android系统底层
本文从初学者角度出发,深入浅出地介绍了Android系统的底层技术,包括硬件抽象层、智能指针、日志系统等,并详细分析了Binder通信机制、Ashmem共享内存系统以及应用程序框架等内容。

开始研究Android的底层了

作者主页:http://blog.youkuaiyun.com/luoshengyang/article/details/7409491

Android Studio下载http://rAndroid Studioj.baidu.com/soft/detail/27390.html?ald

大牛们是怎么阅读 Android 系统源码的?http://www.zhihu.com/question/19759722

 

  • 巨人的肩膀
    • AOSP项目官方: https://source.android.com/source/index.html
      • 这个一定要先读. 项目介绍, 代码下载, 环境搭建, 刷机方法, Eclipse配置都在这里. 这是一切的基础.
    • Android官方Training: https://developer.android.com/training/index.html
      • 这个其实是给App开发者看的. 但是里面也有不少关于系统机制的介绍, 值得细读.
    • 老罗的Android之旅: http://blog.youkuaiyun.com/luoshengyang
      • 此老罗非彼老罗. 罗升阳老师的博客非常有营养, 基本可以作为指引你开始阅读AOSP源码的教程. 你可以按照博客的时间顺序一篇篇挑需要的看.但这个系列的博客有些问题:
        • 早期的博客是基于旧版本的Android;
        • 大量的代码流程追踪. 读文章时你一定要清楚你在看的东西在整个系统处于什么样的位置.
    • Innost的专栏: http://blog.youkuaiyun.com/innost
      • 邓凡平老师也是为Android大牛, 博客同样很有营养. 但是不像罗升阳老师的那么系统. 更多的是一些技术点的深入探讨.
    • Android Issues: http://code.google.com/p/android/issues/list
      • Android官方Issue列表. 我在开发过程中发现过一些奇怪的bug, 最后发现这里基本都有记录. 当然你可以提一些新的, 有没有人改就是另外一回事了.
    • Google: https://www.google.com
      • 一定要能流畅的使用这个工具. 大量的相关知识是没有人系统的总结的, 你需要自己搞定.

整理的内容从初学者的角度来组织,由浅入深、自下而上地对Android系统的源代码进行了分析,目录结构如下所示:

 

[plain]  view plain copy CODE_ico.pnguploading.4e448015.gif转存失败重新上传取消 在CODE上查看代码片 ico_fork.svguploading.4e448015.gif转存失败重新上传取消 派生到我的代码片
 
  1. 第一篇  初识Android系统...........................................6  
  2.     第一章  准备知识..............................................7  
  3.         1.1  准备Linux内核基础知识................................7  
  4.         1.2  准备Android应用程序基础知识..........................8  
  5.         1.3  下载、编译和运行Android源代码........................8  
  6.             1.3.1  安装Git工具....................................9  
  7.             1.3.2  安装Java SDK...................................9  
  8.             1.3.3  安装其它工具包.................................9  
  9.             1.3.4  安装repo工具...................................9  
  10.             1.3.5  下载Android源代码..............................9  
  11.             1.3.6  编译Android源代码..............................10  
  12.             1.3.7  运行Android模拟器..............................11  
  13.         1.4  下载、编译和运行Android内核源代码....................12  
  14.             1.4.1  下载Android内核源代码..........................12  
  15.             1.4.2  修改Makefile文件...............................13  
  16.             1.4.3  编译Android内核源代码..........................13  
  17.             1.4.4  运行Android模拟器..............................14  
  18.         1.5  开发第一个Android应用程序............................14  
  19.         1.6  编译和打包单个Android应用程序模块....................17  
  20.             1.6.1  导入编译单个模块的mmm命令......................17  
  21.             1.6.2  编译单个Android应用程序模块....................18  
  22.             1.6.3  重新打包Android系统镜像文件....................18  
  23.     第二章  硬件抽象层............................................19  
  24.         2.1  开发Android硬件驱动程序..............................20  
  25.             2.1.1  实现内核驱动程序模块...........................21  
  26.             2.1.2  修改内核Kconfig文件............................27  
  27.             2.1.3  修改内核Makefile文件...........................28  
  28.             2.1.4  编译内核驱动程序模块...........................28  
  29.             2.1.5  验证内核驱动程序模块...........................29  
  30.         2.2  开发C可执行程序验证Android硬件驱动程序...............30  
  31.         2.3  开发Android硬件抽象层模块............................32  
  32.             2.3.1  硬件抽象层编写规范.............................32  
  33.                 2.3.1.1  模块文件的命令规范.......................32  
  34.                 2.3.1.2  结构体定义规范...........................33  
  35.             2.3.2  实现硬件抽象层访问接口.........................35  
  36.             2.3.3  硬件抽象层模块加载过程分析.....................39  
  37.             2.3.4  处理硬件设备访问权限问题.......................42  
  38.         2.4  开发Android硬件访问服务..............................44  
  39.             2.4.1  定义硬件访问服务接口...........................44  
  40.             2.4.2  实现硬件访问服务...............................45  
  41.             2.4.3  实现硬件访问服务的Java 本地接口方法............46  
  42.             2.4.4  启动硬件访问服务...............................49  
  43.         2.5  开发Android应用程序来调用硬件访问服务................50  
  44.     第三章  智能指针..............................................55  
  45.         3.1  轻量级指针...........................................57  
  46.             3.1.1  实现原理分析...................................57  
  47.             3.1.2  使用实例分析...................................59  
  48.         3.2  强指针和弱指针.......................................61  
  49.             3.2.1  强指针的实现原理分析...........................61  
  50.             3.2.2  弱指针的实现原理分析...........................68  
  51.             3.2.3  强指针和弱指针的使用实例分析...................74  
  52. 第二篇  Android专用驱动系统.......................................79  
  53.     第四章  Logger日志系统........................................80  
  54.         4.1  Logger驱动程序.......................................83  
  55.             4.1.1  相关数据结构...................................83  
  56.             4.1.2  设备初始化过程.................................85  
  57.             4.1.3  设备文件打开过程...............................90  
  58.             4.1.4  日志读取过程...................................91  
  59.             4.1.5  日志写入过程...................................95  
  60.         4.2  运行时日志库写入接口.................................100  
  61.         4.3  C/C++日志写入接口....................................106  
  62.         4.4  Java日志写入接口.....................................110  
  63.         4.5  Logcat工具分析.......................................116  
  64.             4.5.1  相关数据结构...................................117  
  65.             4.5.2  初始化过程.....................................121  
  66.             4.5.3  日志读取过程...................................133  
  67.             4.5.4  日志输出过程...................................137  
  68.     第五章  Binder进程间通信系统..................................149  
  69.         5.1  Binder驱动程序.......................................151  
  70.             5.1.1  相关数据结构...................................152  
  71.             5.1.2  设备初始化过程.................................172  
  72.             5.1.3  设备文件打开过程...............................173  
  73.             5.1.4  设备文件内存映射过程...........................174  
  74.             5.1.5  内核缓冲区管理.................................181  
  75.                 5.1.5.1  分配内核缓冲区...........................181  
  76.                 5.1.5.2  释放内核缓冲区...........................187  
  77.                 5.1.5.3  查询内核缓冲区...........................192  
  78.         5.2  Binder进程间通信库...................................193  
  79.         5.3  Binder进程间通信应用实例.............................197  
  80.         5.4  Binder对象引用计数技术...............................205  
  81.             5.4.1  Binder本地对象的生命周期.......................206  
  82.             5.4.2  Binder实体对象的生命周期.......................210  
  83.             5.4.3  Binder引用对象的生命周期.......................213  
  84.             5.4.4  Binder代理对象的生命周期.......................218  
  85.         5.5  Binder对象死亡通知机制...............................221  
  86.             5.5.1  注册死亡接收通知...............................221  
  87.             5.5.2  发送死亡接收通知...............................225  
  88.             5.5.3  注销死亡接收通知...............................229  
  89.         5.6  Service Manager的启动过程............................232  
  90.             5.6.1  打开和映射Binder设备文件.......................234  
  91.             5.6.2  注册成为Binder上下文管理者.....................235  
  92.             5.6.3  循环等待Client进程请求.........................239  
  93.         5.7  Service Manager代理对象接口的获取过程................245  
  94.         5.8  Service的启动过程....................................252  
  95.             5.8.1  注册Service组件................................253  
  96.                 5.8.1.1  封装通信数据为Parcel对象.................254  
  97.                 5.8.1.2  发送和处理BC_TRANSACTION命令协议.........257  
  98.                 5.8.1.3  发送和处理BR_TRANSACTION返回协议.........270  
  99.                 5.8.1.4  发送和处理BC_REPLY命令协议...............282  
  100.                 5.8.1.5  发送和处理BR_REPLY返回协议...............288  
  101.             5.8.2  循环等待Client进程请求.........................291  
  102.         5.9  Service代理对象接口的获取过程........................294  
  103.         5.10  Binder进程间通信机制的Java实现接口..................302  
  104.             5.10.1  获取Service Manager的Java代理对象接口.........303  
  105.             5.10.2  AIDL服务接口解析..............................312  
  106.             5.10.3  Java服务的启动过程............................315  
  107.             5.10.4  获取Java服务的代理对象接口....................321  
  108.             5.10.5  Java服务的调用过程............................324  
  109.     第六章  Ashmem匿名共享内存系统................................329  
  110.         6.1  Ashmem驱动程序.......................................330  
  111.             6.1.1  相关数据结构...................................330  
  112.             6.1.2  设备初始化过程.................................332  
  113.             6.1.3  设备文件打开过程...............................334  
  114.             6.1.4  设备文件内存映射过程...........................336  
  115.             6.1.5  内存块的锁定和解锁过程.........................338  
  116.             6.1.6  解锁状态内存块的回收过程.......................345  
  117.         6.2  运行时库cutils的匿名共享内存接口.....................346  
  118.         6.3  匿名共享内存的C++访问接口............................349  
  119.             6.3.1  MemoryHeapBase.................................349  
  120.                 6.3.1.1  Server端的实现...........................349  
  121.                 6.3.1.2  Client端的实现...........................353  
  122.             6.3.2  MemoryBase.....................................359  
  123.                 6.3.2.1  Server端的实现...........................360  
  124.                 6.3.2.2  Client端的实现...........................362  
  125.             6.3.3  应用实例.......................................364  
  126.         6.4  匿名共享内存的Java访问接口...........................370  
  127.             6.4.1  MemoryFile.....................................370  
  128.             6.4.2  应用实例.......................................375  
  129.         6.5  匿名共享内存的共享原理分析...........................386  
  130. 第三篇  Android应用程序框架篇.....................................390  
  131.     第七章  Activity组件的启动过程................................391  
  132.         7.1  Activity组件应用实例.................................391  
  133.         7.2  根Activity的启动过程.................................397  
  134.         7.3  Activity在进程内的启动过程...........................429  
  135.         7.4  Activity在新进程中的启动过程.........................438  
  136.     第八章  Service组件的启动过程.................................441  
  137.         8.1  Service组件应用实例..................................441  
  138.         8.2  Service在新进程中的启动过程..........................448  
  139.         8.3  Service在进程内的绑定过程............................460  
  140.     第九章  Android系统广播机制...................................483  
  141.         9.1  广播应用实例.........................................484  
  142.         9.2  广播接收者的注册过程.................................491  
  143.         9.3  广播的发送过程.......................................499  
  144.     第十章  Content Provider组件的实现原理........................521  
  145.         10.1  Content Provider组件应用实例........................522  
  146.             10.1.1  ArticlesProvider..............................523  
  147.             10.1.2  Article.......................................533  
  148.         10.2  Content Provider组件的启动过程......................548  
  149.         10.3  Content Provider组件的数据共享原理..................570  
  150.         10.4  Content Provider组件的数据更新通知机制..............593  
  151.             10.4.1  内容观察者的注册过程..........................594  
  152.             10.4.2  数据更新的通知过程............................601  
  153.     第十一章  Zygote和System进程的启动过程........................609  
  154.         11.1  Zygote进程的启动脚本................................609  
  155.         11.2  Zygote进程的启动过程................................612  
  156.         11.3  System进程的启动过程................................619  
  157.     第十二章  Android应用程序进程的启动过程.......................628  
  158.         12.1  应用程序进程的创建过程..............................628  
  159.         12.2  Binder线程池的启动过程..............................637  
  160.         12.3  消息循环的创建过程..................................640  
  161.     第十三章  Android应用程序的消息处理机制.......................644  
  162.         13.1  创建线程消息队列....................................644  
  163.         13.2  线程消息循环过程....................................649  
  164.         13.3  线程消息发送过程....................................654  
  165.         13.4  线程消息处理过程....................................658  
  166.     第十四章  Android应用程序的键盘消息处理机制...................666  
  167.         14.1  InputManager的启动过程..............................669  
  168.             14.1.1  创建InputManager..............................669  
  169.             14.1.2  启动InputManager..............................672  
  170.             14.1.3  启动InputDispatcher...........................674  
  171.             14.1.4  启动InputReader...............................676  
  172.         14.2  InputChannel的注册过程..............................687  
  173.             14.2.1  创建InputChannel..............................688  
  174.             14.2.2  注册Server端InputChannel......................695  
  175.             14.2.3  注册当前激活窗口..............................699  
  176.             14.2.4  注册Client端InputChannel......................704  
  177.         14.3  键盘消息的分发过程..................................708  
  178.             14.3.1  InputReader处理键盘事件.......................708  
  179.             14.3.2  InputDispatcher分发键盘事件...................715  
  180.             14.3.3  当前激活的窗口获得键盘消息....................727  
  181.             14.3.4  InputDispatcher获得键盘事件处理完成通知.......741  
  182.         14.4  InputChannel的注销过程..............................745  
  183.             14.4.1  销毁应用程序窗口..............................746  
  184.             14.4.2  注销Client端InputChannel......................754  
  185.             14.4.3  注销Server端InputChannel......................756  
  186.     第十五章  Android应用程序线程的消息循环模型...................762  
  187.         15.1  应用程序主线程消息循环模型..........................762  
  188.         15.2  界面无关的应用程序子线程消息循环模型................764  
  189.         15.3  界面相关的应用程序子线程消息循环模型................766  
  190.     第十六章  Android应用程序的安装和显示过程.....................775  
  191.         16.1  应用程序的安装过程..................................775  
  192.         16.2  应用程序的显示过程..................................808  

 

 

 

Android系统源代码情景分析》随书光盘内容(源代码) 目录如下: 第1篇 初识Android系统 第1章 准备知识 1.1 Linux内核参考书籍 1.2 Android应用程序参考书籍 1.3 下载、编译和运行Android源代码 1.3.1 下载Android源代码 1.3.2 编译Android源代码 1.3.3 运行Android模拟器 1.4 下载、编译和运行Android内核源代码 1.4.1 下载Android内核源代码 1.4.2 编译Android内核源代码 1.4.3 运行Android模拟器 1.5 开发第一个Android应用程序 1.6 单独编译和打包Android应用程序模块 1.6.1 导入单独编译模块的mmm命令 1.6.2 单独编译Android应用程序模块 1.6.3 重新打包Android系统镜像文件 第2章 硬件抽象层 2.1 开发Android硬件驱动程序 2.1.1 实现内核驱动程序模块 2.1.2 修改内核Kconfig文件 2.1.3 修改内核Makefile文件 2.1.4 编译内核驱动程序模块 2.1.5 验证内核驱动程序模块 2.2 开发C可执行程序验证Android硬件驱动程序 2.3 开发Android硬件抽象层模块 2.3.1 硬件抽象层模块编写规范 2.3.2 编写硬件抽象层模块接口 2.3.3 硬件抽象层模块的加载过程 2.3.4 处理硬件设备访问权限问题 2.4 开发Android硬件访问服务 2.4.1 定义硬件访问服务接口 2.4.2 实现硬件访问服务 2.4.3 实现硬件访问服务的JNI方法 2.4.4 启动硬件访问服务 2.5 开发Android应用程序来使用硬件访问服务 第3章 智能指针 3.1 轻量级指针 3.1.1 实现原理分析 3.1.2 应用实例分析 3.2 强指针和弱指针 3.2.1 强指针的实现原理分析 3.2.2 弱指针的实现原理分析 3.2.3 应用实例分析 第2篇 Android专用驱动系统 第4章 Logger日志系统 4.1 Logger日志格式 4.2 Logger日志驱动程序 4.2.1 基础数据结构 4.2.2 日志设备的初始化过程 4.2.3 日志设备文件的打开过程 4.2.4 日志记录的读取过程 4.2.5 日志记录的写入过程 4.3 运行时库层日志库 4.4 C/C++日志写入接口 4.5 Java日志写入接口 4.6 Logcat工具分析 4.6.1 相关数据结构 4.6.2 初始化过程 4.6.3 日志记录的读取过程 4.6.4 日志记录的输出过程 第5章 Binder进程间通信系统 5.1 Binder驱动程序 5.1.1 基础数据结构 5.1.2 Binder设备的初始化过程 5.1.3 Binder设备文件的打开过程 5.1.4 Binder设备文件的内存映射过程 5.1.5 内核缓冲区管理 5.2 Binder进程间通信库 5.3 Binder进程间通信应用实例 5.4 Binder对象引用计数技术 5.4.1 Binder本地对象的生命周期 5.4.2 Binder实体对象的生命周期 5.4.3 Binder引用对象的生命周期 5.4.4 Binder代理对象的生命周期 5.5 Binder对象死亡通知机制 5.5.1 注册死亡接收通知 5.5.2 发送死亡接收通知 5.5.3 注销死亡接收通知 5.6 Service Manager的启动过程 5.6.1 打开和映射Binder设备文件 5.6.2 注册为Binder上下文管理者 5.6.3 循环等待Client进程请求 5.7 Service Manager代理对象的获取过程 5.8 Service组件的启动过程 5.8.1 注册Service组件 5.8.2 启动Binder线程池 5.9 Service代理对象的获取过程 5.10 Binder进程间通信机制的Java接口 5.10.1 Service Manager的Java代理对象的获取过程 5.10.2 Java服务接口的定义和解析 5.10.3 Java服务的启动过程 5.10.4 Java服务代理对象的获取过程 5.10.5 Java服务的调用过程 第6章 Ashmem匿名共享内存系统 6.1 Ashmem驱动程序 6.1.1 基础数据结构 6.1.2 匿名共享内存设备的初始化过程 6.1.3 匿名共享内存设备文件的打开过程 6.1.4 匿名共享内存设备文件的内存映射过程 6.1.5 匿名共享内存块的锁定和解锁过程 6.1.6 匿名共享内存块的回收过程 6.2 运行时库cutils的匿名共享内存访问接口 6.3 匿名共享内存的C++访问接口 6.3.1 MemoryHeapBase 6.3.2 MemoryBase 6.3.3 应用实例 6.4 匿名共享内存的Java访问接口 6.4.1 MemoryFile 6.4.2 应用实例 6.5 匿名共享内存的共享原理 第3篇 Android应用程序框架 第7章 Activity组件的启动过程 7.1 Activity组件应用实例 7.2 根Activity组件的启动过程 7.3 子Activity组件在进程内的启动过程 7.4 子Activity组件在新进程中的启动过程 第8章 Service组件的启动过程 8.1 Service组件应用实例 8.2 Service组件在新进程中的启动过程 8.3 Service组件在进程内的绑定过程 第9章 Android系统广播机制 9.1 广播机制应用实例 9.2 广播接收者的注册过程 9.3 广播的发送过程 第10章 Content Provider组件的实现原理 10.1 Content Provider组件应用实例 10.1.1 ArticlesProvider 10.1.2 Article 10.2 Content Provider组件的启动过程 10.3 Content Provider组件的数据共享原理 10.3.1 数据共享模型 10.3.2 数据传输过程 10.4 Content Provider组件的数据更新通知机制 10.4.1 注册内容观察者 10.4.2 发送数据更新通知 第11章 Zygote和System进程的启动过程 11.1 Zygote进程的启动脚本 11.2 Zygote进程的启动过程 11.3 System进程的启动过程 第12章 Android应用程序进程的启动过程 12.1 应用程序进程的创建过程 12.2 Binder线程池的启动过程 12.3 消息循环的创建过程 第13章 Android应用程序的消息处理机制 13.1 创建线程消息队列 13.2 线程消息循环过程 13.3 线程消息发送过程 13.4 线程消息处理过程 第14章 Android应用程序的键盘消息处理机制 14.1 键盘消息处理模型 14.2 InputManager的启动过程 14.2.1 创建InputManager 14.2.2 启动InputManager 14.2.3 启动InputDispatcher 14.2.4 启动InputReader 14.3 InputChannel的注册过程 14.3.1 创建InputChannel 14.3.2 注册Server端InputChannel 14.3.3 注册系统当前激活的应用程序窗口 14.3.4 注册Client端InputChannel 14.4 键盘消息的分发过程 14.4.1 InputReader获得键盘事件 14.4.2 InputDispatcher分发键盘事件 14.4.3 系统当前激活的应用程序窗口获得键盘消息 14.4.4 InputDispatcher获得键盘事件处理完成通知 14.5 InputChannel的注销过程 14.5.1 销毁应用程序窗口 14.5.2 注销Client端InputChannel 14.5.3 注销Server端InputChannel 第15章 Android应用程序线程的消息循环模型 15.1 应用程序主线程消息循环模型 15.2 与界面无关的应用程序子线程消息循环模型 15.3 与界面相关的应用程序子线程消息循环模型 第16章 Android应用程序的安装和显示过程 16.1 应用程序的安装过程 16.2 应用程序的显示过程
ndroid系统源代码情景分析的评论 这本书是我看过的最深入的一本android书了,可以看出作者是一个很有悟性的程序员,很适合需要提高的android框架层工程师进阶。binder部分是目前所有书中分析的最全面的。匿名共享内存分析的也很好。 情况分析应该是学毛德操老师的,作者确实做到了,作者在讲解时,会从java层到native层,再到linux kernel中整个串起来讲。使读者可以完全了解某些子系统的运行机制 内容简介 · · · · · · 在内容上,本书结合使用情景,全面、深入、细致地分析Android系统源代码,涉及到Linux内核层、硬件抽象层(HAL)、运行时库层(Runtime)、应用程序框架层(Application Framework)以及应用程序层(Application)。 在组织上,本书将上述内容划分为初识Android系统Android专用驱动系统Android应用程序框架三大篇章。初识Android系统篇介绍了参考书籍、基础知识以及实验环境搭建;Android专用驱动系统篇介绍了Logger日志驱动程序、Binder进程间通信驱动程序以及Ashmem匿名共享内存驱动程序;Android应用程序框架篇从组件、进程、消息以及安装四个维度来对Android应用程序的框架进行了深入的剖析。 通过上述内容及其组织,本书能使读者既能从整体上把握Android系统的层次结构,又能从细节上去掌握每一个层次的要点。 作者简介 · · · · · · 罗升阳,1984年出生,2007年毕业于浙江大学计算机系,取得学士学位,2010年毕业于上海交通大学计算机系,取得硕士学位。毕业后一直从事于互联网软件开发,并且致力于移动平台的研究,特别是对Android平台有深入的理解和研究。在国内知名IT技术社区优快云上发表了数十篇高质量的Android系统原创性文章,并且开设博客专栏--《老罗的Android之旅》,积极与网友互动,深受大家喜爱,访问量一直居于前茅。
Android系统源代码情景分析》随书光盘内容(源代码) 目录如下: 第1篇 初识Android系统 第1章 准备知识 1.1 Linux内核参考书籍 1.2 Android应用程序参考书籍 1.3 下载、编译和运行Android源代码 1.3.1 下载Android源代码 1.3.2 编译Android源代码 1.3.3 运行Android模拟器 1.4 下载、编译和运行Android内核源代码 1.4.1 下载Android内核源代码 1.4.2 编译Android内核源代码 1.4.3 运行Android模拟器 1.5 开发第一个Android应用程序 1.6 单独编译和打包Android应用程序模块 1.6.1 导入单独编译模块的mmm命令 1.6.2 单独编译Android应用程序模块 1.6.3 重新打包Android系统镜像文件 第2章 硬件抽象层 2.1 开发Android硬件驱动程序 2.1.1 实现内核驱动程序模块 2.1.2 修改内核Kconfig文件 2.1.3 修改内核Makefile文件 2.1.4 编译内核驱动程序模块 2.1.5 验证内核驱动程序模块 2.2 开发C可执行程序验证Android硬件驱动程序 2.3 开发Android硬件抽象层模块 2.3.1 硬件抽象层模块编写规范 2.3.2 编写硬件抽象层模块接口 2.3.3 硬件抽象层模块的加载过程 2.3.4 处理硬件设备访问权限问题 2.4 开发Android硬件访问服务 2.4.1 定义硬件访问服务接口 2.4.2 实现硬件访问服务 2.4.3 实现硬件访问服务的JNI方法 2.4.4 启动硬件访问服务 2.5 开发Android应用程序来使用硬件访问服务 第3章 智能指针 3.1 轻量级指针 3.1.1 实现原理分析 3.1.2 应用实例分析 3.2 强指针和弱指针 3.2.1 强指针的实现原理分析 3.2.2 弱指针的实现原理分析 3.2.3 应用实例分析 第2篇 Android专用驱动系统 第4章 Logger日志系统 4.1 Logger日志格式 4.2 Logger日志驱动程序 4.2.1 基础数据结构 4.2.2 日志设备的初始化过程 4.2.3 日志设备文件的打开过程 4.2.4 日志记录的读取过程 4.2.5 日志记录的写入过程 4.3 运行时库层日志库 4.4 C/C++日志写入接口 4.5 Java日志写入接口 4.6 Logcat工具分析 4.6.1 相关数据结构 4.6.2 初始化过程 4.6.3 日志记录的读取过程 4.6.4 日志记录的输出过程 第5章 Binder进程间通信系统 5.1 Binder驱动程序 5.1.1 基础数据结构 5.1.2 Binder设备的初始化过程 5.1.3 Binder设备文件的打开过程 5.1.4 Binder设备文件的内存映射过程 5.1.5 内核缓冲区管理 5.2 Binder进程间通信库 5.3 Binder进程间通信应用实例 5.4 Binder对象引用计数技术 5.4.1 Binder本地对象的生命周期 5.4.2 Binder实体对象的生命周期 5.4.3 Binder引用对象的生命周期 5.4.4 Binder代理对象的生命周期 5.5 Binder对象死亡通知机制 5.5.1 注册死亡接收通知 5.5.2 发送死亡接收通知 5.5.3 注销死亡接收通知 5.6 Service Manager的启动过程 5.6.1 打开和映射Binder设备文件 5.6.2 注册为Binder上下文管理者 5.6.3 循环等待Client进程请求 5.7 Service Manager代理对象的获取过程 5.8 Service组件的启动过程 5.8.1 注册Service组件 5.8.2 启动Binder线程池 5.9 Service代理对象的获取过程 5.10 Binder进程间通信机制的Java接口 5.10.1 Service Manager的Java代理对象的获取过程 5.10.2 Java服务接口的定义和解析 5.10.3 Java服务的启动过程 5.10.4 Java服务代理对象的获取过程 5.10.5 Java服务的调用过程 第6章 Ashmem匿名共享内存系统 6.1 Ashmem驱动程序 6.1.1 基础数据结构 6.1.2 匿名共享内存设备的初始化过程 6.1.3 匿名共享内存设备文件的打开过程 6.1.4 匿名共享内存设备文件的内存映射过程 6.1.5 匿名共享内存块的锁定和解锁过程 6.1.6 匿名共享内存块的回收过程 6.2 运行时库cutils的匿名共享内存访问接口 6.3 匿名共享内存的C++访问接口 6.3.1 MemoryHeapBase
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值