目标:我想使用Android.mk在/ system(Android设备)中复制多个 txt文件
我的发现:
我们可以用两种方法复制文件 1)使用PRODUCT_COPY_FILES。这是从devices / / makefile.mk
完成的例如:
PRODUCT_COPY_FILES := \
frameworks/base/data/etc/telephony.gsm.xml:system/etc/permissions/telephony.gsm.xml \
some/other/sourc/file:some/destination \
some/other/sourcefile2: some/destination
2)使用BUILD_PREBUILD
前:
##############copy txt file##################
include $(CLEAR_VARS)
#LOCAL_MODULE := mydata.txt
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT)/myfolder
LOCAL_SRC_FILES := mydata.txt
include $(BUILD_PREBUILT)
上面的工作使得在build / target / product / core.mk中输入mydata.txt
我的具体查询是: 现在我可以通过重写上面的代码,使用第二种方法复制多个文件 一个接一个地。但我想使用第二种方法(BUILD_PERBUILD)来复制多个txt文件,而无需为所有文件重写代码。
1)我可以只使用一个包含$(BUILD_PREBUILT)的呼叫吗?
2)BUILD_MULTI_PREBUILD可以用来解决目的吗?怎么样 ?
答案 0 :(得分:12)
好的,我发现了一个黑客(我知道存在),我不是在找,但它有效 并以一种非常简单的方式解决了我的问题。
您可以在mk文件中运行shell命令。
因此,如果您只想一次复制多个文件,请使用以下代码并将其放入mk文件中。
在下面的场景中,我需要复制的文件存在于file_folder(目录)中,该目录位于我的mk文件所在的目录中。我想将file_folder中的所有文件复制到system / file_folder。
#create a directory in /system/
$(shell mkdir -p $(TARGET_OUT)/file_folder/)
#copy stuff
$(shell cp $(LOCAL_PATH)/file_folder/* `pwd`/$(TARGET_OUT)/file_folder/)
这很好用。所以现在我们有三种方法可以做到这一点。希望它会帮助像我这样的人。
答案 1 :(得分:0)
请参阅以下Android字体处理示例: https://android.googlesource.com/platform/frameworks/base/+/master/data/fonts/Android.mk#66
这将为单个字体文件创建一个makefile函数,并使用foreach循环遍历多个文件: https://android.googlesource.com/platform/frameworks/base/+/master/data/fonts/Android.mk#79
您可以使用任何机制来填充font_src_files