ubuntu14.04搭建openGrok 1.7.40 + Java17+tomcat10.0.27阅读android系统代码

news2024/11/19 17:29:12

为了快速阅读android系统代码,首选openGrok,其它SI或understand估计不适合了。

话不多说,工欲善其事必先利其器,先下载源码和工具.

以下命令默认使用root,防止权限问题

一、下载android 代码 

还是清华的镜像比较牛逼,直接访问https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

1、先下载repo工具

mkdir ~/bin
PATH=~/bin:$PATH
curl -k https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo

#以上命令也可替换为
curl -k https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo

#curl命令需要加上-k, 不然会出现以下错误而无法下载
#curl: (60) SSL certificate problem: certificate has expired

   2、下载android代码

mkdir ~/work
cd ~/work
wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
tar xf aosp-latest.tar
cd AOSP   # 解压得到的 AOSP 工程目录
# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
repo sync # 正常同步一遍即可得到完整目录
# 或 repo sync -l 仅checkout代码

#这里我是直接用浏览器下载了一个晚上才下载下来^^

到这里android源码是下载下来了

二、搭建opengrok

1、先下载相关工具包, 全部放在~/work/tools目录

 (1)下载jdk-17_linux-x64_bin.tar.gz

Java Downloads | Oracle

https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

(2)下载apache-tomcat-10.0.27.tar.gz

Apache Tomcat® - Apache Tomcat 10 Software Downloads

https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.27/bin/apache-tomcat-10.0.27.tar.gz

(3)下载Python-3.6.4.tgz     ps:下载其它高版本也是可以的

https://www.python.org/downloads/release/python-364/

https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz

(4)下载opengrok-1.7.40.tar.gz

Releases · oracle/opengrok · GitHub

https://github.com/oracle/opengrok/releases/download/1.7.40/opengrok-1.7.40.tar.gz

下载不了可以在这里下载opengrok-1.7.40.tar.gz-Java文档类资源-CSDN下载

2、安装工具

(1)安装Java17

mkdir /usr/local/java
tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/java

#接着就是配置环境变量,即在/etc/profile文件中添加变量JAVA_HOME、变量CLASSPATH ,path中追加jdk可执行文件路径:$JAVA_HOME/bin

1、打开文件
vim /etc/profile
#在末尾添加
export JAVA_HOME=/usr/local/java/jdk-17.0.5
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

2、使环境变量生效
source /etc/profile

3、添加软链接
ln -s /usr/local/java/jdk-17.0.5/bin/java /usr/bin/java

4、检查版本
java -version

PS:经过以上步骤,如果仍安装不成功,可以尝试这样做:

    1.删除系统自带的java环境命令
    rm /usr/bin/java

    2.重新建立软连接:
    ln -s /usr/local/jdk-17.0.5/bin/java /usr/bin/java

    3、再检查版本
    java -version

(2)安装tomcat-10.0.27

cd ~/work
mkdir tools
tar -zxvf apache-tomcat-10.0.27.tar.gz
cd apache-tomcat-10.0.27/bin
./startup.sh #打开服务

#./shutdown.sh  #关闭服务

打开浏览器,在地址栏输入:http://localhost:8080

 tomcat安装成功。

(3)安装Python3.6

【不要卸载系统自带的python2.7和python3.4】(由于多个系统应用依赖自动安装的python,卸载将会卸载所有依赖应用,导致系统出问题或崩溃)

tar -xvf Python-3.6.4.tgz 

cd Python-3.6.4
./configure --with-ssl
make
make install

#执行python3 如果版本不是3.6.4,则软链接安排上
rm /usr/bin/python3
ln -s /usr/bin/python3.6 /usr/bin/python3
 
rm /usr/bin/python3m
ln -s /usr/bin/python3.6m /usr/bin/python3m

检查一下版本:

 (4)安装universal-ctags
不要再使用 Exuberant ctags,因为已经不再维护更新,对于新版本的Opengrok支持度不好,所以先卸载掉:
sudo apt-get remove --purge exuberant-ctags
github地址:https://github.com/universal-ctags/ctags
下载完成后,进入ctags文件夹,依次执行以下命令,完成编译和安装:

apt install autoconf
cd ~/work/tools
git clone https://github.com/universal-ctags/ctags  #下载源码
cd ctags
./autogen.sh
./configure --prefix=~/bin/universal-ctags  # 安装路径, 后面索引就是这个路径
make -j4
make install

 (5)安装opengrok

