项目介绍
关于 BeesX 开源技术小组
Bees(蜜蜂),取义蜜蜂精神求实、合作与奉献,也即 BeesX 开源技术小组的宗旨,求真务实,合作奉献,本小组旨在通过提供一系列的工具、方法与文档,帮助更多的无线开发工程师理解和掌握无线开发技术。
BeesAndroid 项目于 2018 年 3 月 6 日同步上线,该项目的前身是android-open-source-project-analysis,这个项目提供了一系列的 Android 系统源码分析文章,收到了良好的反馈。但是一个人的力量是有限的,因此将其推成团体项目 BeesAndroid,项目采用 GPL 协议,在保护作者知识产权的基础上,最大化的做到开源与开放,如果有什么问题和意见欢迎提交 issue,也欢迎大家参与到本项目中来。
关于 BeesAndroid 项目
BeesAndroid项目提供了一系列的工具、理论分析与方法论,旨在降低 Android 系统源码的阅读门槛,让读者更好的理解 Android 系统的设计与实现。第一次阅览本系列文章,请参见导读,更多文章请参见文章目录。
掘金博客
在线书籍
代码版本
分支:android-7.0.0_r34
版本:Nougat
支持设备:Nexus 6
分析思路
Android 是一个庞大的系统,Android Framework 只是对系统的一个封装,里面还牵扯到 JNI、C++、Java 虚拟机、Linux 系统内核、指令集等。面对如此庞大的系统,我们得有一定的 章法去阅读源码,否则就会只见树木不见森林,陷入卷帙浩繁的细节与琐碎之中。
善于抓住主线和支线,主线指的就是 Android 系统的各个模块,支线就是这个模块从上值下各个层级中的重要元素,逐一分析,直至探究到模块的最根源层。
不要去记录那些 API 调用链,绘制一个序列图理清思路即可,Android Framework 中有很多复杂的 API 调用链,你去关注这些东西,用处不大。你需要学会的是跟踪调用链和梳理流程的 技巧,思考一下作者是怎么找到关键入口的,核心的实现在什么地方。
要善于思考,要多问为什么,面对一个模块,你要去思考这个模块解决了什么问题,这个问题的本质是什么,为什么这么解决,如果让我来写,我会怎么设计。事实上不管是是计算机还是 手机,从 CPU、到内存、到操作系统、到应用层,看似纷繁复杂,但问题的本质无非就是这么几种:时间片怎么分配?线程/进程怎么调度?通信的机制是什么?只是在不同的场景下加了具体 的优化,但问题的本质没有改变,我们要善于抓住本质。
要善于去粗存精,Android Framework 也是人写的,有精华也有糟粕,并不是每行代码你都需要问个为什么,很多时候没有那么多为什么,只是当时那种情况下就那样设计了。但是 对于关键函数我们要去深究它的实现细节。
在正式阅读本系列文章之前,请先阅读导读相关内容,这会帮助你更加快捷的理解文章内容
导读
你也可以先阅读关于 Android 系统的概述,让你有 Android 系统的设计有个整体的把握。
Android 系统设计概述
Android 系统设计原则与设计模式
欢迎提交 Issue 与 PR,为帮助我们更好的维护此项目,请先阅读 wiki 里的相关规范。
Wiki
文章目录
导读
Android 源码阅读指南
Android 系统设计概述
Android 系统与设计模式
串讲
渲染机制
聊一聊 Android 的渲染机制
聊一聊 Chromium 的渲染机制
聊一聊小程序的渲染机制
聊一聊 Flutter 渲染机制
Android 系统简介
Android 系统简介
Android 应用原理
Android 应用系统
Android 应用上下文 Context
Android 应用主线程 ActivityThread
Android 组件注册表 AndroidManifest
Android 视图系统
Android 应用视图 View
Android 应用窗口 Window
Android 组件系统
Android 多媒体系统
Android 浏览器系统
Android 系统原理
Android 的进程与线程
线程通信的桥梁 Handler
进程通信的桥梁 Binder
Android 系统进程启动流程
Android 组件管理服务 AWS
Android 窗口管理服务 WMS
Android 界面绘制服务 SurfaceFlinger
Android OpenGL ES 原理
Android 应用程序编译与打包
Android 虚拟机 ART
Android 系统安全机制
Android 系统工具
Android 编译系统 Jack
Android 打包脚本 Gradle
Android 系统调试工具
欢迎关注我们