Coder Social home page Coder Social logo

feixiao / android-open-source-project-analysis Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sucese/android-open-source-project-analysis

0.0 1.0 0.0 118.79 MB

Android open source project analysis. Note: The project has been moved to https://github.com/BeesAndroid/BeesAndroid.

License: Apache License 2.0

Shell 0.70% Java 99.30%

android-open-source-project-analysis's Introduction

Android open source project analysis Android open source project analysis

功能介绍

License Stars Stars Forks

第一次阅览本系列文章,请参见导读,更多文章请参见文章目录

代码版本

  • 细分版本:N6F26U
  • 分支:Android-7.1.1_r28
  • 版本:Nougat
  • 支持设备:Nexus 6

分析思路

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

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

写作风格

和大家一样,笔者也是在前人的书籍和博客的基础上开始学习 Android 的底层实现的,站在前人的肩膀上会看的更远。但是这些书籍和博客有个问题在于,文章中罗列了大量的代码,这样 很容易把初学者带入到琐碎的细节之中,所以本系列文章在行文中更多的会以图文并茂和提纲总结的方式来分析问题,关键的地方才会去解析源码,力求让大家从宏观上理解 Android 的底 层实现。另外,基本上一个主题对应一篇文章,所以文章会比较长,但是文章会有详细的标题划分和提纲总结,可以有的放矢,阅读自己需要的内容。

好了,让我们开始我们的寻宝之旅吧~😆

Android 系统架构图

Android 系统架构图

从上到下依次分为六层:

  • 应用框架层
  • 进程通信层
  • 系统服务层
  • Android 运行时层
  • 硬件抽象层
  • Linux 内核层

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

Android 系统应用框架篇

Android 窗口管理框架

Android 组件管理框架

Android 包管理框架

Android 资源管理框架

Android 系统底层框架篇

Android 进程框架

Android 内存框架

Android 虚拟机框架

Android 应用开发实践篇

Android 界面开发

Android 应用优化

Android 媒体开发

其他

Android 系统软件设计篇

android-open-source-project-analysis's People

Contributors

feixiao avatar sucese avatar

Watchers

 avatar

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.