cd ~/work/tools
tar -xvzf opengrok-1.7.40.tar.gz
mv opengrok-1.7.40 opengrok
cd opengrok
mkdir src data etc    //src 源码路径   // etc 配置    //data 索引

<1>指定android源码位置
原本需要把源码放到src下,因为我的android源代码放在了~/work/aosp,没必要把它整个移动到src下,所以在src下建了个enginner的软连接指向它:

ln -s ~/work/aosp ~/work/tools/opengrok/src #(~/work/tools/opengrok/src : 需要链接的源码路径  ~/work/tools/opengrok/src: src下的链接  

<2>复制source.war到tomcat中:(不用解压,会自动解压)

cp ~/work/tools/opengrok/lib/source.war ~/work/tools/apache-tomcat-10.0.27/webapps/

#如果source.war没有自动解压,则执行以下
mv source.war source.zip
unzip source.zip

编辑source\WEB-INF\web.xml文件,指定要存放configuration.xml的路径。

注意:configuration.xml 目前还是不存在的,只有部署之后程序自动生成。

 (6)开始部署opengrok

java -Xmx4g -jar ~/work/tools/opengrok/lib/opengrok.jar     
-c ~/bin/universal-ctags/bin/ctags     
-s ~/work/tools/opengrok/src     
-d ~/work/tools/opengrok/data -H -P -S -G -v     
-W ~/work/tools/opengrok/etc/configuration.xml     
-U http://localhost:8080/source     -m 256

#-Xmx4g:配置Java 最大堆内存为4g,防止内存溢出。
#-jar:指定opengrok.jar包。
#-c:指定universal-ctags的路径,configure配置的路径,此时使用which ctags得到的路径是/usr/bin/ctags,是会报错的
#-s:指定源码路径,就是上面的新建的src。
#-d:指定索引文件存放路径,就是上面新建的data。
#-W:指定configuration.xml的路径,就是上面新建的etc。
#-m:指定opengrok索引时的缓存大小,默认只有16M。

把如上命令写入openGrok.sh,使用./openGrok.sh运行就可以
 

部署需要的时间比较长,完成后如下图

 

 

ps: 

  • 安装pip3
    • curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
    • sudo python3 get-pip.py

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

农村金融专题-保险支出、收入、补贴各省份涉农贷款数据集

一、31省市农业保险赔付支出 1、数据来源&#xff1a;wind数据库 2、时间跨度&#xff1a;2005-2019年 3、区域范围&#xff1a;全国 4、指标说明&#xff1a; 部分数据如下&#xff1a; 二、各省农业保险保费收入 1、数据来源&#xff1a; 中国保险数据 2、时间跨度&…

「杂谈·II」cmp() 的参数类型应该是啥?

0. 引言 上了一节 DS 课&#xff0c;但是回到了初学 C 的内容…… 众所周知&#xff0c;最小生成树的 Kruskal 要用边表排序&#xff0c;通常是 sort() 配 cmp()。 而 cmp() 的两个参数的类型最好是什么呢&#xff1f; 让我们回到初学 C 的时候&#xff0c;温习一下知识…… 1…

MySQL数据库学习(3)

MySQL中select语句语法简单介绍&#xff1a; 基本语法规则&#xff1a; SELECT {* | <字段列名>} [FROM <表 1>, <表 2>… [WHERE <表达式> [GROUP BY <group by definition> [HAVING <expression> [{<operator> <expression>…

FineReport商业智能数据分析-下拉框控件

1. 概述 1.2 应用场景 「下拉框控件」可应用于填报、参数等场景&#xff0c;本文将介绍「下拉框控件」的属性及应用。 1.2.1 填报控件 填报报表中&#xff0c;可以用来在多个预备选项中选择一个值填入。如下图所示&#xff1a; 1.2.2 参数控件 参数面板处可以通过该控件过…

微服务框架 SpringCloud微服务架构 微服务保护 31 限流规则 31.4 流控效果【warm up】

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 微服务保护 文章目录微服务框架微服务保护31 限流规则31.4 流控效果【warm up】31.4.1 流控效果31.4.2 流控效果 - warm up31.4.3 案例31 限…

[论文阅读] 颜色迁移-Illuminant Aware Gamut-Based

[论文阅读] 颜色迁移-Illuminant Aware Gamut-Based 文章: [Illuminant Aware Gamut-Based Color Transfer], [python代码] 本文目的是提出一种新的颜色迁移算法, 可以感知光源变化的全色域颜色迁移方法. 1-算法原理 图像是由摄像机对光谱场景内容和场景照度的敏感性所产生…

springboot validated注解数据校验 异常处理

