
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
在了解了Android代码编译的基本知识之后,达内长沙android培训接下来就要为大家讲一讲代码搜索等相关内容了。希望这些分享对你的学习能有一些帮助。
1、代码搜索
Cgrep:所有C/C++文件执行搜索操作;
Jgrep:所有Java文件执行搜索操作;
Ggrep:所有Gradle文件执行搜索操作;
mangrep [keyword] :所有AndroidManifest.xml文件执行搜索操作;
sepgrep [keyword]:所有sepolicy文件执行搜索操作;
resgrep [keyword]:所有本地res/*.xml文件执行搜索操作;
sgrep [keyword]:所有资源文件执行搜索操作;
上述指令用法最终实现方式都是基于grep指令,各个指令用法格式:
xgrep [keyword] //x代表的是上表的搜索指令;
例如,搜索所有AndroidManifest.xml文件中的launcher关键字所在文件的具体位置,指令
mangrep launcher
再如,搜索所有Java代码中包含zygote所在文件;
jgrep zygote
又如,搜索所有system_app的selinux权限信息;
sepgrep system_app
Tips: Android源码非常庞大,直接采用grep来搜索代码,不仅方法笨拙、浪费时间,而且搜索出很多无意义的混淆结果。根据具体需求,来选择合适的代码搜索指令,能节省代码搜索时间,提高搜索结果的精准度,方便定位目标代码。
2、导航指令
导航指令 解释
croot 切换至Android根目录
cproj 切换至工程的根目录
godir [filename] 跳转到包含某个文件的目录
Tips: 当每次修改完某个文件后需要编译时,执行cproj后会跳转到当前模块的根目录,也就是Android.mk文件所在目录,然后再执行mm指令,即可编译目标模块;当进入源码层级很深后,需要返回到根目录,使用croot一条指令完成;另外cd - 指令可用于快速切换至上次目录。
3、 信息查询
查询指令 解释
hmm 查询所有的指令help信息
findmakefile 查询当前目录所在工程的Android.mk文件路径
print_lunch_menu 查询lunch可选的product
printconfig 查询各项编译变量值
gettop 查询Android源码的根目录
gettargetarch 获取TARGET_ARCH值
4、 其他指令
上述只是列举比较常用的指令,还有其他指令,而且不同的build编译系统,支持的指令可能会存在一些差异,当忘记这些编译指令,可以通过执行hmm,查询指令的帮助信息。
最后再列举两个比较常用的指令:
make clean:执行清理操作,等价于 rm -rf out/
make update-api:更新API,在framework API改动后需执行该指令,Api记录在目录frameworks/base/api;