先贴一个代码
android代码都是通过拉分支来区别不同项目的,编译的时候用分支代码覆盖主分支,这样子可以尽量减少代码量的前提实现了差异化。
不过缺点也明显,就是修改一个文件必须同步到各个分支,要不然就会可能有编译问题。
这样就有了一个需求,就是在一个大的工程中寻找所有定制文件。之前用find -name 当工程比较小的时候,这种方法还可行。
不过随着工程变大,分支文件上G了,这种办法就有点捉襟见肘了。大量io操作耗费大量时间和cpu使用,影响工作效率,而且find -name的查找是盲目的,很多文件夹其实根本没有必要查找。比如查找某个应用的定制的时候,只需要查看package文件夹,而根本不需要查找framework文件夹。
于是我就用shell脚本自己写了一个遍历的函数,先进子文件夹,再用find,对于不可能的文件夹通过剪枝来减少不必要查找,提高效率。
本例子,是查找package下某个应用的文件,文件名通过shell参数传入。
这个脚本写好,我试了一个,大概1个多G的目录,用find -name 要找十多分钟才找完所有分支。
而用这个脚本就十几秒就可以了。
不过显示的结果还不够人性化,后续继续优化.