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

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

相关推荐
冰封之寂8 分钟前
Docker 资源管理终极指南:CPU、内存与 IO 的精细化控制
linux·运维·服务器·docker·云计算
小柯南敲键盘1 小时前
图片翻译API接入与自动化实现指南
运维·python·自动化
云计算磊哥@2 小时前
运维开发宝典058-大型网站nginx服务器管理全集4
服务器·nginx·运维开发
952362 小时前
Docker - 基础
运维·后端·docker·容器
Promise微笑2 小时前
智能激光清障仪选型指南:高效运维与安全保障的关键考量
运维·安全
Code_Ignis2 小时前
docker国内可用源(持续维护)
运维·docker·容器
一叶龙洲2 小时前
向日葵远程Ubuntu,支持隐私屏
linux·运维·ubuntu
酷可达拉斯3 小时前
Linux操作系统-shell编程之Grep与正则表达式
linux·运维·服务器·正则表达式·centos
baozhengw3 小时前
信创改造-SpringBootJar包改为WAR包部署Tomcat
java·tomcat
我星期八休息6 小时前
网络编程—UDP与TCP
linux·运维·网络·数据库·网络协议·tcp/ip·udp