springboot validated 数据校验validated 数据校验简单的写一下这个用法啊&#xff0c;清晰的本篇文章就记录这个注解的一个用法。validated 数据校验 我们一般的数据校验是怎么用的&#xff1f;在常规模式下我们可能就是在前端去通过js去判断&#xff1f;还是在后端重新查找数…

【C语言字符串相关函数大全】

【C语言字符串相关函数大全】【1】atof【2】atoi【3】atol【4】isalnum【5】isdigit【6】islower【7】isupper【8】isprint【9】memchr【10】memcmp【11】memcpy【12】memset【13】strcat【14】strchr【15】strcmp【16】strpbrk【17】strstr【18】strtok【19】源码【20】源码执…

Mipmap的作用以及其优势和缺点

Mipmap的作用以及其优势和缺点 定义 Mipmap,又叫做多级渐进贴图纹理映射,作用在游戏的纹理贴图,根据渲染物体距离相机的远近,选用不同大小的纹理贴图; 作用 可以使得远处的像素不发生闪烁;减小带宽;减小带宽的原理 说到MipMap可能很多人都会觉得,只是开启后会增加内…

Vue3 学习笔记 —— 函数式编程、createVNode、render、h 函数

目录 2. createVNode()、render() 2.1 初步使用 createVNode()、render() 2.2 h 函数源码分析 3. 使用 h 函数的几种方法 3.1 h 函数 接收的参数 3.2 h 函数 使用方法 4. 通过 h 函数实现 button 组件 4.1 使用 props 接收传入组件的参数 4.2 使用 emit 向组件外发送事…

自动化运维工具—Ansible概述及命令行模块

一.自动化运维工具—Ansible概述及命令行模块 1.1 Ansible是什么 Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pubbet和Saltstack能实现的功能&#xff0c;Ansible基本上都可…

机器人手臂四旋翼的笛卡尔阻抗控制(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 当机器人手指与障碍物接触时,呈现出2阶机械阻抗特性。在阻抗控制算法中,不需直接计算加速度,从而避免了因大加速度误差给控制带…

leetcode 473. 火柴拼正方形-思路整理与细节分析

题目&#xff1a; 你将得到一个整数数组matchsticks&#xff0c;其中 matchsticks[i]是第i个火柴棒的长度。你要用所有的火柴棍拼成一个正方形。你不能折断任何一根火柴棒&#xff0c;但你可以把它们连在一起&#xff0c;而且每根火柴棒必须使用一次。如果你能使这个正方形&am…

FPGA新起点V1开发板(五)——Modelsim软件的使用(联合仿真)

文章目录一、简介1.1 前仿真1.2 后仿真二、联合仿真2.1 选择modesim的安装路径2.2 设置选择eda的工具2.3 test bench文件2.4 打开test bench文件2.5 给系统时钟和复位信号赋初值2.6 配置仿真功能三、RTL仿真3.1 打开波形窗口3.2添加内部信号四、时序仿真一、简介 1.1 前仿真 主…

web大学生网页作业成品 响应式网站水果超市7页(html+css+javascript+jquery+bootstarp)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

web期末大作业 用HTML+CSS做一个漂亮简单的节日网页【传日文化节日中秋节】

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

web前端期末大作业—— HTML+CSS豪华车 (9页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

蚂蚁金服开源的这份SpringBoot笔记,曾在24小时内GitHub星标48k

前言 Spring的影响力想必就不用小编多说了&#xff0c;今天要跟大家说的是SpringBoot。Spring Boot作为目前Spring技术体系中炙手可热的框架之一&#xff0c;已经是开发者们的必备神器了。在实际的项目中&#xff0c;需要集成各种的插件支持&#xff0c;还有很多或许我们平时不…

【计算机考研408-计算机网络-教书匠视频笔记】主机访问浏览器的全部过程

主机H1利用浏览器通过该域名请求访问web服务器 由于题目给定主机H1的ARP表是空的 &#xff08;1&#xff09;主机H1首先会发送ARP请求报文&#xff0c;ARP请求报文会被封装在以太网的MAC帧中发送 ARP请求报文&#xff1a;FF-FF-FF-FF-FF-FF 源MAC地址&#xff1a;00-11-22-3…

Docker 容器使用

文章目录Docker 容器使用Docker 客户端运行一个web应用查看 WEB 应用容器网络端口的快捷方式查看WEB应用程序日志查看WEB应用程序容器的进程检查WEB应用程序停止WEB应用容器重启WEB应用容器移除WEB应用容器Docker 容器使用 Docker 客户端 docker 客户端非常简单 ,我们可以直接…