BeesAndroid

Introduction: The project aims to help more Android engineers understand the Android system and master the Android system by providing a series of tools and methods.
More: Author   ReportBugs   
Tags:

功能介绍

License Stars Stars Forks

关于 BeesX 开源技术小组

Bees(蜜蜂),取义蜜蜂精神,取义求实、合作与奉献,这也是 BeesX 开源技术小组的宗旨,求真务实,合作奉献。本小组当前有两大技术方向:Android 系统原理分析与实践、跨端技术原理分析与实践,欢迎感兴趣的同学参与进来。

我们第一个团体项目 BeesAndroid 也于 2018 年 3 月 6 日同步上线,该项目的前身是android-open-source-project-analysis,这个项目提供了一系列的 Android 系统源码分析文章,收 到了良好的反馈。

但是一个人的力量是有限的,因此将其推成团体项目 BeesAndroid,项目采用 GPL 协议,在保护作者知识产权的基础上,最大化的做到开源与开放,如果有什么问题和意见欢迎提交 issue,也欢迎大家参与 到本项目中来。

BeesAndroid 项目旨在通过提供一系列的工具与方法,降低阅读系统源码的门槛,帮助更多的 Android 工程师理解 Andriod 系统,掌握 Android 系统。

代码版本

  • 细分版本: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 系统的设计有个整体的把握。

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

👉 注:每篇文章有三种状态:编辑中、校对中和已完成。请阅读已完成状态的文章。

原理篇

Android 应用框架层

Android 视图系统

文章 文章状态 作者 校对
Android 视图系统:Android 视图系统概述 已完成 郭孝星 郭孝星
Android 视图系统:Android 应用窗口 Window 已完成 郭孝星 郭孝星
Android 视图系统:Android 应用视图 View 已完成 郭孝星 郭孝星
Android 视图系统:Android 应用视图组 ViewGroup 编辑中
Android 视图系统:Android 帧布局控件 FrameLayout 编辑中
Android 视图系统:Android 线性布局控件 LinearLayout 编辑中
Android 视图系统:Android 相对布局控件 RelativeLayout 编辑中
Android 视图系统:Android 协调布局控件 CoordinatorLayout 编辑中
Android 视图系统:Android 下拉刷新控件 SwipeRefreshLayout 编辑中
Android 视图系统:Android 滑动控件 ViewPager 编辑中
Android 视图系统:Android 滚动控件 ScrollView 编辑中
Android 视图系统:Android 列表控件 RecyclerView 编辑中
Android 视图系统:Android 进度条控件 ProgressBar 编辑中
Android 视图系统:Android 文字控件 TextView 编辑中
Android 视图系统:Android 编辑框控件 EditText 编辑中
Android 视图系统:Android 图片控件 ImageView 编辑中
Android 视图系统:Android 对话框控件 Dialog 编辑中
Android 视图系统:Android 弹出窗口控件 PopupWindow 编辑中
Android 视图系统:Android 浏览器控件 WebView 编辑中

Android 组件系统

文章 文章状态 作者 校对
Android 组件系统:Android 组件系统概述 编辑中
Android 组件系统:Android 组件注册表 AndroidManifest 编辑中
Android 组件系统:Android 应用上下文 Context 编辑中
Android 组件系统:Android 视图容器 Activity 编辑中
Android 组件系统:Android 视图片段 Fragment 编辑中
Android 组件系统:Android 后台服务 Service 编辑中
Android 组件系统:Android 数据提供者 ContentProvider 校对中 wusp 郭孝星
Android 组件系统:Android 广播接收者 BroadcastReceiver 编辑中

Android 资源系统

文章 文章状态 作者 校对
Android 资源系统:Android 资源系统概述 编辑中
Android 资源系统:应用资源 Resources 编辑中
Android 资源系统:资源管理器 AssetManager 编辑中

Android 包系统

文章 文章状态 作者 校对
Android 包系统:Android 包系统概述 编辑中
Android 包系统:APK 解析器 PackageParser 编辑中
Android 包系统:APK 的打包流程 编辑中
Android 包系统:APK 的安装流程 编辑中
Android 包系统:APK 的加载流程 编辑中

Android 应用通信系统

