提升系统开发效率:Android 系统编译及搜索内容命令

背景:

经常在做系统aosp开发编译过程中,主要使用最多的是make命令,搜索代码内容时候用的最常用是grep命令,但其实在aosp系统本身是支持很多高效率的编译和搜索内容命令。这块的高效命令其实在系统源码的 build/envsetup.sh文件中有进行相关的详细定义。
在这里插入图片描述
下面将对这些命令使用进行相关介绍。

构建命令体系

各个命令详解

m 全系统 完整依赖链 全新构建/重大修改后 m -j32

mm 当前目录模块 跳过依赖 模块快速迭代 cd packages/apps/Settings && mm

mmm 指定路径模块 跳过依赖 跨目录模块编译 mmm frameworks/base/core/res

mma 当前目录模块+依赖 递归依赖 接口变更后的安全编译 mma -j16

mmma 指定路径模块+依赖 递归依赖 跨模块修改验证 mmma system/core/

使用案例

# 限定编译特定目标
mmm packages/apps/Calculator:CalculatorTests

# 并行编译优化
mmma -j$(($(nproc)*3/2)) frameworks/base/

# 仅检查依赖不编译
m nothing

# 快速重建system.img
m snod

目录导航命令

croot
功能:快速返回源码根目录

等效命令:cd $(gettop)

godir
功能:智能定位文件路径

参数:

-i:不区分大小写搜索

-n:显示匹配结果但不跳转

示例:

godir AndroidManifest.xml
godir -i R.java

代码搜索命令

cgrep C/C++ 源文件 grep -R --include=.[ch] cgrep “memcpy”

jgrep Java/Kotlin 文件 grep -R --include=*.java jgrep “extends Activity”

ggrep Gradle 脚本 grep -R --include=*.gradle ggrep “minSdkVersion”

resgrep res/.xml 资源文件 grep -R --include=res/.xml resgrep “action.MAIN”

mangrep AndroidManifest.xml grep -R --include=AndroidManifest.xml mangrep “permission”

mgrep Makefile 文件 grep -R --include=Makefile mgrep “LOCAL_MODULE”

sepgrep SELinux 策略文件 grep -R --include=*.te sepgrep “allow system_app”

sgrep 所有源代码文件 grep -R --include=. sgrep “TODO”

使用案例:

# 组合搜索
jgrep -n "Log\." --color=always

# 正则表达式搜索
sgrep -P 'interface\s+I\w+\s*{'

# 排除目录搜索
jgrep "onCreate" --exclude-dir=test

在这里插入图片描述

汇总图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值