3

我正在为自定义设备(我们称之为 mycustomdevice)构建 AOSP,并且已成功构建、映像和部署工程构建 ( TARGET_BUILD_VARIANT=eng)。

但是,当我尝试使用 auseruserdebugbuild 进行构建时,不再创建数据目录 ( myAOSP/out/target/product/mycustomdevice/data)。因此,也没有userdata.img创建。

我已经完全清除了 AOSP 源目录(因此该out目录也被清除了),并重新加载了源。然后我执行一个lunch mycustomdevice-userdebug(或 mycustomdevice-user),然后运行该m命令。enguser/之间没有其他任何变化userdebug,并且使用构建变体集重复相同的步骤eng将导致data再次包含目录。

我找不到有关包含数据目录的任何文档。我从几个月前的一次培训课程中了解到,数据暂存目录是可选的。我应该怎么做才能确保为所有TARGET_BUILD_VARIANTs 创建数据目录?

4

1 回答 1

2

这只是 -eng 构建中包含的几个测试程序的安装目标的结果。例如,在其中一个测试.mk文件中,存在以下行:

LOCAL_MODULE_TAGS := eng tests
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/nativebenchmark

执行useroruserdebug构建时,LOCAL_MODULE_TAGS设置(eng/tests)不再匹配,因此输出不会放在数据目录中。因为目录中没有输出$(TARGET_OUT_DATA)(解析为myAOSP/out/target/product/mycustomdevice/data)。因此,由于没有输出,因此永远不会创建目录。

请注意,这$(TARGET_OUT_DATA)只是一个临时目录 - 这并不意味着/dataAndroid 设备上没有目录。Android 设备本身首次初始化时,/data会根据文件中的指令创建目录myAOSP/system/core/rootdir/init.rc,用于初始化 Android 系统的元素。

在我的例子中,有一个构建后步骤脚本可以为所有分区创建映像,并将其捆绑到一个映像中,以便一次性写入 SD 卡。该脚本需要数据目录,即使它是空的。所以要解决这个问题,我只需要/data像这样创建目录:

~/myAOSP$ mkdir out/target/product/mycustomdevice/data
于 2015-04-09T16:37:14.687 回答