搭建本地的源码查询服务器

日常要查源码,比如查到Activity里,想看下Activity的某个方法被谁调用了,有时Android Studio抽风没法继续查,有时你只知道一个方法名不知道是哪个类的,更不好查。http://androidxref.com/确实是个好地方,可需要"科学上网"才行,也比较麻烦。今天介绍一个在本地搭建服务器查代码的方案。

今天要讲的是一个叫opengrok的软件,需要和JDK、tomcat、ctags一起搭配使用,tomcat、ctags也可以使用其他同类工具替代,不过看网上大多数都是这个组合,官方介绍里也提到了tomcat,我就用的这个搭配。目前(2026.4.24)最新的opengrok https://github.com/oracle/opengrok 是1.14.11版本 https://github.com/oracle/opengrok/releases 。不过它现在支持的jdk版本最高只到 21,比较老的版本了。这个安装时要注意,不然运行起来会出错。

1、安装并配置JDK,包括配置环境变量,不多讲。

2、下载并配置Tomcat。也很简单,不过它同样也不支持最新的tomcat,只能使用10.x的版本。

3、下载并配置ctags。https://github.com/universal-ctags/ctags-win32/releases 也需要配置好环境变量path。

4、下载并配置opengrok。 https://github.com/oracle/opengrok/releases

不管是linux还是windows都是下载这个 tar.gz 包。下载完后解压出来,解压后是这样的

开始配置。

(1)创建一个目录(例如叫data)用来存放索引数据,再创建一个目录(例如叫source)存放你要待查询的源码。我要查找的是android framework的源码,已经下载好了,所以我没有新建源码目录。我的这两个目录就分别是 D:\Software\OpenGrokData 和 D:\Software\Android\androidSdk\sources\android-36 。

(2)把OpenGrok的 lib 目录下的 source.war 复制到 tomcat 的 webapps 下,然后启动tomcat(命令行执行 startup),tomcat会自动解压source.war,多出一个 source 目录。完成后关闭tomcat,删除source.war文件,以免白白占据空间。

(3)执行以下命令。注意:把路径换成自己的。

java -jar D:\Software\OpenGrokTar\lib\opengrok.jar ^

-W D:\Software\OpenGrokData\configuration.xml ^

-c D:\Software\Ctags\ctags.exe ^

-s D:\Software\Android\androidSdk\sources\android-36 ^

-d D:\Software\OpenGrokData ^

-P -S -v

静待执行完毕,如果卡住了,不要着急,它其实还在跑,不放心的话,可以按下回车键,可以看到一些最新消息打印。

(4)修改 D:\Software\tomcat\webapps\source\WEB-INF (找自己的路径) 下的 web.xml 文件,将里面的 context-param 改成如下 注意:还是要换成自己的路径

<context-param>

<param-name>CONFIGURATION</param-name>

<param-value>D:\Software\OpenGrokData\configuration.xml</param-value>

</context-param>

好了,搭建完成。可以用startup启动tomcat,然后访问下 http://localhost:8080/source/ 试试了,如果成功了,会是这个样子

相关推荐
考虑考虑1 小时前
nginx配置ssl
运维·后端·nginx
着迷不白1 小时前
Linux 磁盘管理完全指南:分区、文件系统、挂载与 LVM 实战
linux·运维·服务器
山川而川-R1 小时前
LangChain
linux·运维·服务器
QH_ShareHub2 小时前
Linux 根目录结构详解
linux·运维·服务器
骑士雄师2 小时前
langchain:推荐切片策略
服务器·前端·langchain
SkyWalking中文站2 小时前
认识 Horizon UI · 17/17:安装与迁移
运维·监控·自动化运维
千逐682 小时前
Uniapp 鸿蒙实战之 AtomGit APP - 仓库详情与文件树浏览
服务器·microsoft·uni-app
SkyWalking中文站2 小时前
认识 Horizon UI · 16/17:八种语言的本地化
运维·监控·自动化运维
liuyicenysabel3 小时前
多服务上线日记二:
服务器·笔记·学习
单位圆的日常3 小时前
FRP反向隧道实现异地SSH家用Linux
linux·运维·ssh·frp