我正在为自定义设备构建AOSP(让我们称之为mycustomdevice),并且已经成功构建,映像和部署了工程版本(TARGET_BUILD_VARIANT=eng
)。
但是,当我尝试使用user
或userdebug
版本进行构建时,不再创建数据目录(myAOSP/out/target/product/mycustomdevice/data
)。因此,也没有创建userdata.img
。
我已完全清除AOSP源目录(因此也清除了out
目录),并重新加载了源代码。然后我执行lunch mycustomdevice-userdebug
(或mycustomdevice-user),然后运行m
命令。在eng
和user
/ userdebug
之间没有其他任何更改,并且重复设置变体设置为eng
的相同步骤将导致data
目录再次被包括。
我无法找到有关包含数据目录的任何文档。我从几个月前的培训课程中了解到,数据暂存目录是可选的。我该怎么做才能确保创建数据目录的所有TARGET_BUILD_VARIANT
?
答案 0 :(得分:2)
这只是-eng构建中包含的几个测试程序的安装目标的结果。例如,在其中一个测试.mk
文件中,存在以下行:
LOCAL_MODULE_TAGS := eng tests
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/nativebenchmark
执行user
或userdebug
版本时,LOCAL_MODULE_TAGS
设置(eng / tests)不再匹配,因此输出不会放入数据目录中。由于没有输出进入$(TARGET_OUT_DATA)
目录(解析为myAOSP/out/target/product/mycustomdevice/data
)。因此,由于没有输出,因此永远不会创建目录。
请注意,$(TARGET_OUT_DATA)
只是一个暂存目录 - 并不意味着Android设备上没有/data
目录。当Android设备首次初始化时,/data
目录是根据myAOSP/system/core/rootdir/init.rc
文件中的说明创建的,该文件初始化Android系统的元素。
在我的情况下,有一个构建后步骤脚本,可以为所有分区创建映像,并将其捆绑到一个映像中,一次写入SD卡。该脚本需要数据目录,即使它是空的。因此,为了解决这个问题,我只需要创建/data
目录,如下所示:
~/myAOSP$ mkdir out/target/product/mycustomdevice/data