系列文章索引
并发系列:线程锁事
新系列:Android11系统源码解析
-
Android11源码分析:binder是如何实现跨进程的?(创作中)
-
Android11源码分析:SurfaceFlinger是如何对vsync信号进行分发的?(创作中)
经典系列:Android10系统启动流程
前言
距离上一篇技术文章已经过去了大概一年的时间,最近打算重新梳理一些Android源码的知识做一些输出,也希望能多多跟大家交流,避免闭门造车,沉浸在所谓的深入研究
的自嗨当中
于是花了半天的时间,重新在Mac上搭建了环境,下载了最新的Android源码
下载查看源码的好处在于:
1.可以借助工具方便的跳转
2.可以在源码中添加自己的批注方便日后查看,
3.可以编译一份对应的系统镜像来调试使用
4.可以对照源码梳理相关的调用流程
5.可以方便的切换各个分支的Android源码
下面正文开始!
搭建环境
创建区分大小的磁盘空间
- 创建磁盘 Mac的系统磁盘默认是不区分大小写的,所以首先要创建一个区分大小写的磁盘空间
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 250g ~/android.dmg.sparseimage
- 挂载磁盘
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: 在线阅读工具
除了下载源码外,这里也分享几个用着比较趁手的在线阅读网站
-
cs.android.com/ (需科学上网)
-
androidxref.com/ (唯一可直接访问的源码阅读网站)
-
aospxref.com(目前已无法访问)
写在最后
近期可能会针对四大组件的源码进行梳理,把各个系统服务以及Binder调用相关的源码串联起来,下期文章再见啦!