AOSP 构建 - 从 eng 切换到 user 或 userdebug 时,不再创建数据目录
AOSP Build - when switching from eng to user or userdebug, data directory no longer created
我正在为自定义设备构建 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
创建数据目录?
这只是 -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 设备本身首次初始化时,会根据 myAOSP/system/core/rootdir/init.rc
文件中的指令创建 /data
目录,该目录会初始化 Android 系统的元素。
在我的例子中,有一个 post-build step 脚本可以为所有分区创建映像,并将其捆绑到一个映像中,以便一次性写入 SD 卡。该脚本需要数据目录,即使它是空的。所以要解决这个问题,我只需要像这样创建 /data
目录:
~/myAOSP$ mkdir out/target/product/mycustomdevice/data
我正在为自定义设备构建 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
创建数据目录?
这只是 -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 设备本身首次初始化时,会根据 myAOSP/system/core/rootdir/init.rc
文件中的指令创建 /data
目录,该目录会初始化 Android 系统的元素。
在我的例子中,有一个 post-build step 脚本可以为所有分区创建映像,并将其捆绑到一个映像中,以便一次性写入 SD 卡。该脚本需要数据目录,即使它是空的。所以要解决这个问题,我只需要像这样创建 /data
目录:
~/myAOSP$ mkdir out/target/product/mycustomdevice/data