很多时候对于Android系统开发小白而言,例如预置APK,知道了APK包名不知道具体代码位置需要去寻找代码,但是Android系统代码十分庞大,如何快速准确查询代码是个问题。
本人目前只探索到了一些方法,如有更有效的办法可以补充。
1.Android Studio自带的全文、全文件夹、全模块等查找
Ctrl+Shift+F查找功能,如果这个按键没有生效可能需要设置,
可以先尝试一下Ctrl+shift+R替换功能
可以通过选择In Project/Module/Directory/Scope来设置查找方式
如果你是个APP开发者这是一个非常好用的办法,但是如果是Android系统开发你会发现此功能的局限性,因为他需要加载完项目才可以进行该功能。
2.Visual Studio Code查找功能
VSCode相较与AS的优势在于不需要进行加载就可以进行搜索,但是缺点是没有AS加载后搜索代码那么快,甚至会出现落下某处未筛选出来的地方
打开VSCode在左侧便是搜索界面
3.python脚本查找
这个功能可以自行百度查一下,但是因为我python并不会所以并没有用过,可能大致就是python语句来遍历文件夹的文本进行遍历,如果有符合要求的则列出文件的路径
4.Linx系统下find命令查找
因为Android系统开发绝大部分会有Linx系统,所以find查找命令可以使用,并且效率高,速度相对更快。这也是我最近发现的,也是喜欢用的方法。(一般配合着AS、VSCode多方一起查找)
终端命令如下,先cd到想要搜索的路径:
find . | xargs grep -ri "Activity" -l
以上命令是在目录下搜索Activity的文本,解释一下命令:
-
find .
: 这部分命令用于在当前目录(以.
表示)及其子目录中查找文件。find
命令的基本语法是find [搜索路径] [匹配条件] [操作]
。 -
|
: 这是管道符,将find
命令的输出传递给下一个命令。 -
xargs
: 这个命令用于将前一个命令的输出作为参数传递给后面的命令。在这里,它将find
命令的输出传递给后面的grep
命令。 -
grep
: 用于在文件中搜索指定的文本模式。在这里,grep -ri "csdn.net" -l
的含义是:-r
: 递归地搜索子目录。-i
: 忽略大小写。-l
: 只列出包含匹配模式的文件名,而不显示匹配的具体内容。
其他一些常用的find
命令用法包括:
按文件名查找:
find /path/to/search -name "filename"
按类型查找:
find /path/to/search -type f # 查找普通文件
find /path/to/search -type d # 查找目录
按大小查找:
find /path/to/search -size +10M # 查找大于10MB的文件
find /path/to/search -size -1G # 查找小于1GB的文件
按时间查找:
find /path/to/search -mtime -7 # 查找在过去7天内修改过的文件