2011年10月14日 星期五

如何寫Android.mk,使得可以copy 某目錄下所有檔案到image裡

我先說明一下情境
Vender/a_folder/Android.mk
Vender/a_folder/files/1.dat
Vender/a_folder/files/2.dat
Vender/a_folder/files/99.dat
Vender/a_folder/files/a.ini
Vender/a_folder/files/b.ini
Vender/a_folder/files/z.ini

我們想把Vender/a_folder/files/目錄下的所有檔案copy out/target/product/target_product/system/data/example/目錄下該如血Android.mk?
答案是:
PRODUCT_COPY_FILES += \
        $(call find-copy-subdir-files,*,$(LOCAL_PATH)/files,system/data/example)


find-copy-subdir-files function是定義在 build/core/product_config.mk
###########################################################
## List all of the files in a subdirectory in a format
## suitable for PRODUCT_COPY_FILES and
## PRODUCT_SDK_ADDON_COPY_FILES
##
## $(1): Glob to match file name
## $(2): Source directory
## $(3): Target base directory
###########################################################

define find-copy-subdir-files
$(shell find $(2) -name "$(1)" | $(SED_EXTENDED) "s:($(2)/?(.*)):\\1\\:$(3)/\\2:" | sed "s://:/:g")
endef