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个及以上)的情况下,一个个的打开修改非常无聊跟低效,作为“懒惰”的程序员,这时候就要用上命令行,让重复劳动自动化。思路为将命令分为两部分:
- 通过
find
命令在插件目录下找到所有插件的 Info.plist 文件。 - 通过
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 了。
原文地址:http://joeshang.github.io/2015/04/10/fix-xcode-upgrade-plugin-invalid/
转载于:https://www.cnblogs.com/congliang/p/4979814.html
Xcode升级后插件失效相关推荐
- Xcode升级后插件失效的原理与修复办法
转载:http://joeshang.github.io/2015/04/10/fix-xcode-upgrade-plugin-invalid/ Xcode 的插件大大丰富了 Xcode 的功能,而 ...
- Xcode版本更新后插件失效解决办法
打开终端,输入以下代码: defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID 获取到DVTPl ...
- Xcode 升级后,常常遇到的遇到的警告、错误,解决方法
Xcode 升级后,常常遇到的遇到的警告.错误,解决方法 参考文章: (1)Xcode 升级后,常常遇到的遇到的警告.错误,解决方法 (2)https://www.cnblogs.com/cooka/ ...
- Xcode 升级后,常常遇到的遇到的警告、错误,解决方法(转)
从sdk3.2.5升级到sdk 7.1中间废弃了很多的方法,还有一些逻辑关系更加严谨了. 1,警告:"xoxoxoxo" is deprecated 解决办法:查看xoxoxox ...
- Xcode 升级后,cocoaPod 问题
当我从Xcode 6.3切换到Xcode6.4的时候,因为我是mac上安装了两个不同的版本,现在把Xcode 6.3卸掉了. 现在再次运行pod install命令的时候,提示如下错误: Upda ...
- Android插件丢失怎么办,Android studio推荐插件以及升级后插件丢失问题解决
1.android-butterknife-zelezny android-butterknife-zelezny 是根据butterknife定制的一款插件,能够方便快速初始化,对于我来说是开发必备 ...
- Android studio推荐插件以及升级后插件丢失问题解决
1.android-butterknife-zelezny android-butterknife-zelezny 是根据butterknife定制的一款插件,能够方便快速初始化,对于我来说是开发必备 ...
- xcode更新之后插件失效的解决办法
打开终端,输入以下代码: defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID 获取到DVTPl ...
- 全网首发!! 黑苹果MacOs12 Monterey升级后蓝牙失效问题
今天刚装完mac12 开机巨慢 重启开机巨慢 但是被我研究了一番发现是蓝牙问题 跑码的时候一直在显示Bluetooth usb controller之类的 然后开机竟然要10分钟以上,,我就是不用蓝 ...
最新文章
- selenium--driver.switchTo()
- 华硕fx60vm安装macOS10.13.6和Windows10双系统
- vlc生成rtsp流
- android touch screen keyboard input移植记录
- opencv学习笔记(二):基于肤色的人手检测
- JVM性能调优监控工具专题二:VisualVM基本篇之监控JVM内存,CPU,线程
- Python requests介绍之接口介绍
- edge linux 下载软件,在Linux上安装edge浏览器
- php property 获取,JavaScript中如何获取和设置property属性代码详解
- 模拟退火算法_Matlab 二维模拟退火算法最优路径(主程序)
- RabbitMQ之前的那些事
- sql语句select group by order by where一般先后顺序
- ASP.NET OAuth 2.0 新手上路
- 增长量计算n+1原则_2020黑龙江省考资料分析计算增长量问题.doc
- 课程设计 计算机公共基础,基于Moodle大学计算机公共基础课程设计.pdf
- 百度 bos php,百度开放云 BOS Uploader
- html 插入虾米音乐,虾米音乐导入导出方法
- win7系统 邮箱服务器搭建,win7搭建邮箱服务器
- Debian本地源的搭建方法
- OCX控件在win10下的查看、删除、注册、卸载
热门文章
- 你想过同时为两家以上的企业工作吗?
- 有人说赚钱靠项目,也有人说赚钱靠技术
- SQL 中为什么经常要加NOLOCK?
- C语言实现万年历(附代码)
- 运行报错SecureCRT: error while loading shared libraries: libjpeg.so.8:
- linux 命令行删除分区,如何在 Linux 中删除分区
- SQL Server 2016中的查询优化器更改说明
- aws cli 使用_学习AWS CLI –使用AWS CLI探索IAM用户,角色,策略
- 如何使用SQL Server主数据服务替换硬编码的查找
- 如何理解通配符类型参数/协变性/逆变性?