在 AOSP 中将文件添加到 userdata.img 的正确方法是什么?

What is the right way to add files to userdata.img in AOSP?

我正在开发一个基于AOSP 5.1.0 源代码的ROM。我想在源代码中添加一个文件夹"abc"(它包含一些文件)并将该文件夹编译到设备(Nexus 5)中的“/data/abc”路径中。

目前我是这样实现的:

1) 将 "abc" 文件夹添加到 AOSP 源文件夹的根目录。

2)在/packages/apps/TestApp中添加应用,在TestApp的Android.mk文件中,添加"$(shell cp -rf $(LOCAL_PATH)/../ ../../abc/ $(TARGET_OUT_DATA)/abc/)”在“include $(CLEAR_VARS)”后面。 $(TARGET_OUT_DATA) 似乎意味着设备中的“/data/”路径。

3) 制作-j12

4) fastboot -w flashall

上面的方法确实成功了,但是在"out\target\product\hammerhead\data\abc"里面,还有一个"abc"文件夹在"abc"里面,太坑爹了,不知道怎么回事.在我通过 "fastboot -w flashall" 刷新图像后,“/data/abc” 文件夹在 Nexus 5 中缺少很多文件。

我不知道在应用程序的 Android.mk 中执行 "shell cp" 是否是将文件夹添加到 userdata.img 的正确方法,如果不是,正确的方法是什么?

终于找到正确的方法了:

fastboot -w flashall 不会刷新 userdata.img 映像

您必须通过执行 fastboot flash userdata.

显式地刷写 userdata.img

您可以使用$(BUILD_PREBUILT)复制多个文件。 您的 Android.mk 应该如下所示:

include $(CLEAR_VARS)
LOCAL_IS_HOST_MODULE =
LOCAL_MODULE = abc
LOCAL_MODULE_CLASS = ETC
LOCAL_MODULE_PATH = $(PRODUCT_OUT)/data
LOCAL_MODULE_RELATIVE_PATH =
LOCAL_MODULE_SUFFIX =
LOCAL_MODULE_STEM =
LOCAL_MODULE_STEM_32 =
LOCAL_MODULE_STEM_64 =
LOCAL_SRC_FILES = abc/file1 abc/file2
include $(BUILD_PREBUILT)

此外,您需要将该模块添加到您的 device.mk 文件中:

PRODUCT_PACKAGES += abc

注意:复制多个文件(一个目录)可能有更好的方法。