• Stars
    star
    2,593
  • Rank 17,671 (Top 0.4 %)
  • Language
  • License
    GNU General Publi...
  • Created over 6 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Android系统源码分析重构中

BeesAndroid

License Stars Stars Forks

项目介绍

关于BeesX开源技术小组

Bees(蜜蜂),取义蜜蜂精神求实、合作与奉献,也即BeesX开源技术小组的宗旨,求真务实,合作奉献,本小组旨在通过提供一系列的工具、方法与文档,帮助更多的无线开发工程师理解和掌握无线开发技术。

BeesAndroid项目于2018年3月6日同步上线,该项目的前身是android-open-source-project-analysis,这个项目提供了一系列的Android系统源码分析文章,收到了良好的反馈。但是一个人的力量是有限的,因此将其推成团体项目BeesAndroid,项目采用GPL协议,在保护作者知识产权的基础上,最大化的做到开源与开放,如果有什么问题和意见欢迎提交issue,也欢迎大家参与到本项目中来。

关于BeesAndroid项目

BeesAndroid项目提供了一系列的工具、理论分析与方法论,旨在降低Android系统源码的阅读门槛,让读者更好的理解Android系统的设计与实现。第一次阅览本系列文章,请参见导读,更多文章请参见文章目录

代码版本

image.png

分析思路

Android是一个庞大的系统,Android Framework只是对系统的一个封装,里面还牵扯到JNI、C++、Java虚拟机、Linux系统内核、指令集等。面对如此庞大的系统,我们得有一定的 章法去阅读源码,否则就会只见树木不见森林,陷入卷帙浩繁的细节与琐碎之中。

  • 善于抓住主线和支线,主线指的就是Android系统的各个模块,支线就是这个模块从上值下各个层级中的重要元素,逐一分析,直至探究到模块的最根源层。
  • 不要去记录那些API调用链,绘制一个序列图理清思路即可,Android Framework中有很多复杂的API调用链,你去关注这些东西,用处不大。你需要学会的是跟踪调用链和梳理流程的 技巧,思考一下作者是怎么找到关键入口的,核心的实现在什么地方。
  • 要善于思考,要多问为什么,面对一个模块,你要去思考这个模块解决了什么问题,这个问题的本质是什么,为什么这么解决,如果让我来写,我会怎么设计。事实上不管是是计算机还是 手机,从CPU、到内存、到操作系统、到应用层,看似纷繁复杂,但问题的本质无非就是这么几种:时间片怎么分配?线程/进程怎么调度?通信的机制是什么?只是在不同的场景下加了具体 的优化,但问题的本质没有改变,我们要善于抓住本质。
  • 要善于去粗存精,Android Framework也是人写的,有精华也有糟粕,并不是每行代码你都需要问个为什么,很多时候没有那么多为什么,只是当时那种情况下就那样设计了。但是 对于关键函数我们要去深究它的实现细节。

在正式阅读本系列文章之前,请先阅读导读相关内容,这会帮助你更加快捷的理解文章内容

你也可以先阅读关于Android系统的概述,让你有Android系统的设计有个整体的把握。

欢迎提交Issue与PR,为帮助我们更好的维护此项目,请先阅读wiki里的相关规范。

文章目录

导读

串讲

渲染机制

Android系统简介

Android应用原理

Android系统原理

Android系统工具

欢迎关注我们