阅读Android源码这样庞大的代码,没有一个趁手的工具,会比较难受。之前都是通过vim来阅读源码,但没有做相关的vim插件配置,所以每次都需要进行grep,效率极低。后来尝试在ubuntu中使用sourceinsight,效果也不是特别好,不流畅,而且同步代码时比较慢(可能是我电脑性能问题)。后面尝试了openGrok,一个让我欲罢不能的阅读源码的工具。
但在搭建openGrok的时候,还是遇到了不少问题,可能openGrok或者tomcat版本不对,或者我配置的方法问题,导致一直踩坑。这里分享下搭建openGrok的方法和过程。
openGrok依赖于tomcat,所以使用openGrok需要安装tomcat。废话少说,进入准备工作。
这个网上百度进行安装就好,不在这里赘述。
网上有很多的下载资源,但使用总是失败,最后使用了apache-tomcat-8.5版本,文末会列出下载的地方。
sudo apt-get install ctags //安装ctags
这个最后使用了opengrok-0.12.1.5版本,同样下载路径在文末列出。
在home目录下新建一个文件夹bin,然后将tomcat和opengrok解压缩后一起放入,如下:
/home/xxx/bin# ls
apache-tomcat-8.5/ opengrok-0.12.1.5/
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export OPENGROK_INSTANCE_BASE=/home/xxx/bin/opengrok-0.12.1.5
export OPENGROK_TOMCAT_BASE=/home/xxx/bin/apache-tomcat-8.5
cd /home/xxx/bin/opengrok-0.12.1.5/bin
sudo ./OpenGrok deploy
本身openGrok并没有这三个文件夹,需要自己创建。这三个文件夹的用处,这里稍微介绍下:
src-------用于存放源码,即需要通过openGRok的源码
data------用于存放源码的索引数据
etc-------用于配置文件,比如configuration.xml文件
mkdir database
cp database
mkdir src etc data
其实没必要真的去copy一份源码到src,可以通过软连接的方式链接到我们的具体源码路径:
cd /home/xxx/bin/opengrok-0.12.1.5
ln -s /home/xxx/code/Service/ database/src/android
这个src就是默认的源码路径,当然也可以在生成源码索引的时候,再指定路径,这个也是可以的,下面会介绍到。
configuration.xml文件本身并不存在,需要我们自己去生成。configuration.xml文件的在与代码跳转和索引,如果没有这个配置文件,则使用openGrok阅读代码时,无法进行代码跳转。
cd /home/xxx/bin/opengrok-0.12.1.5
java -Djava.util.logging.config.file=/home/xxx/bin/opengrok-0.12.1.5/logging.properties -jar lib/opengrok.jar -c /usr/bin/ctags -s /home/xxx/code/Service/ -d /home/xxx/bin/opengrok-0.12.1.5/database/data/ -H -P -S -G -W /home/xxx/bin/opengrok-0.12.1.5/database/etc/configuration.xml
指定源码路径如下:
/home/xxx/code/Service/
将生成的configuration.xml文件保存到如下路径:
/home/xxx/bin/opengrok-0.12.1.5/database/etc/configuration.xml
将configuration.xml文件配置到tomcat中:
vim /home/xxx/bin/apache-tomcat-8.5/webapps/source/WEB-INF/web.xml
Full path to the configuration file where OpenGrok can read its configuration
CONFIGURATION
/home/xxx/bin/opengrok-0.12.1.5/database/etc/configuration.xml
openGrok依赖于tomcat,所以使用openGrok时,需要先启动tomcat,否则网页无法正常显示,启动方法如下:
cd /home/xxx/bin/apache-tomcat-8.5/bin
./startup.sh //启动tomcat
当更新了configuration.xml文件后,也需要对tomcat进行重启:
./shutdown.sh //先关闭tomcat
./startup.sh //再启动tomcat
这一步就足以使用openGrok了,打开一个你最喜欢的浏览器,打开:
http://localhost:8080/source/
尽情在Android源码的海洋中遨游,畅享吧!
这两个压缩包的下载极慢,这边直接将它们放到百度网盘上了,大家可以通过关注微信公众号【Android系统实战开发】或者扫描如下二维码进行关注,然后在聊天界面回复【opengrok】,则可以获取tomcat和openGrok的压缩包。