ubuntu16.04下搭建opengrok阅读android源码

ubuntu16.04下搭建opengrok阅读android源码

写在前面

最近准备了解,学习一下安卓的源码。但是使用Android Studio导入源码,使用过朋友的都知道那叫一个慢,这个时候就需要一个自己搭一个本地的opengrok服务器来解除我们的痛处。
openGrok的作用:

  • 通过浏览器查看代码
  • 快速查找
  • 每个java/cpp 文件的方法/成员变量列表显示

更多的功能用的时候再一一体会

系统环境

  • 系统
    ubuntu16.04
  • 环境软件
    open jdk 1.8以上

安装步骤

1. 安装universal-ctags

因为新版本的OpenGrok对exuberant-ctags的支持不太好,所以官方建议安装universal-ctags。
universal-ctags的下载地址:
https://github.com/universal-ctags/ctags
具体的命令如下:

sudo apt-get update
# 卸载 exuberant-ctags
sudo apt-get remove --purge exuberant-ctags
# 安装依赖软件 autoconf  
sudo apt-get install autoconf
mkdir ~/soft/universal-ctags
cd ~/soft/universal-ctags
# 下载universal-ctags
git clone https://github.com/universal-ctags/ctags
cd ctags
./autogen.sh
# 我的安装路径。就使用这个,后面索引就是这个路径(/home/zjs/soft/universal-ctags/bin)
./configure --prefix=/home/zjs/soft/universal-ctags  
make -j8
# 安装(这里会将软件安装到~/soft/universal-ctags/bin目录下,这个路径需要在后面写入配置文件中)
sudo make install

2. 安装tomcat8

  • 安装
sudo apt-get install tomcat8
  • 启动服务
sudo /etc/init.d/tomcat8 start
  • tomcat常用的三条命令
sudo /etc/init.d/tomcat8 restart
sudo /etc/init.d/tomcat8 start
sudo /etc/init.d/tomcat8 stop
  • 测试是否安装成功
    在浏览器输入http://localhost:8080/看到:
    ubuntu16.04下搭建opengrok阅读android源码_第1张图片

3. 下载opengrok

openGrok的下载地址

https://github.com/oracle/opengrok/releases/

下载后缀为.tar.gz的文件即可,我这里下载的是1.3.0版本。下载后,将它解压到你想放置的位置。我将它放在了 ~/soft/OpenGrok/ 下。
官网说要安装tools下面的opengrok-tools.tar.gz,这个可以不安装,不是必须的。
解压后在软件根目录新建三个文件夹。

  1. src 存放代码(或者是代码的映射)
  2. data 存放索引
  3. etc 存放配置文件
mv ~/soft/OpenGrok/opengrok-1.3.0 ~/soft/OpenGrok/opengrok
cd ~/soft/OpenGrok/opengrok
mkdir src data etc  

因为我的代码是之前已经下载好的,所以这里直接建一个软链接将代码和src目录关联起来

cd ~/soft/OpenGrok/opengrok/src
ln -s ~/code/src/ android #(~/code/src/ : 需要链接的源码路径  android : src下的链接  )

复制source.war到tomcat中

# 不需要解压缩,因为会自己解压
sudo cp ~/soft/OpenGrok/opengrok/lib/source.war /var/lib/tomcat8/webapps/

修改 /var/lib/tomcat8/webapps/source/WEB-INF/web.xmlconfiguration.xml 的路径

gedit /var/lib/tomcat8/webapps/source/WEB-INF/web.xml

<context-param>
        <description>Full path to the configuration file where OpenGrok can read its configurationdescription>
        <param-name>CONFIGURATIONparam-name>
        <param-value>/home/zjs/soft/OpenGrok/opengrok/etc/configuration.xmlparam-value>  //自己创建的etc路径,这里最好写绝对路径
    context-param>

4. 创建索引

新建一个openGrok.sh脚本,输入下面的命令

java \
    -Djava.util.logging.config.file=/home/zjs/soft/OpenGrok/opengrok/doc/logging.properties \
    -Xmx6g -jar /home/zjs/soft/OpenGrok/opengrok/lib/opengrok.jar \
    -c /home/zjs/soft/universal-ctags/bin/ctags \
    -s /home/zjs/soft/OpenGrok/opengrok/src -d /home/zjs/soft/OpenGrok/opengrok/data -H -P -S -G \
    -W /home/zjs/soft/OpenGrok/opengrok/etc/configuration.xml -U http://localhost:8080/source \
    -T 2 \
    -m 1024

修改脚本的权限

sudo chmod a+x openGrok.sh

执行脚本

./openGrok.sh

等待脚本执行完成(这个过程有点漫长,想快一点可以在脚本里面将-T这一行去掉,使用cpu可以支持的最大线程来生成索引。只是这样做会让你的电脑暂时有点卡).
重启Tomcat服务器

sudo /etc/init.d/tomcat8 restart

在浏览器输入 http://localhost:8080/source/,可以看到如下的效果那表示你就成功了。
ubuntu16.04下搭建opengrok阅读android源码_第2张图片
Project的位置是显示你的安卓源码的目录名

注意事项

  1. 命令的用法可以通过执行下面的命令,获取使用帮助
java -jar /home/zjs/soft/OpenGrok/opengrok/lib/opengrok.jar -h
  1. src中使用软链接的,在-s后面的源码路径必须要将软链接的路径写全。即如果你在src中创建了一个文件夹,并将代码指向了它。那么你的路径也必须要包含该文件夹,而不能只是上一级目录。
    举例:
    创建了一个路径/home/zjs/soft/opengrok/opengrok/src/code1 并在code1上创建一个软链接指向代码。
    这个时候必须写/home/zjs/soft/opengrok/opengrok/src/code1 而不能写/home/zjs/soft/opengrok/opengrok/src ,否则虽然执行不会报错,但是索引不能生成。
  2. 生成索引的时候如果出现内存溢出,情按照上面的第4部,修改-Xmx6g的值,根据你的服务器内存大小调整。
  3. 如果要实现自动更新索引,需要安装opengrok提供的工具包,具体流程见官网的流程。(step4) https://github.com/oracle/opengrok/wiki/How-to-setup-OpenGrok

你可能感兴趣的:(杂记)