美文网首页android源码
通过opengrok实现android整套代码的快速搜索

通过opengrok实现android整套代码的快速搜索

作者: refactorMe | 来源:发表于2018-11-24 16:14 被阅读1397次

整个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没问题。

第二步:布署 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/,应该能看到下面的页面,但现在是空的。

布署后最好重启一下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 ....  

相关文章

  • 通过opengrok实现android整套代码的快速搜索

    整个Android代码非常复杂,涉及到各种类型的文件,要做完整的搜索非常困难,给开发带来很大的不便。对于aosp的...

  • 源码阅读工具 - OpenGrok

    简介: OpenGrok一个快速、便于使用的源代码搜索与对照引擎。它帮助你搜索,对照,定位你的源代码树。它能够明白...

  • OpenGrok环境搭建

    OpenGrok介绍 OpenGrok为一个方便快速的源码搜索及交叉引用查询引擎。它以Java编写,可用于源码搜索...

  • windows 安装 OpenGrok 用来读源码

    windows 安装 OpenGrok 用来读源码 想看一下 android api demos 源代码,记得知乎...

  • 代码阅读工具opengrok

    代码阅读工具opengrok

  • opengrok搭建

    opengrok是看代码的利器,主页为 https://github.com/oracle/opengrok 下载...

  • 2021-09-08 opengrok比lxr先进

    在同样的Ubuntu服务器上,OpenGrok的效率比LXR要高很多。扫描整个Android AOSP代码,LXR...

  • Android 首次蒙层指引-NewbieGuide使用

    一、前言: Android 快速实现新手引导层的库 这是一款可以通过简洁链式调用,一行代码实现引导层的显示,自动判...

  • OpenGrok 认证

    将gitlab上的项目作为OpenGrok的输入,直接可以搜索全量代码。需要做基本的认证。 申请内部域名,支持域名...

  • OpenGrok 搜索用法

    部署安装OpenGrok {O之后需要使用—— 主页的Help按钮包含了基础的使用方法 官方API调用说明文档:o...

网友评论

    本文标题:通过opengrok实现android整套代码的快速搜索

    本文链接:https://www.haomeiwen.com/subject/qogcqqtx.html