我是靠谱客的博主 鲜艳白羊,最近开发中收集的这篇文章主要介绍android查找代码,通过opengrok实现android整套代码的快速搜索,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

整个Android代码非常复杂,涉及到各种类型的文件,要做完整的搜索非常困难,给开发带来很大的不便。对于aosp的代码,可以通过http://androidxref.com/这个网址搜索,但是对于有平台vendor的开发代码来说就很困难。所以借用开源的opengrok自建一个搜索服务。

第一步:安装tomcat,这个比较简单

$ sudo apt-get install exuberant-ctags tomcat8

$ sudo /etc/init.d/tomcat8 restart

浏览器中打开http://localhost:8080/,出现下图说明tomcat8没问题。

b5665121e136

第二步:布署 opengrok

在https://github.com/OpenGrok/OpenGrok/releases下载OpenGrok安装包,比如opengrok-1.0,解压安装包。OpenGrok提供了现成的脚本可是自动布署,首先到前面解压后的目录,运行以下命令。其中环境变量OPENGROK_TOMCAT_BASE为tomcat所在路径(tomcat7貌似脚本自己能找到,tomcat8自动找不到,所以人肉指定)。

$ sudo OPENGROK_TOMCAT_BASE=/var/lib/tomcat8 ./OpenGrok deploy,

这样就在tomcat的webapps目录下有了source目录

这步之后浏览器打开http://localhost:8080/source/,应该能看到下面的页面,但现在是空的。

b5665121e136

布署后最好重启一下tomcat,否则可以提示找不到config文件。

第三步:建立索引

建立索引有两种方式,

第一种:

假如代码在/home/jzj/source/Android/7.1下的话:用OpenGrok脚本生成,如下:

$ sudo ./OpenGrok index /home/jzj/source/android/7.1/

第二种,直接执行opengrok.jar,这种方式相对比较灵活,而且可以配置source root 和data root,可以配置多项目,所以建议用这种。

sudo java -jar opengrok.jar -P -S -v -s /home/xhw241/opengrok-1.0/code -d /var/opengrok/etc -W /var/opengrok/etc/configuration.xml

-P表示为 source root 目录下的每个一级子目录生成一个工程。

-S表示搜索并添加 “external” source repositories。

-v表示打印操作的进度信息。

-s表示指定 source root, source root 就是代码放置的路径,指定这个目录后,可以在目录下面建子目录,一个子目录就是对应一个project,可以配置多项目,在搜索界面选择project。

-d表示指定 data root,这个目录里面是生成的索引信息,还有configuration文件,里面放的项目配置信息。这个configuration.xml文件的路径在tomcat的source目录里面WEB_INF里面的web.xml里面配置路径。

-W表示指定将配置写到该文件。

还有更多配置选项可以使用java -jar /path/to/opengrok.jar查看。

第四步:启动定时任务更新代码和索引

通过 crontab -e 建立定时任务

(/bin/bash $PATH/auto_sync.sh 1 > $PATH/cron_log.txt 2>&1)

#! /bin/bash

SRC_PATH="/home/qqq/svn_code"

OpenGrok_PATH="/home/qqq/opengrok-1.0/lib"

data_root_path = ''your path"

source_root_path = "your path"

function svn_sync()

{

#repo forall -c 'git reset --hard; git clean -f -d -x'

#repo sync -j4

svn update -q

date

}

function opengrok_index()

{

cd $OpenGrok_PATH

#./OpenGrok index

java -jar opengrok.jar -P -S -v -s $source_root_path  -d $data_root_path -W $data_root_path/configuration.xml

date

}

function main_sync()

{

echo "start sync==============================="

dir=$(ls -l  $SRC_PATH |awk '/^d/ {print $NF}')

for i in $dir

do

echo $i

if [ -d $i ];then

echo "=================================="

echo "To be sync branch ==>>>>>>>>>>>>>$i "

cd $i

svn_sync

cd ..

else

echo "The Folder is not exist"

fi

done

echo "svn sync done, start opengrok"

echo "======================================"

}

main_sync

#opengrok_index

echo "==========================================="

/etc/init.d/tomcat8 restart

echo "End!!!"

这个脚本如果不是root用户运行可能会有权限问题,可以在基本里面要执行的命令前加 echo pwd | sudo -S ....

最后

以上就是鲜艳白羊为你收集整理的android查找代码,通过opengrok实现android整套代码的快速搜索的全部内容,希望文章能够帮你解决android查找代码,通过opengrok实现android整套代码的快速搜索所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部