Mac上阅读android源码

首先,需要下载源码,android的源码是通过repo管理的。

1. repo是什么?

repo是一种代码版本管理工具,它是由一系列的Python脚本组成,封装了一系列的Git命令,用来统一管理多个Git仓库。

2. 为什么要用repo?

因为Android源码引用了很多开源项目,每一个子项目都是一个Git仓库,每个Git仓库都有很多分支版本,为了方便统一管理各个子项目的Git仓库,需要一个上层工具批量进行处理,因此repo诞生。

repo也会建立一个Git仓库,用来记录当前Android版本下各个子项目的Git仓库分别处于哪一个分支,这个仓库通常叫做:manifest仓库。

3. 怎么安装repo?

官方的repo脚本下载方法:

curl http://commondatastorage.googleapis.com/git-repo-downloads/repo >  ./repo
由于官网被墙,目前可以使用的repo脚本下载方法如下(两者选一):

$ git clone git://git.omapzoom.org/git-repo.git
$ git clone git://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/  

$ cp git-repo/repo  ./repo
或者修改手头已有的被墙的repo文件:

REPO_URL = ‘git://git.omapzoom.org/git-repo.git‘
REPO_URL = ‘git://aosp.tuna.tsinghua.edu.cn/android/git-repo‘ 

REPO_REV = ‘stable‘
当然,你也可以去我的GitHub下载这个repo文件,地址:

https://github.com/Jhuster/AOSP/blob/master/repo

在mac中下载是这样的:

PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
先设置环境变量,repo下载在目录~/bin/下,如果被墙需要手动修改地址,命令行使用vi ~/bin/repo可以编辑,

把 REPO_URL 一行替换成下面的:

REPO_URL = 'https://gerrit-google.tuna.tsinghua.edu.cn/git-repo'
也可以在当前用户下,找到bin目录下的repo文件,使用sublime打开编辑,完成之后保存。

然后在命令行中就可以使用repo,有些时候会提示

repo: command not found

那就是下载安装repo有问题,需要检查下路径。按照上面的方法应该是没问题的。

接下来就是下载android源码了

4. 怎么下载源码?

上面说过,Android源码分支其实由一个叫manifest仓库来管理起来的,因此,下载源码首先要clone这个manifest仓库。这个仓库里面有一个XML文件,其实就是一个文件清单,列出了本代码仓库依赖哪些代码,该去哪下载,分支是什么。

一般用repo init命令来clone这个manifest仓库,例如,如果要下载Android源码,则方法如下:

$ repo init -u https://android.googlesource.com/platform/manifest
当然,上面的官网被墙了,因此,推荐如下镜像(两者选一):

$ repo init -u git://git.omapzoom.org/platform/manifest.git
$ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest
初始化完毕后,你会在本地的.repo文件夹中看到manifest仓库的内容,这个文件夹中最重要的文件是manifest.xml(有的仓库用的是default.xml,然后指向具体的xml),它就是上面说到的文件清单。

如果要选择特定版本的Android源码,或者在已下载的源码基础上切换到其他版本,则可以使用-b选项:

$ repo init -u git://git.omapzoom.org/platform/manifest.git -b android-5.0.2_r1 
$ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-5.0.2_r1
然后使用 repo sync 命令进行同步即可下载好全部的Android源码了。

在mac中是这样的:新建一个目录aosp,cd aosp目录,执行repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.1.0_r9 

可能需要等待一段很长的时间才能初始化成功。成功之后会在当前目录下有个目录.repo,就类似于.git目录的功能。其实现在啥都没有,接下来。。

成功之后继续执行:

repo sync

下载源码,需要等待一段很长的时间。。。

一些repo命令可参照这篇文章:

https://blog.csdn.net/chenjinlong126/article/details/79114468

下载完成后就可以阅读了,使用什么工具阅读呢,大部分使用source insight工具,但是mac上没有该软件,只能通过下载一个crossover来安装source insight,也是比较麻烦的。

