三、下载Android源码
1、安装repo
确保主目录下有一个 bin/ 目录,并且该目录包含在路径中:
mkdir ~/bin
PATH=~/bin:$PATH
2、下载 Repo 工具,并确保它可执行:
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo
sudo chmod a+x ~/bin/repo
3、如果提示Command 'curl' not found,执行提示的下载命令即可 sudo apt install curl
4、为了保证能正常翻墙下载,把 ~/bin/repo 中的REPO_URL 改成下面
REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
5、配置Git
sudo apt-get install git
git config --global user.name "姓名"
git config --global user.email "邮箱"
6、初始化仓库前,先建一个放源码的文件夹
mkdir AndroidSource
进入目录执行repo init命令,-b 后面跟的是版本,这个是androidP
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-9.0.0_r3
初始化成功后,执行同步开始下载,等待下载完成即可。
repo sync
四、配置OpenGrok
1、配置OpenGrok前需要的软件tomcat,根据经验用安装包好配置,这里都是下载好的压缩包。
apache-tomcat-8.5.51.tar.gz
opengrok-0.12.1.6.tar.gz
说明:opengrok版本太高,里面没有bin目录,没有配置过,想尝试的可以去下面的链接看看。
https://github.com/oracle/opengrok/wiki/How-to-setup-OpenGrok
2、把tomacat解压到相应的目录,执行bin目录下的startup.sh,启动tomcat服务
因为这里用的虚拟机,所以在windows上访问虚拟机的ip,http://192.168.188.5:8080,查看能否正常启动,正常启动如图:
3、解压OpenGrok后,把/opengrok-0.12.1.6/lib/ 目录下的source.war 拷贝到 tomcat里的webapps下,打开浏览器,即可访问http://192.168.188.5:8080/source/
4、安装ctag
sudo apt-get install exuberant-ctags
这里安装的exuberant-ctags,网上有些说一定要安装universal-ctags,不明所以,我用是没问题的,公司用的也是exuberant-ctags,如果这里安装了后面执行不了,去尝试一下universal-ctags。
5、修改一些OpenGrok默认参数
(1)修改opengrok-0.12.1.6/bin/OpenGrok文件,把opengrok的路径改成自己的路径,修改如下:
OPENGROK_INSTANCE_BASE="/home/he/OpenGrok/opengrok-0.12.1.6"
如果不知道之间的路径怎么填,可以输入pwd,复制路径即可。
可以看到SRC_ROOT就是源码的路径,这里默认是在OPENGROK_INSTANCE_BASE目录下的src,可以在这里修改到自己的源码路径。我这里不修改,在后面扫描时,指定扫描的源码路径即可。
(2)OPENGROK_TOMCAT_BASE下添加tomcat的路径,记得上一行加个反斜杠 \
6、 修改apache-tomcat-8.5.51/webapps/source/WEB-INF目录下的 web.xml
(1)把CONFIGURATION里的值改为自己的OpenGrok目录
<param-value>/home/he/OpenGrok/opengrok-0.12.1.6/etc/configuration.xml</param-value>
7、进入/opengrok-0.12.1.6/bin目录下,执行./OpenGrok deploy(只需执行一次即可)
8、建立索引
如果你已经在OpenGrok里修改过源码路径,在/opengrok-0.12.1.6/bin目录下,直接执行 ./OpenGrok index,
否则,执行
./OpenGrok index /home/he/AndroidSource/
后面就是下载源码的地址,修改自己相应的即可,执行完毕后,即可用OpenGrok查看,搜索代码了。
支持多种搜索方式,也可以点击项目去查看相应的代码。