美文网首页移动开发
Xcode升级后插件失效错误分析与解决方案:RescueXcod

Xcode升级后插件失效错误分析与解决方案:RescueXcod

作者: NSPanda | 来源:发表于2015-12-09 21:37 被阅读832次

首先,解决方案:

$ curl -s https://raw.githubusercontent.com/ForkPanda/RescueXcodePlug-ins/master/RescueXcode.sh | sh

托管地址:Github
如果对原理不感兴趣的,以上就是博客内容。

下面来定位一下问题

1.Xcode 升级之后,我发现了一些问题

  • 安装的插件莫名消失了。
  • Xcode 没有任何提示。
  • 在目录 ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins 插件文件还在。

于是我用 tail 命令检查了一下系统日志

$ tail -f /var/log/system.log

然后打开 Xcode ,得到了几条我们感兴趣的信息:

 Xcode[597]: [MT] PluginLoading: Required plug-in compatibility UUID F41BD31E-2683-44B8-AE7F-5F09E919790E for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/Alcatraz.xcplugin' not present in DVTPlugInCompatibilityUUIDs

日志很明显,说我们的 Xcode 在载入插件的时候,需要一个 UUID ,但是插件在 DVTPlugInCompatibilityUUIDs 里面并没有提供。

通过同性交友网站 Github 的各种 Issue 和 StackOverflow 的经验来看,我们需要到每一个 Info.plist 里面去添加一个 UUID 即可解决问题了。

find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add defaults read /Applications/Xcode.app/Contents/Info.plist DVTPlugInCompatibilityUUID

然后重置一下 Xcode 第三方插件列表。

ls=`defaults read com.apple.dt.Xcode | grep -o 'DVTPlugInManagerNonApplePlugIns-Xcode-[^\"]*'`

for x in $ls; do

defaults delete com.apple.dt.Xcode $x

done

[^\"]* 是正则,匹配到第一个引号处,请详见 Google。

知道解决方式之后,我本着爱护伸手党的原则,将这个写成了一个脚本,托管于 Github 。这样你就可以按照文章开头的部分,使用一行的 shell 来完成

相关文章

网友评论

    本文标题:Xcode升级后插件失效错误分析与解决方案:RescueXcod

    本文链接:https://www.haomeiwen.com/subject/oztyhttx.html