10

目标:我想使用 Android.mk 在 /system (Android 设备)中复制多个txt 文件

我的发现:

我们可以使用两种方法复制文件 1) 使用 PRODUCT_COPY_FILES。这是从设备//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可以用来解决目的吗?如何 ?

4

2 回答 2

15

好的,我发现了一个 hack(我知道它存在),我没有在寻找它,但它以一种非常简单的方式有效并解决了我的问题。

您可以在 mk 文件中运行 shell 命令。

因此,如果您想一次复制多个文件,请使用以下代码并将其放入您的 mk 文件中。

在以下场景中,我需要复制的文件存在于 file_folder ( directory ) 中,该目录与我的 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/)

这工作得很好。所以现在我们总共有 3 种方法可以做到这一点。希望它会帮助像我这样的人。

于 2013-01-18T09:57:05.267 回答
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

于 2019-05-20T21:27:02.230 回答