wurensen / aosp-learning

记录下学习Android AOSP源码的过程。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[TOC]

深入学习Android源码(AOSP)

Android平台架构

官网关于平台架构的说明

首先先从整体上对Android整个平台架构有个初步认识(图来自官网):

 The Android software stack

推荐阅读Android系统架构开篇,对整个系统架构有更深入的理解,贴一张来自该文章的系统启动架构图:

系统启动架构图

目标和分析方法

目标

根据平台架构,可以发现平时的应用开发工作基本是建立在Java API Framework之上,所以一开始最应该弄懂的就是framework这一层,但因为跨进程Binder(IPC)作为非常基础和核心的部分,也会在开始阶段由浅到深的去理解。

分析方法

基于已有的一些分析博客,同时带着自己的疑问去分析,并记录分析过程。

前期准备工作

  • 1. 下载AOSP源码(源码版本:android-9.0.0-r40),并成功编译,运行模拟器
  • 2. 源码导入到Android Studio以便阅读,以及断点调试

关于如何下载编译并运行模拟器,查看官网和其它博客说明。以下记录几个关键点:

  • 同步代码时使用网上提供好的重试脚本
  • 自己用的Mac电脑编译时选择aosp_x86-eng,成功运行模拟器
  • 导入Android Studio阅读源码,一开始可以先exclude掉所有模块,然后再把需要的模块的java目录标记为Sources Root,例如要导入frameworks,不要直接把整个目录标记为源码,而是把frameworks/base/core/java标记为源码,否则会出现代码无法正确跳转的问题

成果

分析过程形成的关键结果记录成文章。

framework

目录结构对应于上文架构图,有些文章内容会涉及到多个部分。

Activity

Window

Linux Kernel

Binder(IPC)

Android进程

About

记录下学习Android AOSP源码的过程。