Android Framework开发之Linux +Vim命令
一、linux常用命令
在Android源码开发中,Linux命令的运用是至关重要的。这些命令不仅帮助开发者有效管理文件、目录和系统资源,还能在源码编译、调试和排错过程中发挥关键作用。以下是对Android源码开发中常用Linux命令的更详细介绍:
当然可以,以下是对Android源码开发中常用Linux命令的更详细介绍,并带有具体举例:
-
文件和目录操作:
-
ls:列出目录内容。ls -l # 以长格式列出当前目录的内容,包括文件权限、所有者、大小等ls -a # 显示包括隐藏文件在内的所有文件 -
cd:改变当前工作目录。cd /path/to/directory # 切换到指定路径的目录cd .. # 切换到上一级目录 -
pwd:显示当前工作目录的完整路径。pwd # 显示当前工作目录 -
cp:复制文件或目录。cp source.txt destination.txt # 将source.txt复制到destination.txtcp -r sourcedir/ targetdir/ # 递归复制目录及其内容 -
mv:移动或重命名文件或目录。mv oldname.txt newname.txt # 将oldname.txt重命名为newname.txtmv file.txt directory/ # 将file.txt移动到directory目录中 -
rm:删除文件或目录。rm filename.txt # 删除文件rm -r directoryname/ # 递归删除目录及其内容 -
mkdir:创建新目录。mkdir newdir # 在当前目录下创建名为newdir的新目录 -
rmdir:删除空目录。rmdir emptydir # 删除名为emptydir的空目录
-
-
系统信息查询:
-
uname:显示系统信息。uname -a # 显示详细的系统信息,包括内核名称、主机名、内核版本号等 -
df:显示磁盘空间使用情况。df -h # 以人类可读的格式显示磁盘空间使用情况 -
top:实时显示系统状态。top # 显示系统中各个进程的资源占用情况,包括CPU使用率、内存占用等
-
-
查找和搜索:
-
find:在目录树中查找文件。find /path/to/start -name "*.txt" # 从指定路径开始,查找所有以.txt结尾的文件 -
grep:在文件中搜索指定的字符串或模式。grep "search_string" filename.txt # 在filename.txt中搜索包含"search_string"的行
-
-
Android源码编译相关:
-
make:编译Android源码。make -j4 # 使用4个线程进行编译,可以根据CPU核心数调整-j后面的数字 -
mm:只编译当前目录下的模块。mm # 在源码目录的某个模块目录下执行,只编译该模块 -
mmm:编译指定目录下的模块。mmm <path/to/module> # 编译指定路径下的模块
-
-
查看日志和调试:
-
adb logcat:查看Android设备的日志输出。adb logcat -d # 导出日志到控制台adb logcat -s TAG_NAME # 只显示特定标签的日志 -
adb shell:进入Android设备的shell环境。adb shell # 进入设备shelladb shell ps # 在设备shell中查看进程列表
-
-
其他常用命令:
-
chmod:改变文件或目录的权限。chmod 755 script.sh # 将script.sh的权限设置为755,即所有者有读/写/执行权限,组用户和其他用户有读/执行权限 -
chown:改变文件或目录的所有者和所属组。chown user:group filename.txt # 将filename.txt的所有者设置为user,所属组设置为group -
tar:打包或解包文件。tar -czvf archive.tar.gz directory/ # 将directory目录打包成archive.tar.gztar -xzvf archive.tar.
-
-
gzip:压缩或解压文件。gzip filename.txt # 压缩filename.txt为filename.txt.gzgunzip filename.txt.gz # 解压filename.txt.gz为filename.txt -
cat:查看文件内容或合并文件。cat filename.txt # 查看filename.txt的内容cat file1.txt file2.txt > combined.txt # 将file1.txt和file2.txt的内容合并到combined.txt -
grep -r:递归搜索指定字符串或模式。grep -r "search_string" /path/to/start # 从指定路径开始,递归搜索包含"search_string"的文件和行 -
find -exec:在查找到的文件上执行命令。find /path/to/start -name "*.txt" -exec grep "search_string" {} \; # 查找所有.txt文件并执行grep搜索 -
diff:比较两个文件的不同。diff file1.txt file2.txt # 比较file1.txt和file2.txt的不同之处 -
chmod +x:为文件添加可执行权限。chmod +x script.sh # 为script.sh添加可执行权限 -
ln:创建链接。ln -s source.txt link_to_source.txt # 创建source.txt的软链接link_to_source.txt -
du:查看目录或文件的磁盘使用情况。du -sh directory/ # 显示directory目录的总磁盘使用情况,以人类可读的格式 -
wc:统计文件中的行数、字数和字节数。wc filename.txt # 统计filename.txt的行数、字数和字节数 -
head和tail:查看文件的开头或结尾部分。head filename.txt # 查看filename.txt的前几行(默认为10行)tail -n 20 filename.txt # 查看filename.txt的最后20行 -
date:显示或设置系统日期和时间。date # 显示当前日期和时间date +"%Y-%m-%d" # 以指定的格式显示日期 -
history:查看命令历史记录。history # 显示最近执行的命令列表
二、VIM的常用命令
在Android源码开发中,使用VIM作为文本编辑器,可以大大提高开发效率。以下是VIM在Android源码开发中常用的一些命令,并附上详细的举例说明:
文件操作与导航
1. 打开文件
vim path/to/file.java
例如,要打开frameworks/base/core/java/android/content/Context.java文件,你可以执行:
vim frameworks/base/core/java/android/content/Context.java
2. 保存并退出
:wq
在编辑完文件后,使用:wq命令保存所做的修改并退出VIM。
光标移动与文本选择
1. 光标移动
h 向左移动一个字符j 向下移动一行k 向上移动一行l 向右移动一个字符
例如,要向下移动5行,可以连续按5次j键,或者直接按5j。
2. 行内跳转
0 跳转到行首^ 跳转到行首第一个非空白字符$ 跳转到行尾
3. 文件内跳转
gg 跳转到文件开头G 跳转到文件结尾50G 跳转到第50行
文本编辑
1. 插入文本
i 在当前字符前插入文本I 在当前行首插入文本a 在当前字符后插入文本A 在当前行尾插入文本o 在当前行下方新开一行并进入插入模式O 在当前行上方新开一行并进入插入模式
例如,要在当前行下方插入一行新代码,可以按o键,然后输入新代码。
2. 删除文本
x 删除当前字符dd 删除当前行dw 删除当前单词
3. 复制与粘贴
yy 复制当前行p 在当前行下方粘贴P 在当前行上方粘贴
查找与替换
1. 查找
/keyword 向前查找关键词n 查找下一个匹配项N 查找上一个匹配项
例如,要查找Intent类在文件中的所有引用,可以使用/Intent命令,然后按n键查找下一个匹配项。
2. 替换
:%s/old/new/g 替换文件中所有old为new:%s/old/new/gc 替换前询问确认
例如,要将文件中所有的startActivity替换为startActivityForResult,并在每次替换前确认,可以使用:%s/startActivity/startActivityForResult/gc命令。
折叠与展开代码
1. 折叠代码
zc 折叠当前行及其下方的所有行zf 创建一个新的折叠
2. 展开代码
zo 展开当前折叠zR 展开所有折叠
高级功能
1. 多文件编辑
使用:e命令可以在不退出VIM的情况下打开多个文件,并使用:bn和:bp命令在文件间切换。
2. 宏录制与执行
qa 开始录制宏到寄存器a... 执行一系列操作q 停止录制@a 执行寄存器a中的宏
例如,你可以录制一个宏来自动格式化一段代码,然后在需要的地方重复执行这个宏。
相关文章:
Android Framework开发之Linux +Vim命令
一、linux常用命令 在Android源码开发中,Linux命令的运用是至关重要的。这些命令不仅帮助开发者有效管理文件、目录和系统资源,还能在源码编译、调试和排错过程中发挥关键作用。以下是对Android源码开发中常用Linux命令的更详细介绍: 当然可…...
MySQL 索引的10 个核心要点
文章目录 🍉1. 索引底层采用什么数据结构?为什么不用hash🍉2. B树与B树区别?为何用B树?🍉3. 自增主键理解?🍉4. 为什么自增主键不连续🍉5. Innodb为什么推荐用自增ID&…...
MaixSense-A010 接入 ROS
MaixSense 是什么 MaixSense 系列产品搭载 TOF 深度摄像头,目前有 MaixSense-A010 和 MaixSense-A075V 两款产品。 MS-A010 是一款由 BL702 炬佑 100x100 TOF 模组所组成的极致性价比的 TOF 3D 传感器模组,最大支持 100x100 的分辨率和 8 位精度&…...
使用WordPress在US Domain Center上建立招聘网站的详细教程
第一部分:介绍招聘网站 招聘网站是指用于发布招聘信息、吸引求职者、进行简历筛选和管理招聘流程的网站。在WordPress中,您可以轻松地创建一个功能齐全的招聘网站,以便企业能够方便地管理招聘流程,并为求职者提供信息和应聘渠道。…...
C++:类和对象(上篇)
目录: 一:面向对象和过程的介绍 二:类的引入 三:类的定义 四:类的访问限定符以及封装 五:类的作用域 六:类的实例化 七:类对象大小的计算 八:类成员函数的this指…...
氧化铝电容的工艺结构原理及选型参数总结
🏡《总目录》 目录 1,概述2,工作原理3,结构特点4,工艺流程4.1,材料准备4.2,氧化处理4.3,薄膜处理4.4,电极制作4.5,封装4.6,测试与筛选5,选型参数5.1,电容量(Capacitance)...
野火ESP8266模块开发-基于Arduino IDE
一、野火ESP8266模块介绍 ESP8266 拥有高性能无线 SOC,给移动平台设计师带来福音,它以最低成本提供最大实用性,为 WiFi 功能嵌入其他系统提供无限可能。ESP8266 是一个完整且自成体系的 WiFi 网络解决方案,能够独立运行࿰…...
[Qt学习笔记]Qt实现自定义控件SwitchButton开关按钮
1、功能介绍 在项目UI中使用较多的打开/关闭的开关按钮,一般都是找图片去做效果,比如说如下的图像来表征打开或关闭。 如果想要控件有打开/关闭的动画效果或比较好的视觉效果,这里就可以使用自定义控件,使用Painter来绘制控件。软…...
【工具】mac 环境配置
【待补充 】 一、maven配置 vim ~/.bash_profile export M3_HOME/Users/chenyang/java_utils/apache-maven-3.6.1 export PATH$PATH:$M3_HOME/bin //mvn -v提示Permission denied 没有权限访问 chmod ax /Users/chenyang/java_utils/apache-maven-3.6.1/bin/mvn 二、java…...
【前端寻宝之路】学习和总结HTML的标签属性
🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| 💫个人格言:“没有罗马,那就自己创造罗马~” 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不…...
kafka2.x版本配置SSL进行加密和身份验证
背景:找了一圈资料,都是东讲讲西讲讲,最后我还没搞好,最终决定参考官网说明。 官网指导手册地址:Apache Kafka 需要预备的知识,keytool和openssl 关于keytool的参考:keytool的使用-CSDN博客 …...
Linux和Windows下的文件批量重命名
一、Linux下文件批量重命名 rename命令说明: Usage: rename [options] … Rename files. Options: -v, --verbose explain what is being done -s, --symlink act on the target of symlinks -n, --no-act do not make any changes -o, --no-overwrite don’t overw…...
stm32之GPIO电路介绍
文章目录 1 GPIO介绍2 GPIO的工作模式2.1 浮空输入2.2 上拉输入2.3 下拉输入2.4 模拟输入2.5 开漏输出2.6 推挽输出2.7 复用开漏输出2.8 复用推挽输出2.9 其他 3 应用方式4 常用库函数 1 GPIO介绍 保护二极管:保护引脚,让引脚的电压位于正常的范围施密特…...
Unity Toggle处理状态变化事件
Toggle处理状态变化事件,有两个方法。 法一、通过Inspector面板设置 实现步骤: 在Inspector面板中找到Toggle组件的"On Value Changed"事件。单击""按钮添加一个新的监听器。拖动一个目标对象到"None (Object)"字段&am…...
UE5.1 iClone8 正确导入角色骨骼与动作
使用iClone8插件Auto Setup 附录下载链接 里面有两个文件夹,使用Auto Setup C:\Program Files\Reallusion\Shared Plugins 在UE内新建Plugins,把插件复制进去 在工具栏出现这三个人物的图标就安装成功了 iClone选择角色,导入动作 选择导出FBX UE内直接导入 会出现是否启动插件…...
FFmpeg-- c++实现:pcm和yuv编码
文章目录 流程音频视频 api核心代码audioencoder.haudioencoder.cppvideoencoder.hvideoencoder.cpp pcm和yuv编码为aac和h264,封装为c的AudioEncoder类和VideoEncoder类 流程 音频 初始化音频参数 int InitAAC(int channels, int sample_rate, int bit_rate); 音…...
图解CodeWhisperer的安装使用
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 📘 CodeWhisperer简介 &#…...
Python内置对象
Python是一种强大的、动态类型的高级编程语言,其内置对象是构成程序的基础元素。Python的内置对象包括数字、字符串、列表、元组、字典、集合、布尔值和None等,每种对象都有特定的类型和用途。 01 什么是内置对象 这些对象是编程语言的基础构建块&…...
开源数据集 nuScenes 之 3D Occupancy Prediction
数据总体结构 Nuscenes 数据结构 可以看一下我的blog如何下载完整版 mmdetection3d ├── mmdet3d ├── tools ├── configs ├── data │ ├── nuscenes │ │ ├── maps │ │ ├── samples │ │ ├── sweeps │ │ ├── lidarseg (o…...
物联网竞赛板CubMx全部功能简洁配置汇总
目录 前言:1、按键&LED灯配置:2、OLED配置:3、继电器配置:4、LORA模块配置:5、矩阵模块:6、串口模块:7、RTC配置:8、ADC模块配置:9、温度传感器模块:后续…...
别再死记硬背了!用C语言递归搞定二叉树遍历转换(PTA真题7-1保姆级解析)
从手算到代码:二叉树遍历转换的思维跃迁 当你在PTA或LeetCode上遇到"已知后序和中序遍历求先序遍历"这类题目时,是否也曾陷入"先建树再遍历"的思维定式?实际上,这类问题的核心在于发现遍历序列间的隐藏规律&a…...
Reference Extractor:如何高效提取Word文档中的Zotero和Mendeley引用?
Reference Extractor:如何高效提取Word文档中的Zotero和Mendeley引用? 【免费下载链接】ref-extractor Reference Extractor - Extract Zotero/Mendeley references from Microsoft Word files 项目地址: https://gitcode.com/gh_mirrors/re/ref-extra…...
别再重跑模拟了!手把手教你修复LAMMPS的dump轨迹,让它变成MDAnalysis能读的标准XYZ
从LAMMPS到MDAnalysis:零成本修复非标准轨迹文件的工程化实践 当你在凌晨三点完成长达72小时的分子动力学模拟,满心欢喜准备用MDAnalysis分析轨迹时,突然发现LAMMPS输出的dump文件根本无法被读取——这种崩溃感每个计算化学研究者都深有体会。…...
别再只会写required了!Element UI Form表单rules的10个高级玩法(含自定义校验函数)
解锁Element UI表单校验的隐藏能力:10个高阶规则实战指南 在Vue生态中,Element UI凭借其优雅的表单组件成为中后台开发的首选。但大多数开发者仅仅停留在required: true的基础校验层面,实际上其基于async-validator的校验系统蕴藏着令人惊喜的…...
从源码到应用:在openEuler/CentOS上编译poppler以赋能pdf2image高性能PDF图片抽取
1. 为什么需要从源码编译poppler? 在日常开发中,我们经常需要处理PDF文档,特别是将PDF转换为图片的需求。pdf2image作为Python中常用的PDF转图片工具,其底层依赖poppler库来实现核心功能。但在实际使用中,很多开发者会…...
pycryptodomex安装避坑指南:从环境冲突到成功部署
1. 为什么pycryptodomex安装总是出问题? 每次看到"CommandNotFound"这个报错我就头疼。上周给客户部署加密服务时,在Ubuntu 18.04上安装pycryptodomex又遇到了老问题。这个库作为PyCrypto的替代品,本应该安装简单,但实际…...
从‘被动挨打’到‘主动防御’:我是如何用洞态IAST把安全测试无缝塞进团队DevOps流水线的
从被动防御到主动出击:洞态IAST在DevOps流水线中的实战集成指南 当我们的微服务架构从最初的十几个模块扩展到上百个服务时,传统的安全测试方法开始显露出明显的瓶颈。记得有一次凌晨三点,运维团队紧急回滚了一个刚上线的支付服务——安全团队…...
终极指南:如何在Remix项目中快速解决Promise异常和错误处理问题
终极指南:如何在Remix项目中快速解决Promise异常和错误处理问题 【免费下载链接】remix Build Better Websites. Create modern, resilient user experiences with web fundamentals. 项目地址: https://gitcode.com/GitHub_Trending/re/remix Remix作为构建…...
Qt源码编译避坑指南:ARM64平台下解决OpenGL测试失败、中文乱码及超长编译时间
Qt源码编译ARM64平台深度优化:解决OpenGL异常、中文乱码与编译效率瓶颈 麒麟系统特有的图形库兼容性问题往往让开发者措手不及。当你在飞腾D2000处理器上执行./configure时突然弹出"the opengl functionality tests failed"红色警告,这背后可能…...
告别系统休眠困扰:MouseJiggler鼠标模拟工具的完整使用指南
告别系统休眠困扰:MouseJiggler鼠标模拟工具的完整使用指南 【免费下载链接】mousejiggler Mouse Jiggler is a very simple piece of software whose sole function is to "fake" mouse input to Windows, and jiggle the mouse pointer back and forth.…...
