XCode升级后插件失效的原理与修复办法

XCode的插件大大丰富了XCode的功能,而且有了Alcatraz,插件的管理也非常容易,但是有个非常恼人的问题:一旦升级XCode,插件就失效!


问题原因

XCode的插件放置在目录~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins目录下,为.xcplugin格式。通过Show Content可以看到xcplugin中存在一个Info.plist,其中有一项为DVTPlugInCompatibilityUUIDs,而这就是插件失效的原因。

解决办法

解决办法非常简单:将当前版本的UUID加到DVTPlugInCompatibilityUUIDs中即可。但是插件比较多(1个及以上)的情况下,一个个的打开修改非常无聊跟低效,作为“懒惰”的程序员,这时候就要用上命令行,让重复劳动自动化。思路为将命令分为两部分:

  1. 通过find命令在插件目录下找到所有插件的Info.plist文件
  2. 通过xargs命令对上一步的搜索结果进行“for循环”(就这样理解吧),针对每一个Info.plist文件,利用defaults write命令将当前版本的UUID加到DVTPlugInCompatibilityUUIDs中。
首先关掉XCode,打开Terminal,输入 tail -f /var/log/system.log ,再次打开XCode,就能看到如下log信息:


可以看到,log信息表明XCode加载插件失败的原因,并且能够看到当前版本(6.3)XCode的UUID为9F75337B-21B4-4ADC-B558-F9CADF7073A7。经过@Kyrrr的提醒,有一种更好的方式来获取当前版本XCode的UUID:通过defaults read命令从XCode的Info.plist读取DVTPlugInCompatibilityUUID。

最终的命令为:

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`


在Terminal中运行上述命令就解决了插件失效的问题,在插件Info.plist的DVTPlugInCompatibilityUUIDs中也能看到新增的UUID了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值