Flutter 开发时,idevice_id 不能执行问题的解决

在 MacOS 上进行 Flutter 开发的过程中,很多人会碰到 idevice_id 不能执行,需要挪到废纸篓的提示,并且找不到连接的 iOS 设备,不胜其烦。提示类似下图:

产生这个问题是因为 MacOS 的安全机制,将下载的文件标记了特殊的扩展属性,执行这个文件的时候,会检查这个扩展属性,导致出现上述问题。

假设 Flutter 的安装目录为 FLUTTER_ROOT,我们使用 xattr 命令查看一下:

关于 xattr 命令,请参考https://ss64.com/osx/xattr.html。

xattr -l $FLUTTER_ROOT/bin/cache/artifacts/libimobiledevice/idevice_id

输出如下:

com.apple.quarantine: 0082;5df1b9a7;The Unarchiver;

quarantine 是隔离区的意思,这里可以看出这个文件是 The Unarchiver 解压的,标记了隔离区。

使用下面的命令去掉这个扩展属性:

xattr -d com.apple.quarantine $FLUTTER_ROOT/bin/cache/artifacts/libimobiledevice/idevice_id

然后再执行上面的 xattr -l 可以看到没有输出了。idevice_id 就能正常执行了。

在 Flutter 安装目录,需要如此处理的文件有这些:

$FLUTTER_ROOT/bin/cache/artifacts/libimobiledevice/idevice_id

$FLUTTER_ROOT/bin/cache/artifacts/libimobiledevice/ideviceinfo

$FLUTTER_ROOT/bin/cache/artifacts/libimobiledevice/idevicename

$FLUTTER_ROOT/bin/cache/artifacts/libimobiledevice/idevicescreenshot

$FLUTTER_ROOT/bin/cache/artifacts/libimobiledevice/idevicesyslog

$FLUTTER_ROOT/bin/cache/artifacts/usbmuxd/iproxy

$FLUTTER_ROOT/bin/cache/artifacts/ideviceinstaller/ideviceinstaller

$FLUTTER_ROOT/bin/cache/artifacts/ios-deploy/ios-deploy

打完收功。

本文首发于微信公众号:肖念青,未经授权严禁转载!

个人网站:https://www.jitao.tech


欢迎关注公众号,不定时获取关于IT新知的文章。

你可能感兴趣的:(Flutter 开发时,idevice_id 不能执行问题的解决)