Xcode 6.4  解决 插件失效的方法

查看 插件目录:

~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/

邮件打开插件 包内容   找到里面的 Info.plist 文件    并 打开他

在DVTPlugInCompatibilityUUIDs 下 新添加个 键值对

value 是 7FDF5C7A-131F-4ABB-9EDC-8C5F8F0B8A90

重新启动 Xcode

//下面是转载的方法

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

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了

解决XCode插件在XCode6.4上失效的办法的更多相关文章

  1. 转 mvc项目中,解决引用jquery文件后智能提示失效的办法

    mvc项目中,解决用Url.Content方法引用jquery文件后智能提示失效的办法   这个标题不知道要怎么写才好, 但是希望文章的内容对大家有帮助. 场景如下: 我们在用开发开发程序的时候,经常 ...

  2. 解决xcode升级之后安装的插件失效

    title: 解决xcode升级之后安装的插件失效date: 2015-08-23 11:07:53categories: 编辑工具 tags: xcode 我的博客:http://daycoding ...

  3. Xcode 插件失效,启动崩溃解决

    升级6.4点击 Alcatraz PackageManager 崩溃解决 进入插件安装目录 cd ~/Library/Application\ Support/Developer/Shared/Xco ...

  4. iOS 开发者能用上的 10 个 Xcode 插件

    本文由 伯乐在线 - 邢敏 翻译,黄利民 校稿.未经许可,禁止转载! 英文出处:code.tutsplus.com.欢迎加入翻译小组. 1. XcodeColors:给 Xcode 控制台添加颜色 2 ...

  5. 升级OS10.11系统后 Xcode6.4的变化少了个按钮 could not launch “Xcode” Xcode 插件安装

    升级OS10.11系统后 Xcode6.4的变化少了个按钮 could not launch “Xcode”  Xcode 插件安装 A:  升级10.11后Xcode 左上角模拟器选择菜单不在了   ...

  6. Xcode 插件失效的临时解决方案

    每当Xcode升级之后,都会导致原有的Xcode插件不能使用,这是因为每个插件的Info.plist中记录了该插件兼容的Xcode版本的DVTPlugInCompatibilityUUID,而每个版本 ...

  7. Xcode插件管理以及Xcode7 升级

    一,Xcode插件管理工具 Alcatraz: mkdir -p ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins; cur ...

  8. xcode 插件管理工具

    每次xcode 更新后之前安装的插件 都失效了!解决办法: 一.可以通过在原插件项目infoplist新增 新xcode的 DVTPlugInCompatibilityUUID 来使之支持新版xcod ...

  9. 【转】怎样创建一个Xcode插件(Part 1)

      原文:How To Create an Xcode Plugin: Part 1/3 原作者:Derek Selander 译者:@yohunl 译者注:原文使用的是xcode6.3.2,我翻译的 ...

随机推荐

  1. 报错找不到org.apache,http...的解决办法

    在build.gradle中加入 android { useLibrary 'org.apache.http.legacy' }

  2. zabbix 布署实践【3 proxy安装】

    使用openstack在生产环境创建的一台虚拟机   环境 CentOS7 4核4G内存40G硬盘 IP:10.120.150.150 镜像默认关闭防火墙,selinux ,NetworkManage ...

  3. HDU 5904 LCIS

    $dp$. 这题的突破口在于要求数字是连续的. 可以分别记录两个串以某个数字为结尾的最长上升长度,然后枚举一下以哪个数字为结尾就可以得到答案了. 因为$case$有点多,不能每次$memset$,额外 ...

  4. [Q]自定义纸张大小

    问:当打印机纸张列表里没有符合要求的纸张大小,例如如何打印加长图?答:当打印非标准图框时,你可能在图纸列表里找不到想要纸幅.你需要自己新建你需要的纸幅,以pdfFactory虚拟打印机为例(其它打印机 ...

  5. Unity性能优化——LOD技术

    LOD,中文名多层次细节,是游戏中最常用的技术,它按照模型的位置和重要程度决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算.今天我们来实现使用它来做一个简单的优化例子. ...

  6. Qt出现常量有换行符的错误的解决方法

    可以使用 QString::fromLocal8Bit 来将本地字符编码转换为 Unicode 形式的 QString.

  7. (ASP.NET )去除字符串中的HTML标签

    string strDoContent = "执行增加<a href="/AdminCX/Admin_CompanyDetail.aspx?CompanyGuid=cd8e1 ...

  8. 微信小程序开发详解——小程序,大颠覆!

    微信小程序开发 联系 苏念 188.1414.7927  微信小程序系统开发 微信新功能开发 小程序开发 小程序怎么开发 app小程序开发 简化小程序开发 微信小程序定制 小程序制作 开发微信小程序  ...

  9. border表格有的自动换行,有的不能自动换行!

    解决手机端tab超过设置的宽度换行! <table id="vip-tab"> <tr id="leibie"> <th clas ...

  10. sql server 数据库创建链接服务器访问另外一个sql server 数据库

    继上篇在sql server中创建链接服务器访问oracle数据库:http://www.cnblogs.com/527289276qq/p/4770379.html 本文介绍在sql server中 ...