文章 文章状态 作者 校对
Android 应用通信系统:Android 应用通信系统概述 编辑中
Android 应用通信系统:线程通信的桥梁 Handler 编辑中
Android 应用通信系统:局域广播 LocalBroadcastReceiver 编辑中

Android 动画系统

文章 文章状态 作者 校对
Android 动画系统:Android 动画系统概述 编辑中
Android 动画系统:Android 补间动画 编辑中
Android 动画系统:Android 帧动画 编辑中
Android 动画系统:Android 属性动画 编辑中

Android 多媒体系统

文章 文章状态 作者 校对
Android 多媒体系统:Android 多媒体系统概述 编辑中
Android 多媒体系统:实时预览与播放 SurfaceView、GLSurfaceVIew、TextureView 与 SurfaceTexture 编辑中
Android 多媒体系统:视频播放 VideoView 编辑中
Android 多媒体系统:相机 Camera 编辑中
Android 多媒体系统:相机 Camera2 编辑中
Android 多媒体系统:音视频解码 MediaCodec 编辑中

Android 数据库系统

文章 文章状态 作者 校对
Android 数据库系统:Android 数据库系统概述 编辑中
Android 数据库系统:数据库 SQLiteDatabase 编辑中
Android 数据库系统:数据库连接 SQLiteConnection 编辑中
Android 数据库系统:数据库会话 SQLiteSession 编辑中
Android 数据库系统:数据库语句转换 SQLiteProgram 编辑中
Android 数据库系统:数据库游标 Cursor 编辑中

Java 系统框架层

Android 组件管理服务

文章 文章状态 作者 校对
Android 组件管理服务:Android 组件管理服务概述 编辑中
Android 组件管理服务:组件管理服务 ActivityManagerService 编辑中
Android 组件管理服务:应用主线程 ActivityThread 编辑中

Android 窗口管理服务

文章 文章状态 作者 校对
Android 窗口管理服务:Android 窗口管理服务概述 编辑中
Android 窗口管理服务:窗口管理服务 WindowManagerService 编辑中
Android 窗口管理服务:窗口启动、显示与切换 编辑中
Android 窗口管理服务:窗口大小与位置计算 编辑中
Android 窗口管理服务:窗口动画 编辑中

Android 图形绘制服务

文章 文章状态 作者 ���对
Android 图形绘制服务:Android 图形绘制服务概述
Android 图形绘制服务:SurfaceFlinger
Android 图形绘制服务:Android 布局解析器 LayoutInflater

Android 包管理服务

文章 文章状态 作者 校对
Android 视图系统:Android 视图系统概述
Android 窗口管理服务:PackageServiceManager

Android 反馈管理服务

文章 文章状态 作者 校对
Android 反馈管理服务:Android 反馈管理服务概述
Android 反馈管理服务:AccessibilityManagerService

Android 壁纸管理服务

文章 文章状态 作者 校对
Android 壁纸管理服务:Android 壁纸管理服务概述
Android 壁纸管理服务:WallpaperManagerService

Android 搜索管理服务

文章 文章状态 作者 校对
Android 搜索管理服务:Android 搜索管理服务概述
Android 搜索管理服务:SearchManagerService

Android 通知管理服务

文章 文章状态 作者 校对
Android 搜索管理服务:Android 搜索管理服务概述
Android 通知管理服务:NotificationManagerService

Android 定位管理服务

文章 文章状态 作者 校对
Android 定位管理服务:Android 定位管理服务概述
Android 定位管理服务:LocationManagerService

Android 输入法管理服务

文章 文章状态 作者 校对
Android 视图系统:Android 视图系统概述
Android 输入法管理服务:InputMethodManagerService

Android 电源管理服务

文章 文章状态 作者 校对
Android 电源管理服务:Android 电源管理服务概述
Android 电源管理服务:PowerManagerService

Android 闹钟管理服务

文章 文章状态 作者 校对
Android 电源管理服务:Android 电源管理服务概述
Android 闹钟管理服务:AlarmManagerService

Android 网络管理服务

文章 文章状态 作者 校对
Android 网络管理服务:Android 网络管理服务概述
Android 网络管理服务:ConnectivityService

Android 账户管理服务

文章 文章状态 作者 校对
Android 账户管理服务:Android 账户管理服务概述
Android 账户管理服务:AccountManagerService

