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

日常要查源码,比如查到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/ 试试了,如果成功了,会是这个样子

相关推荐
九硕智慧建筑一体化厂家3 小时前
数字化管控落地,直流照明构筑安全照明体系
运维·人工智能·笔记·安全·智慧城市
波波0074 小时前
C# 15 重磅新特性: 带标签 break 与 continue:重新定义嵌套循环控制流
服务器·前端·c#
刘某的Cloud5 小时前
ceph osd 导入导出 rbd volume 卷
linux·运维·ceph·volume
隔窗听雨眠6 小时前
GBase 8s并发控制深度解析:封锁机制、隔离级别与死锁处理全攻略
服务器·数据库·oracle
神奇霸王龙7 小时前
Agent 准入门控屠夫:5 旗舰 4 维度评估
linux·运维·数据库·ai·ai作画·agent·ai编程
鲸采云SRM采购管理系统7 小时前
采购管理系统哪家好?2026最新测评对比
java·服务器·数据库
cfm_29147 小时前
基于Binlog实现不停机数据库平滑迁移技术
运维·数据库·架构
迪康Defender8 小时前
AI 重构终端安全运营:智能分析中枢 AI Insight 模块架构与落地场景深度解析
运维·网络·人工智能·其他·安全·重构·架构
那年窗外下的雪.8 小时前
AIDC 学习日志 第 04 天 BGP Underlay 基础与路由选择
服务器·学习·php
0x538 小时前
Java网络编程(二)
java·服务器·网络