还有就是直接倒入的android studio中进行,在as中查看代码那是相当爽的了。倒入需要将android整个源码通过一个工具development/tools/idegen.sh,具体如下:

Mac 下无法使用 Source Insight,所以我是使用 Android Studio 来阅读的,Android 源码中已经提供了导入到 Eclipse 和 Android Studio 的配置,需要使用 development/tools/idegen.sh工具。
 
因为我只想阅读 Android 源码,不需要编译,所以使用其他人编译好的 idegen.jar 。
 
mv idegen.jar aosp/out/host/darwin-x86/framework/
 
# 在默认终端中运行 idegen.sh,因为 sh 只支持 bash
development/tools/idegen/idegen.sh
然后在 aosp 目录可以看到 android.ipr 和 android.iml 文件,接下来编辑 android.iml 文件,把不需要导入的项目注释掉,节省导入时间。
 
最后在 Android Studio 中打开 android.ipr 即可。
 

在我是实际使用过程中,在下载源码的时候就有各种苦难,一方面是下载的时间比较久,文件比较大,最终还是断了,没有下载成功。其实我目前想看的源码就是framework base相关的,所以是否可以只下载base目录下的呢?

实际上是有的,base相关的源码谷歌在github上维护了一份:

https://github.com/android/platform_frameworks_base

这里可以看到有最新的base相关的版本。

我们直接点击右面 clone or download -> download zip就可以把源码下载到本地了。由于下载的不是所有的aosp源码文件,所以上面的导入as的方法不适用了。

那么如何查看呢,要么就是使用crossover+sourceinsight来模拟在windows环境下查看,还有一个就是使用sublime来查看了。

这里记录一下使用sublime来查看需要做的配置:

1. 查看Android源码的工具
  这里我们用Sublime Text 2 具体下载可以去网上搜一下,有破解版,当然你也可以去官网下载正版软件 http://www.sublimetext.com/2 可以免费试用一些功能。 
  下载完成点击菜单栏的File -> Open 选择解压后的根目录,打开,然后就可以看到Android源码的列表在左侧展示了。 
  然而我们还需要看源码最重要的功能——点击跳转。
 
2. 使用Ctags插件来进行代码跳转
左上角Sublime Text 2 -> Preference -> Browse Packages 查看是否已经安装了CTags Package,如果没有则需要安装
 
Sublime Text 2 -> Preference -> Package Control, 输入Install Package,在列表中输入选择 Ctags 插件进行安装
 
修改函数跳转方式:Perference -> Package Settings->CTags->Mouse Binding Default->复制全部->粘贴到Mouse Binding User 
把里面的”ctrl+shift”,修改为“command”,这样就可以用“command+左键”跳转了
 
右键点击侧边栏中Android 源码根目录,右键-> CTags: Rebuild Tags
如果出现警告
 
ctags: illegal option -- R
usage: ctags [-BFadtuwvx] [-f tagsfile] file ...
 
 
  那么说明你用的Ctags是系统预安装的版本,命令行输入which ctags,如果输出/usr/bin/ctags,就说明这个时候需要我们自己下载一个可用的Ctags。 
  命令行输入brew install ctags 进行安装。或者直接用这个链接下载 http://downloads.sourceforge.net/ctags/ctags-5.8.tar.gz 
  安装完成后在usr/local/bin/ 目录下可以看到安装完成的ctags。 
  接下来我们在终端 中用cd命令跳转到源码的根目录 ,执行/usr/local/bin/ctags -R -f .tags ,等待片刻,目录下会生成一个.tags的文件。 
  接下来可以点击源码中的方法或者类进行跳转了。
基本上按照上面的步骤就能使用sublime并进行点击跳转了。

一般是command+鼠标左键就能跳转。

如果我想查找某个文件呢?使用command+p快捷键

如果我想查找某个文件里的某个方法呢?使用command+r快捷键

如果我想回退到上一次的位置呢?使用control+减号快捷键(或者ctrl+"-")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值