Android 设备存储管理服务

文章 文章状态 作者 校对
Android 设备存储管理服务:Android 设备存储管理服务概述
Android 设备存储管理服务:DeviceStorageMonitorService

Android 备份管理服务

文章 文章状态 作者 校对
Android 备份管理服务:Android 备份管理服务概述
Android 备份管理服务:BackupManagerService

C++系统框架层

Binder 进程通信系统

文章 文章状态 作者 校对
Binder 进程通信系统:Binder 进程通信系统概述 编辑中
Binder 进程通信系统:服务管理 ServiceManager 编辑中
Binder 进程通信系统:Binder 线程池 编辑中
Binder 进���通信系统:Binder 驱动 编辑中

Socket 进程通信系统

文章 文章状态 作者 校对
Socket 进程通信系统:Socket 进程通信系统概述 编辑中

Java 虚拟机

文章 文章状态 作者 校对
Java 虚拟机:Java 虚拟机概述 编辑中 郭孝星 郭孝星
Java 虚拟机:类加载机制 已完成 郭孝星 郭孝星
Java 虚拟机:自动内存管理机制 编辑中 郭孝星 郭孝星
Java 虚拟机:垃圾收集器与内存分配策略 编辑中 郭孝星 郭孝星

ART 虚拟机

文章 文章状态 作者 校对
ART 虚拟机:ART 虚拟机概述 编辑中 郭孝星 郭孝星
ART 虚拟机:OAT 文件的加载流程 编辑中 郭孝星 郭孝星
ART 虚拟机:类与方法的查找流程 编辑中 郭孝星 郭孝星
ART 虚拟机:机器指令的查找流程 编辑中 郭孝星 郭孝星
ART 虚拟机:垃圾收集 编辑中 郭孝星 郭孝星

Linux 内核层

Android 进程系统

文章 文章状态 作者 校对
Android 进程系统:Android 进程系统概述 编辑中
Android 进程系统:进程的创建、启动与调度流程 编辑中
Android 进程系统:线程与线程池 编辑中
Android 进程系统:AIDL 编辑中

Android 内存系统

文章 文章状态 作者 校对
Android 内存系统:Android 内存系统
Android 内存系统:内存管理系统
Android 内存系统:Ashmem 匿名共享内存系统

实践篇

界面开发

文章 文章状态 作者 校对
Android 界面开发:View 自定义概述 编辑中
Android 界面开发:View 自定义布局篇 编辑中
Android 界面开发:View 自定义绘制篇 编辑中
Android 界面开发:View 自定义交互篇 编辑中

多媒体开发

文章 文章状态 作者 校对
Android 多媒体开发:Bitmap 实践指南 编辑中 郭孝星 郭孝星
Android 多媒体开发:Camera 实践指南 编辑中 郭孝星 郭孝星

网络编程

文章 文章状态 作者 校对
Android 网络编程:基础理论 已完成 郭孝星 郭孝星

混合编程

文章 文章状态 作者 校对
Android 混合编程:基本用法 已完成 郭孝星 郭孝星
Android 混合编程:原生通信 已完成 郭孝星 郭孝星
Android 混合编程:性能优化 已完成 郭孝星 郭孝星

Android 应用优化

文章 文章状态 作者 校对
Android 应用优化:优化概述 编辑中 郭孝星 郭孝星
Android 应用优化:启动优化 编辑中 郭孝星 郭孝星
Android 应用优化:界面优化 编辑中 郭孝星 郭孝星
Android 应用优化:内存优化 编辑中 郭孝星 郭孝星
Android 应用优化:图像优化 编辑中 郭孝星 郭孝星
Android 应用优化:网络优化 编辑中 郭孝星 郭孝星
Android 应用优化:并发优化 编辑中 郭孝星 郭孝星
Android 应用优化:优化工具 编辑中 郭孝星 郭孝星

欢迎关注我们的微信公众号,新文章会第一 时间发布到掘金博客与微信公众平台,我们也有自己的交流群,下方是 QQ 交流群,微信群已满,可以加我微信 allenwells 邀请入群。

微信公众平台

QQ 交流群

Support Me
Apps
About Me
Google+: Trinea trinea
GitHub: Trinea