最近由于想研究下android的编译系统,需要查看android源码中build目录下的脚本,这些脚本和各个模块中的Android.mk可能会产生关联,在构建source insight工程的时候,我希望把所有build目录的的源码和所有的Android.mk放到一起,构建一个工程,方便研究。那么怎么提取出所有的Android.mk文件呢?这涉及到shell编程了。
整个实现过程非常简单,只有几行代码,但由于之前没写过shell脚本,整个过程还是很有乐趣的,所以把它分享出来,大神请绕道。
脚本如下:
#!/bin/bash
FILES=$(find -name Android.mk)
for file in ${FILES}
do
echo ${file} > tem.txt
local_file=$(sed -e 's/\.\///g' -e 's/Android.mk//g' tem.txt)
echo ${local_file}
mkdir -p ~/makefile/${local_file}
cp ${file} ~/makefile/${local_file}
done
if [ -f tem.txt ];then
rm tem.txt
fi
把这个脚本放到android源码目录下,执行该脚本,就会在用户目录下生成makefile目录,里面就是所有的Android.mk文件了,而且他们的目录与之前所在的目录相同。
这段脚本解析: