移动开发

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

2015-12-09  本文已影响832人  NSPanda

首先,解决方案:

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

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

下面来定位一下问题

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

于是我用 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 来完成

上一篇 下一篇

猜你喜欢

热点阅读