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

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

相关推荐
Promise微笑5 分钟前
2026电缆故障定位仪:缆故障定位仪精准选型与高效避坑指南
运维·人工智能·重构
爱喝水的鱼丶6 分钟前
SAP-ABAP:新手入门篇——从0到1写出你的第一个ABAP Hello World程序并完成调试运行
运维·服务器·数据库·学习·sap·abap
学术小李28 分钟前
VSCode上传文件到服务器
服务器·vscode·sftp·数据上传
MY_TEUCK1 小时前
【2026最新Linux虚拟机安装】Linux 虚拟机安装VMware 17 + CentOS 7
linux·运维·centos
Rust研习社1 小时前
Ubuntu 全面拥抱 Rust 后,我意识到 Rust 社区要变了
linux·服务器·开发语言·后端·ubuntu·rust
再战300年1 小时前
nginx之负载均衡
运维·nginx·负载均衡
Land03291 小时前
指纹浏览器自动化集成方案|多浏览器RPA适配实战记录
运维·人工智能·爬虫·python·selenium·自动化·rpa
hahaha 1hhh2 小时前
用SSH 建立了一个本地端口转发隧道,用于安全地访问远程服务器上的服务,后台运行。autodl
服务器·安全·ssh
霍格沃兹测试学院-小舟畅学2 小时前
浏览器自动化的下一层:为什么 CloakBrowser 把指纹问题推到了源码层?
运维·自动化
YuanDaima20482 小时前
Docker 核心架构与底层技术原理解析
运维·人工智能·docker·微服务·容器·架构·个人开发