OpenGrok 是一个极速的源代码搜索与交叉引用引擎。使用它你可以快速搜索,定位,交叉引用源代码。它 可以识别各种各样的编程语言以及各种各样的版本控制系统。安卓 6.0 的源代码仓库异常庞大,仓库有 16G, 检出最新版本源码之后有 35G,使用OpenGrok可以大大加快源代码的搜索与定位,提高生产力。OpenGrok 使用 Java 编写。这是它的官方站点。
前提条件
- linux 主机
- ctags
- jdk1.8
- tomcat 1.8
- OpenGrok,建议下载最新稳定版本: opengrok-0.12.1.5.tar.gz
搭建步骤
-
AOSP项目源码的获取。
可以访问AOSP项目主页的直接按照上面的介绍即可获取 Android 的源码。不能访问的可以通过几个镜像站点获取:清华大学TUNA镜像站, 中国科学技术大学镜像站。
-
安装 ctags
sudo apt install ctags
-
安装 jdk,tomcat, opengrok
假设 tomacat 的安装路径为:
~/opt/apache-tomcat-8.0.32
opengrok 的安装路径为:
~/opt/opengrok-0.12.1.5/
-
部署OpenGrok webapp
将文件
~/opt/opengrok-0.12.1.5/lib/source.war
复制到~/opt/apache-tomcat-8.0.32/webapps/
目录下。并启动 tomacat,tomcat 会自动部署 opengrok。$ cp ~/opt/opengrok-0.12.1.5/lib/source.war ~/opt/apache-tomcat-8.0.32/webapps/ $ cd ~/opt/apache-tomcat-8.0.32/bin $ ./startup.sh
-
配置 opengrok webapp
打开文件
~/opt/apache-tomcat-8.0.32/webapps/source/WEB-INF/web.xml
,在第一个 context-param 元素中更改 param-value 为 opengrok 的配置文件所在地:~/opt/opengrok-0.12.1.5/etc/configuration.xml
-
导出一些环境变量
$ export OPENGROK_INSTANCE_BASE=~/opt/opengrok-0.12.1.5 $ export OPENGROK_GENERATE_HISTORY=off $ export OPENGROK_SCAN_REPOS=false $ export OPENGROK_VERBOSE=true $ export OPENGROK_PROGRESS=true
上面的五个环境变量中,OPENGROK_INSTANCE_BASE 用于指定 opengrok 的安装路径; OPENGROK_GENERATE_HISTORY 和 OPENGROK_SCAN_REPOS 用于禁止历史索引和仓库扫描,加快 索引速度。仓库的提交历史完全可以在命令行中查看。如果不禁用历史索引的话,对于大型仓库,索引 的速度是非常慢的; OPENGROK_VERBOSE 使索引的过程中有详细的输出,OPENGROK_PROGRESS 可以使输出中显示进度
-
指定要索引的源码路径
$ cd ~/opt/opengrok-0.12.1.5 $ mkdir src; cd src $ ln -s ~/source/aosp AOSP
~/source/aosp
是你的安卓源代码所在的路径, 你应该改成你自己的路径。如果想要 opengrok 索引其他的源码仓库,再在 src 目录下另外建立软链接即可,每一个软链接都是 opengrok 中的一个 项目。 -
开始索引
$ cd ~/opt/opengrok-0.12.1.5/bin $ ./OpenGrok update
开始索引,大约需要一个小时,具体视你的机器的速度而定。当在 src 目录下面添加新的软链接后, 只需要再次执行
./OpenGrok update
就可以添加新的项目。 -
索引完成后访问
localhost:8080/source
即可看到 AOSP 项目,可以在搜索框进行搜索了。