Binder系列文章意在给需要的读者加深对binder系统的理解,虽然很多读者对JAVA层的binder理解深刻,但是对于整个binder还是不知所以然,因此笔者写了这一系列binder文章,希望能够帮助到对binder理解还不够深入的读者
准备
关于语言
由于源码都是c和cpp的代码,因此,你必须先学习 c/c++
学到什么程度?
其实不用太深入
对于c/c++你必须要先搞清楚什么是指针,优先级最高,没搞清楚之前建议不要着急去阅读源码
笔者写了两篇文章,可以作为预习 理解计算机与内存,指针,如果你感兴趣的话
知道了什么是指针,对于c/c++的语法学个大概就行,学习一些语言特性即可,其他不常用的地方,可以在阅读源码的过程中去学习
关于源码编译
很遗憾,笔者的环境搭了好多天还是问题频出,因此没法给读者做代码测试上的保证,当然笔者还是会继续搭建源码环境
如果你想搭建环境并且自己编译的话,有几点建议
- 先去下载源码,最好科学上网,即使有镜像,问题也不免会出现
- 最好使用ubuntu,不建议把自己的电脑系统装成ubuntu,你可以用windows然后用虚拟机安装ubuntu,因为源码的阅读,还是windows中的 Source Insight
- 下载源码的过程中,时间不要浪费,因为源码的下载和编译耗费时间特别多
- 关于编译,有篇文章建议阅读 理解 Android Build 系统
- 另外,编译是一个体力活,过程会遇到各种问题,希望你顺利
- ubuntu下的编译工作,推荐老罗的博客 在Ubuntu上下载、编译和安装Android最新源代码
关于源码的下载
如果读者实在不想下载源码,你可以在线阅读 androidxref.com
内核的源码请移步 linux_android_source
关于源码阅读工具
首推当然是 Source Insight,可惜只有windows平台可用
如果你的系统是mac os或者ubuntu,笔者建议使用 vscode ,安装一些插件也可以很顺利地进行源码阅读,虽然会有一些不方便之处
vscode 插件推荐:
- c/c++
- chinese
- Find-Jump
- Intellij IDEA Keybindings
- java
安装完这些插件,基本的源码阅读是没问题了
文章系列
按照顺序阅读即可
binder介绍
binder-概念以及底层流程
binder-编写应用层 C 代码
binder-驱动数据结构
binder-服务的注册流程
binder-服务获取及使用过程
binder-transcation_stack机制
binder-使用C++编写binder系统
binder-c++内部机制
binder-JAVA层代码编写
binder-JAVA层机制
binder-JAVA层使用AIDL
binder总结
binder复习测试
如果博客描述有误,可提 issues
建议
一定要去阅读源码,不然和咸鱼有什么区别?
不要觉得看看博客,知道流程了,你就觉得你懂了
too young too simple
最后, Read the fucking source code