1、执行如下指令可以统计Android源码目录下的 所有的mk文件的总数及其内容(这是分析源码的很好的工具)
for i in `find . -maxdepth 1 -type d`
do
echo $i
mkdir -p ~/Desktop/android_mk/$i
find $i -type f -name "*.mk" -print | echo -e ""$i" Total is:`wc -l`" >> ~/Desktop/android_mk/total_mk_list_about.txt
find $i -type f -name "*.mk" -print | echo -e "/n"$i"'s Android.mk Total number is:`wc -l`/n" > ~/Desktop/android_mk/$i/"$i"_mk_list.txt
find $i -type f -name "*.mk" -print >> ~/Desktop/android_mk/$i/"$i"_mk_list.txt
find $i -type f -name "*.mk" -printf "/n# ============================================================/n# " -print -printf "# ============================================================/n/n" -exec cat {} /; >> ~/Desktop/android_mk/$i/"$i"_mk_content.txt
done
mv ~/Desktop/android_mk/._mk_content.txt ~/Desktop/android_mk/total_mk_content.txt
mv ~/Desktop/android_mk/._mk_list.txt ~/Desktop/android_mk/total_mk_list.txt
同理,如果我们要分析linux源码,可以执行:
for i in `find . -maxdepth 1 -type d`
do
echo $i
mkdir -p ~/Desktop/linux_Makefile/$i
find $i -type f -name "Makefile" -print | echo -e ""$i" Total is:`wc -l`" >> ~/Desktop/linux_Makefile/total_Makefile_list_about.txt
find $i -type f -name "Makefile" -print | echo -e "/n"$i"'s Makefile Total number is:`wc -l`/n" > ~/Desktop/linux_Makefile/$i/"$i"_Makefile_list.txt
find $i -type f -name "Makefile" -print >> ~/Desktop/linux_Makefile/$i/"$i"_Makefile_list.txt
find $i -type f -name "Makefile" -printf "/n# ============================================================/n# " -print -printf "# ============================================================/n/n" -exec cat {} /; >> ~/Desktop/linux_Makefile/$i/"$i"_Makefile_content.txt
done
mv ~/Desktop/linux_Makefile/._Makefile_content.txt ~/Desktop/linux_Makefile/total_Makefile_content.txt
mv ~/Desktop/linux_Makefile/._Makefile_list.txt ~/Desktop/linux_Makefile/total_Makefile_list.txt
以2.6.30源码为例,结果为:
linux2.6.30 Total is:1143
|-net Total is:60
|-usr Total is:1
|- block Total is:1
|- firmware Total is:1
|- kernel Total is:5
|- include Total is:0
|- Documentation Total is:16
|- ipc Total is:1
|- mm Total is:1
|- drivers Total is:394
|- lib Total is:5
|- security Total is:7
|- init Total is:1
|- sound Total is:81
|- arch Total is:480
|- scripts Total is:9
|- samples Total is:5
|- virt Total is:0
|- fs Total is:72
|- crypto Total is:2
2、Android1.5源码包含的mk文件总数及其列表如下:
android Total is:1018
|- frameworks Total is:90
|- external Total is:535
|- system Total is:57
|- hardware Total is:16
|- packages Total is:47
|- bootable Total is:18
|- build Total is:92
|- bionic Total is:10
|- out Total is:2
|- development Total is:107
|- dalvik Total is:26
|- prebuilt Total is:18
android's Android.mk Total number is:1018
./frameworks/policies/base/phone/Android.mk
./frameworks/policies/base/mid/Android.mk
./frameworks/policies/base/PolicyConfig.mk
./frameworks/base/media/tests/MediaFrameworkTest/Android.mk
./frameworks/base/media/libmediaplayerservice/Android.mk
./frameworks/base/media/libdrm/Android.mk
./frameworks/base/media/libdrm/mobile2/Android.mk
./frameworks/base/media/libdrm/mobile1/Android.mk
./frameworks/base/media/mediaserver/Android.mk
./frameworks/base/media/jni/Android.mk
./frameworks/base/media/jni/soundpool/Android.mk
./frameworks/base/media/libmedia/Android.mk
./frameworks/base/media/sdutils/Android.mk
./frameworks/base/opengl/libagl/Android.mk
./frameworks/base/opengl/tests/angeles/Android.mk
./frameworks/base/opengl/tests/Android.mk
./frameworks/base/opengl/tests/finish/Android.mk
./frameworks/base/opengl/tests/filter/Android.mk
./frameworks/base/opengl/tests/tritex/Android.mk
./frameworks/base/opengl/tests/textures/Android.mk
.....................................................................................................
3、如framewoks目录下,统计出的mk总数及其文件内容格式如下:
./frameworks's Android.mk Total number is:90
./frameworks/policies/base/phone/Android.mk
./frameworks/policies/base/mid/Android.mk
./frameworks/policies/base/PolicyConfig.mk
./frameworks/base/media/tests/MediaFrameworkTest/Android.mk
./frameworks/base/media/libmediaplayerservice/Android.mk
./frameworks/base/media/libdrm/Android.mk
./frameworks/base/media/libdrm/mobile2/Android.mk
./frameworks/base/media/libdrm/mobile1/Android.mk
./frameworks/base/media/mediaserver/Android.mk
./frameworks/base/media/jni/Android.mk
./frameworks/base/media/jni/soundpool/Android.mk
./frameworks/base/media/libmedia/Android.mk
./frameworks/base/media/sdutils/Android.mk
./frameworks/base/opengl/libagl/Android.mk
./frameworks/base/opengl/tests/angeles/Android.mk
........................................................................
# ============================================================
# ./frameworks/policies/base/phone/Android.mk
# ============================================================
LOCAL_PATH:= $(call my-dir)
# the library
# ============================================================
include $(CLEAR_VARS)
LOCAL_SRC_FILES := /
$(call all-subdir-java-files)
LOCAL_MODULE := android.policy_phone
LOCAL_UNINSTALLABLE_MODULE := true
include $(BUILD_JAVA_LIBRARY)
# ============================================================
# ./frameworks/policies/base/mid/Android.mk
# ============================================================
LOCAL_PATH:= $(call my-dir)
# the library
# ============================================================
include $(CLEAR_VARS)
LOCAL_SRC_FILES := /
$(call all-subdir-java-files)
LOCAL_MODULE := android.policy_mid
LOCAL_UNINSTALLABLE_MODULE := true
include $(BUILD_JAVA_LIBRARY)
..............................................................