zoukankan      html  css  js  c++  java
  • 解决XCode插件在XCode6.4上失效的办法

    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了

    握不住的沙,干脆扬了它。
  • 相关阅读:
    Java Web 网络留言板2 JDBC数据源 (连接池技术)
    Java Web 网络留言板3 CommonsDbUtils
    Java Web ConnectionPool (连接池技术)
    Java Web 网络留言板
    Java Web JDBC数据源
    Java Web CommonsUtils (数据库连接方法)
    Servlet 起源
    Hibernate EntityManager
    Hibernate Annotation (Hibernate 注解)
    wpf控件设计时支持(1)
  • 原文地址:https://www.cnblogs.com/zj901203/p/4638072.html
Copyright © 2011-2022 走看看