前言
最近在看Android源码,经常访问的在线网站忽然报错,打不开。
于是想着,能不能在本地搭建一个阅读环境。耗费一下午的时间,在Windows上搭建成功了。但说实话,非必要不建议师傅们通过此方式搭建源码较大的opengrok源码阅读环境。
以我搭建的android-8.0.0_r1
的本地环境举例,本身源码9GB,opengrok将代码中关键词添加索引之类的,有需要额外的16GB。对本身磁盘有限的电脑不友好。
同时,opengrok对Android进行索引的时候,耗费时间很长。我给了Java 32GB的内存,也要5:19:23到7:28:42,两个多小时,才完成了。
如果想要阅读Android源码,推荐几个在线阅读的网站:
- https://xrefandroid.com/
- https://cs.android.com/android/platform/superproject/main?hl=zh-cn
- http://aospxref.com/android-8.0.0_r36/ 目前打不开
下面分享如何使用opengrok
搭建源码阅读环境。opengrok
可以用官方的docker,我这里用的是Windows本地搭建。
opengrok
docker地址:https://hub.docker.com/r/opengrok/docker/
环境和版本
- Windows11
- JDK21
- apache-tomcat-10.1.42
- opengrok https://github.com/oracle/opengrok/releases/tag/1.14.0
- ctags https://github.com/universal-ctags/ctags-win32/releases/tag/v6.1.0
下载android指定版本的源码:aosp的国内可以访问清华源,参考:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
这个repo貌似只能linux之类用,windows的环境不太好搭建。
RuoYi测试
因为Android源码很大,编译时间长,先用一个小的项目看能否跑通,跑通了再尝试。
git clone https://github.com/yangzongzhuan/RuoYi.git
java -Xms32g -Xmx32g -jar D:code_source_readeropengrok-1.14.0libopengrok.jar -P -S -v -s E:codesourceRuoYi -d E:codesourceRuoYi_data -W E:codesourceRuoYi_dataconfiguration.xml -c "E:aospctags-v6.1.0-x64ctags.exe"
- -Xms32g -Xmx32g 配置给Java的最大和最小内存是32g,这个给多少g看师傅们的真实情况,建议给主机的一半内存
- -P 表示为 source root 目录下的每个一级子目录生成一个工程。
- -S 表示搜索并添加 "external" source repositories。
- -v 表示打印操作的进度信息。
- -s 表示指定 source root。
- -d 表示指定 data root。
- -W 表示指定将配置configuration.xml写到该文件。
如果运行成功了,会生成文件E:codesourceRuoYi_dataconfiguration.xml
tomcat配置
从opengrok-1.14.0lib下复制source.war
到tomcat的webapps下
运行tomcat bin目录下的startup.bat,初次开启时,会解压source.war到source目录。
修改webappssourceWEB-INF
目录下配置文件web.xml
搜索关键词configuration.xml
,将默认路径替换为上一步的configuration.xml路径,比如:
<context-param> <param-name>CONFIGURATION</param-name> <param-value>E:/codesource/RuoYi_data/configuration.xml</param-value> </context-param>
再次启动tomcat
set JAVA_HOME=C:Program FilesJavajdk-21 D:code_source_readerapache-tomcat-10.1.42binstartup.bat
访问 http://localhost:8080/source/
成功
源码阅读
Android8
上一步成功后,尝试使用 opengrok.jar 调用 ctags 来为源码建立android-8索引。命令行:
java -Xms32g -Xmx32g -jar D:code_source_readeropengrok-1.14.0libopengrok.jar -P -S -v -s E:aospandroid-8.0.0_r1 -d E:aospandroid-8.0.0_r1_data -W E:aospandroid-8.0.0_r1_dataconfiguration.xml -c "E:aospctags-v6.1.0-x64ctags.exe"
tomcat修改source目录下的web.xml
访问 http://localhost:8080/source/
就可以像在线访问一样,查看Android源码了。
参考资料
- 搭建大型源码阅读环境——使用 OpenGrok https://developer.aliyun.com/article/1632216
- Ubuntu18.04下搭OpenGrok阅读Android 11.0源码 https://zhaoyf.cn/2021/03/20/android-opengrok/
- Ubuntu下搭建OpenGrok浏览Android源码 https://skypx.github.io/2019/08/25/data_Ubuntu&OpenGrok/
- https://github.com/wurensen/aosp-learning
欢迎关注公众号~~~
原文始发于微信公众号(进击的HACK):opengrok搭建Android源码阅读环境
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论