转载:http://joeshang.github.io/2015/04/10/fix-xcode-upgrade-plugin-invalid/

Xcode 的插件大大丰富了 Xcode 的功能,而且有了 Alcatraz ,插件的管理也非常容易,像我这种 Vim 党完全离不开 XVim。但是有个非常恼人的问题:一旦升级 Xcode ,插件就失效!

之前 Xcode 升级到6.2的时候遇到过插件失效的问题,Google 之后把一段很长命令复制到 Terminal 后运行一下即可,当时一看解决了,顿时觉得满足感爆棚,自己可以拯救地球了~就没有再深入,结果升级到6.3时又遇到了。“同样的招式对圣斗士是不能使用第二次的!”,同样的坑对有节操的程序员是不能掉进去第二次的!因此这一次一定要搞清楚为什么会这样,以后再次遇到了如何解决。

问题原因

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

由于 Apple 没有公开插件开发的相关资料,这里我只能通过命名跟值猜测 DVTPlugInCompatibilityUUIDs 的作用:插件通过 DVTPlugInCompatibilityUUIDs 来指定能够运行此插件的 Xcode 版本。因此,DVTPlugInCompatibilityUUIDs 中存放的是 Xcode 版本对应的 UUID,Xcode 在启动加载控件时,将当前 UUID 同插件 Info.plist 中 DVTPlugInCompatibilityUUIDs 存放的 UUID 数组进行匹配,如果没有匹配项,说明此插件无法在该版本的 Xcode 运行,插件也就失效了。

解决办法

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

  1. 通过 find 命令在插件目录下找到所有插件的 Info.plist 文件。
  2. 通过 xargs 命令对上一步的搜索结果进行“for 循环”(就这样理解吧),针对每一个 Info.plist 文件,利用 defaults write 命令将当前版本的 UUID 加到 DVTPlugInCompatibilityUUIDs 中。

此时问题来了,挖掘机技术。。。不对,是如何获取当前版本 Xcode 的 UUID 呢?首先关掉 Xcode,打开 Terminal,输入 tail -f /var/log/system.log,再次打开 Xcode,就能看到如下 log 信息:

[MT] PluginLoading: Required plug-in compatibility UUID 9F75337B-21B4-4ADC-B558-F9CADF7073A7 for plug-in at path ‘~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/Alcatraz.xcplugin’ not present in DVTPlugInCompatibilityUUIDs

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

最终的命令为:

1
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 了。

转载于:https://www.cnblogs.com/levy/p/4914207.html

Xcode升级后插件失效的原理与修复办法相关推荐

  1. Xcode升级后插件失效

    Xcode 的插件大大丰富了 Xcode 的功能,而且有了 Alcatraz ,插件的管理也非常容易,像我这种 Vim 党完全离不开 XVim.但是有个非常恼人的问题:一旦升级 Xcode ,插件就失 ...

  2. Xcode版本更新后插件失效解决办法

    打开终端,输入以下代码: defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID 获取到DVTPl ...

  3. Xcode 升级后,常常遇到的遇到的警告、错误,解决方法

    Xcode 升级后,常常遇到的遇到的警告.错误,解决方法 参考文章: (1)Xcode 升级后,常常遇到的遇到的警告.错误,解决方法 (2)https://www.cnblogs.com/cooka/ ...

  4. 计算机共享修复方法,win10系统设置共享后看不到共享电脑的修复办法

    电脑的网络上使用设置对我们来说是很重要的,有小伙伴在电脑中遇到系统设置了共享以后设置的这一台电脑看不到设置的共享的情况,现在我们在打印机的使用中,都是需要使用到共享打印机设置的,那我们在win10系统 ...

  5. Mac升级后,词典只有维基百科解决办法,并附汉英英汉词典链接

    mac升级后,词典目录里只有维基百科,如何解决? 打开词典,选择文件-打开词典文件夹 目录应为:~/Library/Dictionaries,注意是home目录下的/Library/Dictionar ...

  6. Xcode 升级后,常常遇到的遇到的警告、错误,解决方法(转)

    从sdk3.2.5升级到sdk 7.1中间废弃了很多的方法,还有一些逻辑关系更加严谨了. 1,警告:"xoxoxoxo"  is deprecated 解决办法:查看xoxoxox ...

  7. Xcode 升级后,cocoaPod 问题

    当我从Xcode 6.3切换到Xcode6.4的时候,因为我是mac上安装了两个不同的版本,现在把Xcode 6.3卸掉了. 现在再次运行pod install命令的时候,提示如下错误:   Upda ...

  8. Android插件丢失怎么办,Android studio推荐插件以及升级后插件丢失问题解决

    1.android-butterknife-zelezny android-butterknife-zelezny 是根据butterknife定制的一款插件,能够方便快速初始化,对于我来说是开发必备 ...

  9. Android studio推荐插件以及升级后插件丢失问题解决

    1.android-butterknife-zelezny android-butterknife-zelezny 是根据butterknife定制的一款插件,能够方便快速初始化,对于我来说是开发必备 ...

最新文章

  1. (转载)jsp与servlet之间页面跳转及参数传递实例
  2. 鸟哥的Linux私房菜(基础篇)-第一章、Linux是什么(一.4. 重点回顾)
  3. 520,#爱 with AI#
  4. css float(脱离正常流:向左/右浮动直到父元素/另一float, 不占空间)
  5. 图像卷积与滤波知识点整理(2)
  6. git add * 提示warning: LF will be replaced by CRLF in 解决办法
  7. java集合是wftc_java的集合是什么?
  8. POI 导出导入工具类介绍
  9. 简单PHP留言板之二 —— PHP的数据库连接文件
  10. stm32采集交流电压信号_基于STM32的交流电压检测
  11. gom引擎物品和武器的外观Shape值拓展算法
  12. win10开启虚拟化服务器,Windows10开启Hyper-V虚拟机管理器
  13. 年终盘点:2010年半导体产业十大进展
  14. python代码中 from . import ××× 是什么意思?
  15. Oracle 强制中止正在执行的SQL语句
  16. 电蚊香长时间通电引发的86离线语音智能盒子的设计开发
  17. 解决win10下栏不显示电池电量图标问题
  18. 虹科Automation softPLC | 虹科KPA MoDK运行环境与搭建步骤(3)——MoDK例程测试
  19. 送书 | 一位60后老程序员从零学习Python的感悟
  20. 快播王欣出狱后聊区块链,郭台铭投资数字货币银行 | 区块链日报

热门文章

  1. python 程序流程控制结构-Python基础—程序控制结构
  2. python3各个版本是通用的吗-python3各版本
  3. python条件语句-Python 条件语句
  4. python语言入门详解-Python unittest详解一(基础入门)
  5. python发明者叫什么-python发明人
  6. python自学攻略-Python自学攻略
  7. python强大体现在哪些方面-大公司里哪些方面运用了python?
  8. python3下载文件-使用Python 3从网上下载文件
  9. python中的format什么意思中文-Python中.format()常见的用法
  10. python处理excel文件-使用Python进行Excel文件处理