Xcode 9.1 导出失败 "The /usr/bin/xattr tool may be damaged"

Xcode 9.1 export fails with "The /usr/bin/xattr tool may be damaged"

Xcode在 MacOS 10.13.1 中导出 ipa 或上传到 App Store 时 9.0.1 崩溃。

升级到Xcode9.1(9B55)后,导出时报错如下

Stripping extended attributes failed.
"/usr/bin/xattr -crs /var/folders/mm/h01jykrs7gv9w7jjb0yt609w0000gp/T/XcodeDistPipeline.Uay/Root/Payload/GitSmartHome.app" exited with a non-zero status. The /usr/bin/xattr tool may be damaged.

好像xattr损坏了,在Terminal中运行xattr时,提示如下错误。

xattr
Traceback (most recent call last):
  File "/usr/bin/xattr-2.7", line 7, in <module>
    from pkg_resources import load_entry_point
  File "build/bdist.macosx-10.13-intel/egg/pkg_resources/__init__.py", line 3019, in <module>
  File "build/bdist.macosx-10.13-intel/egg/pkg_resources/__init__.py", line 3003, in _call_aside
  File "build/bdist.macosx-10.13-intel/egg/pkg_resources/__init__.py", line 3032, in _initialize_master_working_set
  File "build/bdist.macosx-10.13-intel/egg/pkg_resources/__init__.py", line 655, in _build_master
  File "build/bdist.macosx-10.13-intel/egg/pkg_resources/__init__.py", line 963, in require
  File "build/bdist.macosx-10.13-intel/egg/pkg_resources/__init__.py", line 849, in resolve
pkg_resources.DistributionNotFound: The 'xattr==0.6.4' distribution was not found and is required by the application

如何修复或重新安装 xattr?

Xcode 总是查看 /usr/bin/xattr,不管你的路径如何(因为你可能在其他地方安装了一个有效的 xattr)。

输入 /usr/bin/xattr 给出了这个输出:

/usr/bin/xattr
Traceback (most recent call last):
  File "/usr/bin/xattr-2.7", line 7, in <module>
    from pkg_resources import load_entry_point
  File "build/bdist.macosx-10.12-intel/egg/pkg_resources/__init__.py", line 72, in <module>
  File "build/bdist.macosx-10.12-intel/egg/packaging/requirements.py", line 59, in <module>
TypeError: __call__() takes exactly 2 arguments (1 given)

您需要让您的系统 python 再次开心。我似乎在某个时候打破了我的。不知道如何。

我 运行 以下内容,屏幕上满是错误。

/usr/bin/python -m pip install -U setuptools

后来,我又运行/usr/bin/xattr又沉默了。好像是在测试健康不健康

我的 XCode 导出现在没有错误。

关键是您的 /usr/bin/xattr 会给您带来某种错误,无论是权限还是其他 python/setup 问题。您需要修复该问题才能让您的构建再次运行。

编辑: 对于那些有权限问题的人,运行 这个:

sudo chown -R $USER:$(id -g) /Users/$USER/Library/Python

➜ /usr/bin/xattr
python 版本 2.7.14 不能 运行 /usr/bin/xattr。尝试替代方案:

/usr/bin/xattr-2.6(使用 python 2.6)
/usr/bin/xattr-2.7(使用 python 2.7)

运行 "man python" 有关多版本支持的更多信息,请参阅 Mac OS X.
➜ cd /usr/bin
➜ sudo rm xattr
➜ sudo ln -s xattr-2.7 xattr
➜ /usr/bin/xattr

我也有这个问题。事实证明,这是在我关闭 /Library/Python/2.7 并删除 /Library/Python/2.7/site-packages/Extras.pth 后开始发生的。这是里面的内容:

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC

这些目录中的第一个包含仍然支持 -c 选项的旧版本 xattr(我自己安装 xattr v0.6.4 无法解决)。

@Ren给了一个很好的提示,按照他的思路,在Ned Deli's Answer的帮助下,解决了这里的问题。

我的情况:python默认系统版本为2.7(正常使用pyenv)。 /usr/bin/xattr 总是试图调用 /usr/bin/xattr-2.7,但不会成功。调用 xattr-2.6 工作正常,强制 /usr/bin/xattr 调用 xattr-2.6 导致 "option -c not recognized" 而 XCode 试图调用 xattr -crs ....

解决方法:使用命令后:$defaults write com.apple.versioner.python Version 2.6 Xcode终于可以分发我的应用了。

您可以随时将系统默认设置 python 设置为 2.7: $unset VERSIONER_PYTHON_VERSION

重新安装 xcode-select,打开终端并输入

xcode-select --install

如果您的 mac 向您抛出类似 "option -c not recognized" 的错误,您仍然可以尝试使用如下命令启动原始源代码 "xattr python tool":

sudo python /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/xattr/tool.pyc -cr /Applications/[Application].app

对我有用 ;)

我刚刚 运行 遇到了同样的问题并通过以下方式解决了它:

/usr/bin/python -m pip install xattr==0.6.4