Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android lsetfilecon失败:传输终结点上不支持操作_Android_C++_C_Recovery - Fatal编程技术网

Android lsetfilecon失败:传输终结点上不支持操作

Android lsetfilecon失败:传输终结点上不支持操作,android,c++,c,recovery,Android,C++,C,Recovery,我一直在尝试将Android 8和OTA更新应用到运行Android 6的设备上,在OTA更新期间,我还尝试设置SELinux安全上下文。我的Android 6版本没有任何SELinux策略 如果我对设备应用安卓8完全更新(USB),SELinux策略设置正确。 如果我在A6上应用安卓8移民更新(USB),SELinux策略设置正确 如果我在A6上应用Android 8 OTA,我会得到以下错误 下面是“恢复”日志中的原始错误输出 ::: Extracted file "/sys

我一直在尝试将Android 8和OTA更新应用到运行Android 6的设备上,在OTA更新期间,我还尝试设置SELinux安全上下文。我的Android 6版本没有任何SELinux策略

如果我对设备应用安卓8完全更新(USB),SELinux策略设置正确。 如果我在A6上应用安卓8移民更新(USB),SELinux策略设置正确

如果我在A6上应用Android 8 OTA,我会得到以下错误

下面是“恢复”日志中的原始错误输出

   :::
Extracted file "/system/vendor/lib/lib_H263_dec_v2_arm11_elinux.so"

Extracted 1678 file(s)
created [/system/priv-app/DefaultContainerService/lib]
created [/system/priv-app/DefaultContainerService/lib/arm]
created [/system/app/LatinIME/lib]
created [/system/app/LatinIME/lib/arm]
ApplyParsedPerms: lsetfilecon of /system/lost+found to u:object_r:system_file:s0 failed: Operation not supported on transport endpoint

ApplyParsedPerms: lsetfilecon of /system/lost+found to u:object_r:system_file:s0 failed: Operation not supported on transport endpointscript aborted: set_metadata_recursive: some changes failed
set_metadata_recursive: some changes failedE:unknown command [log]
E:unknown command [log]
E:Error in /ota/update.zip
(Status 7)
Installation aborted.
I:Saving locale "en_US"
Rebooting...
/ # SysRq : Emergency Remount R/O
reboot: Restarting system
我目前的理解是,USB更新使用随软件包提供的恢复映像。但对于OTA更新,使用了Android 6“恢复”,因此出现了上述情况。如果我错了,请纠正我

因此,我对上述错误有几个问题:

  • 为什么lsetfileconfig失败?(此处的文档:)
  • Android 6中的更新程序脚本镜像了Android 8。Android 8在ApplyParsedPerms中也使用了lsetfileconfig,除了“恢复”图像不同之外,我还缺少什么
  • 我是否可以保存这种情况,或者在OTA更新开始时,我是否必须将Android 6“恢复”替换为Android 8

    • 为了完整起见,我将回答我自己的问题

      我并没有解决这个问题,但从我所能做的来看,安卓OTA更新依赖于设备本身的“恢复”图像。在我的例子中,恢复映像来自安卓6,我试图在其上应用安卓8更新。这导致在使用SELinux标签更新/system分区时出现一些不兼容(我仍然无法解释)

      我想出的解决办法是使用两步更新过程。这并不是一个原创的想法,而且代码已经可以从google获得(我为了我们的目的修改了它)。但是使用两步OTA,我首先更新了/boot/recovery分区,然后重新引导回到recovery中。OTA再次启动,但这次它使用的是Android 8恢复映像,并通过更新/system分区来完成。该设备现已成功升级到Android 8