【再出发】Android11:Mac环境如何下载Android源码?

3,279 阅读3分钟

系列文章索引

并发系列:线程锁事

  1. 篇一:为什么CountDownlatch能保证执行顺序?

  2. 篇二:并发容器为什么能实现高效并发?

  3. 篇三:从ReentrientLock看锁的正确使用姿势

新系列:Android11系统源码解析

  1. Android11源码分析:Mac环境如何下载Android源码?

  2. Android11源码分析:应用是如何启动的?

  3. Android11源码分析:Activity是怎么启动的?

  4. Android11源码分析:Service启动流程分析

  5. Android11源码分析:静态广播是如何收到通知的?

  6. Android11源码分析:binder是如何实现跨进程的?(创作中)

  7. 番外篇 - 插件化探索:插件Activity是如何启动的?

  8. Android11源码分析: UI到底为什么会卡顿?

  9. Android11源码分析:SurfaceFlinger是如何对vsync信号进行分发的?(创作中)

经典系列:Android10系统启动流程

  1. 源码下载及编译

  2. Android系统启动流程纵览

  3. init进程源码解析

  4. zygote进程源码解析

  5. systemServer源码解析

前言

距离上一篇技术文章已经过去了大概一年的时间,最近打算重新梳理一些Android源码的知识做一些输出,也希望能多多跟大家交流,避免闭门造车,沉浸在所谓的深入研究的自嗨当中

于是花了半天的时间,重新在Mac上搭建了环境,下载了最新的Android源码

下载查看源码的好处在于:

1.可以借助工具方便的跳转

2.可以在源码中添加自己的批注方便日后查看,

3.可以编译一份对应的系统镜像来调试使用

4.可以对照源码梳理相关的调用流程

5.可以方便的切换各个分支的Android源码

下面正文开始!

搭建环境

创建区分大小的磁盘空间

  1. 创建磁盘 Mac的系统磁盘默认是不区分大小写的,所以首先要创建一个区分大小写的磁盘空间
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 250g ~/android.dmg.sparseimage
  1. 挂载磁盘
hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android;

安装xcode-select工具

按照官方文档上,可以执行xcode-select --install命令来安装,但实际情况是会提示"不能安装该软件,因为目前不可在软件服务器上使用它"

替代方案是去Apple的开发者网站手动下载并安装,搜索command line tool 选择对应的xcode版本安装即可

安装MacPort

官网选择合适的版本下载安装后,执行以下命令

1.export PATH=/opt/local/bin:$PATH

2 POSIXLY_CORRECT=1 sudo port install git gnupg

到此环境搭建完成

下载源码

安装repo

官网链接:https://source.android.com/setup/develop#repo

保证主目录中有一个 bin/ 目录,并让它包含在路径中

mkdir ~/bin
PATH=~/bin:$PATH

下载 Repo 启动器

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

创建工作目录

mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

安装证书

# macOS only
open /Applications/Python\ 3.6/Install\ Certificates.command

使用清华源下载

在工作目录下,这里还是用清华源的镜像来下载,

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest

我们把repo的地址修改为清华源的地址

执行open ~/.bash_profile

添加export REPO_URL='https://aosp.tuna.tsinghua.edu.cn/git-repo 并保存

执行source ~/bash_profile使环境变量生效

下载源码

先看下有哪些分支可用

cd .repo/manifests
git branch -a | cut -d / -f 3

这里我们选择最新的android-11.0.0_r8,执行以下命令

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-11.0.0_r8

repo sync

经过漫长的下载后,我们就下载好最新的Android源码啦

尽情玩耍吧,小伙伴们!

ADDED: 在线阅读工具

除了下载源码外,这里也分享几个用着比较趁手的在线阅读网站

  1. cs.android.com/ (需科学上网)

  2. androidxref.com/ (唯一可直接访问的源码阅读网站)

  3. aospxref.com (目前已无法访问)

写在最后

近期可能会针对四大组件的源码进行梳理,把各个系统服务以及Binder调用相关的源码串联起来,下期文章再见啦!