【连载】技巧4《android源码阅读及下载》

3,440 阅读3分钟

【谷歌公众号官宣,Code Search,的4天前,我就写好这篇blog的草稿了】,因为各种奇葩事情,没发出来,心塞。

曾经一个 “比官方更早推广Code Search的机会” 摆在我面前,但是我没有珍惜……


一、 在线阅读android系统源码

直接浏览器查看android源码,很方便

早前我们都用 grepcode在线看源码,不仅没墙,而且稳定好用,可惜grepcode服务器停服了好多年了。

最近 google 出品Code Search,cs.android.com/ ,更好用了,哇哈哈哈。

更好用了,哇哈哈哈。

更好用了,哇哈哈哈。

更好用了,哇哈哈哈。
但是要注意了:

这个网站国内访问不了。。。

国内访问不了。。。

国内访问不了。。。

code search android

  • 来我们搜索activitymanager类的源码,试试:

ActivityManager

代码搜索很方便

信息很丰富:git 提交历史,修改者等,类的概览,目录结构等

语法高亮很自然

  • 切换代码版本|分支

swich branch cs.android



好了,接下来深入主题。。。



二、 什么是AOSP

AOSP,是Android 源代码项目的简称。

英文全称:Android Open-Source Project

中文全称:Android 开放源代码项目




三、 安卓官方源码存放于:android.googlesource.com

注意该网站被墙了

虽然官网被墙,但是,清华大学,有aosp的镜像服务器:aosp.tuna.tsinghua.edu.cn/

AOSP镜像

四、 单个模块下载

AOSP 由很多个git仓库组成,往往一个git仓库是一个比较独立的模块,可以单独下载。

比如,我们只想下载 android系统应用《计算器》 的代码时。

android计算器源码

android计算器源码

  • 直接,git clone即可。

    git clone https://android.googlesource.com/platform/packages/apps/Calculator
    

    使用清华镜像下载:将https://android.googlesource.com替换为:aosp.tuna.tsinghua.edu.cn

    git clone https://aosp.tuna.tsinghua.edu.cn/platform/packages/apps/Calculator
    

    git clone 计算器



五、 repo 全量下载所有源码

官方教程:source.android.google.cn/setup/build…

官方教程已经很详细了,咱们再做个补充吧。

  • 什么是repo?

repo 是android源码管理工具,底层还是使用git命令来实现代码版本管理。

因为android是由N个git仓库组成,repo可以实现这些仓库的统一管理。

repo是python实现的工具,需要依赖python环境。所以你的电脑需要安装好python环境。

  • 下载不同版本代码
repo init -u https://android.googlesource.com/platform/manifest -b {VERSION_TAG}
repo sync

{VERSION_TAG} 为git tag,在如下图文档,可以查看所有android版本的tag:

source.android.google.cn/setup/start…

android srouce tags




六、 android架构与源码文件目录对应关系

android源码目录结构清晰。各个版本的源码目录结构大同小异。

我们先来看看android系统架构图,android是分层架构的。

  • android分层架构图

Android 软件堆栈

大家猜猜看: App层、Framework层、c/c++ libraries层、art【anroid Runtime】、HAL层、Linux Kernel层的 对应的源码在那些文件夹下面吗?

  • android源码目录

看文件夹名称我们基本也能猜出个7788了。

android源码目录

  • android源码目录与架构的关系

脑图来自网络:@码出世界

脑图


更多必备技能,点击这里:juejin.cn/post/684490…







赞美是一种美德,点个赞 再走啊,老铁

weixin_2dcode









关键词:android源码阅读; Code Search; android架构; grepcode; AOSP; android源码; android source;

参考资料

cs.android.com/

android.googlesource.com

segmentfault.com/a/119000001…

developer.android.com/guide/platf…