前言
閱讀Android源碼這樣龐大的代碼,沒有一個趁手的工具,會比較難受。之前都是通過vim來閱讀源碼,但沒有做相關的vim插件配置,所以每次都需要進行grep,效率極低。後來嘗試在ubuntu中使用sourceinsight,效果也不是特別好,不流暢,而且同步代碼時比較慢(可能是我電腦性能問題)。後面嘗試了openGrok,一個讓我欲罷不能的閱讀源碼的工具。
但在搭建openGrok的時候,還是遇到了不少問題,可能openGrok或者tomcat版本不對,或者我配置的方法問題,導致一直踩坑。這裏分享下搭建openGrok的方法和過程。
概述
openGrok依賴於tomcat,所以使用openGrok需要安裝tomcat。廢話少說,進入準備工作。
準備工作
java1.8安裝
這個網上百度進行安裝就好,不在這裏贅述。
tomcat下載
網上有很多的下載資源,但使用總是失敗,最後使用了apache-tomcat-8.5版本,文末會列出下載的地方。
ctags下載
sudo apt-get install ctags //安裝ctags
openGrok下載
這個最後使用了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
創建src,etc,data
本身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文件本身並不存在,需要我們自己去生成。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
<context-param>
<description>Full path to the configuration file where OpenGrok can read its configuration</description>
<param-name>CONFIGURATION</param-name>
<param-value>/home/xxx/bin/opengrok-0.12.1.5/database/etc/configuration.xml</param-value>
</context-param>
啓動tomcat
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源碼的海洋中遨遊,暢享吧!
關於tomcat和openGrok的下載地址
這兩個壓縮包的下載極慢,這邊直接將它們放到百度網盤上了,大家可以通過關注微信公衆號【Android系統實戰開發】或者掃描如下二維碼進行關注,然後在聊天界面回覆【opengrok】,則可以獲取tomcat和openGrok的壓縮包。