最近刚升级了Xcode6.4,然后就悲剧的发现以前装的插件都失效了。那么问题就来了,我们该怎么做才能让插件恢复正常呢。
问题原因
Xcode的插件放在目录:~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/ 下,为.xcplugin格式。通过右键Show Content(显示包内容) 可以看到 xcplugin中存在一个info.plist。打开plist文件,会发现里面有一项为DVTPlugInCompatibilityUUIDs,我们姑且暂时猜测DVTPlugInCompatibilityUUIDs的作用:插件通过DVTPlugInCompatibilityUUIDs来指定能够运行此插件的Xcode版本。因此,DVTPlugInCompatibilityUUIDs中存放的是Xcode版本对应的UUID。Xcode在启动加载控件时,当前版本的UUID和插件中info.plist文件中DVTPlugInCompatibilityUUIDs存放的UUID数组进行匹配。匹配不到的话,则此插件无法在该版本Xcode上运行,插件也就失效了。
解决办法
解决办法当然就是将Xcode当前版本的UUID加到插件的info.plist中的DVTPlugInCompatibilityUUIDs中即可。
打开终端输入以下代码获取到DVTPlugInCompatibilityUUID:defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID
那么问题又来了。插件可能会有很多个,一个一个打开修改非常无聊与低效,此时就要用到命令行,让重复劳动自动化。
- 获取到Xcode当前版本的UUID,然后在终端输入如下命令即可:
find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add 7FDF5C7A-131F-4ABB-9EDC-8C5F8F0B8A90
将两步合并成一步就是:
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试试。问题在此处应该得以解决,但是也会有依旧失效的现象。此时,我们再打开终端,运行以下代码:
defaults delete com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-6.4
重启Xcode,选择Load Bundles。OK。
仍旧有问题的童鞋,可以在插件Info.plist的DVTPlugInCompatibilityUUIDs中看看是否存在新增的UUID。