Git Product home page Git Product logo

beesandroid's Introduction

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系统工具

欢迎关注我们

beesandroid's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.