Xcode 关于插件失效的若干问题

关于Xcode 的 UUID

UUID含义是通用唯一识别码 (Universally Unique Identifier),是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字
  UUID由以下几部分的组合:
  (1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
  (2)时钟序列。
  (3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。

每一版Xcode的升级,其UUID 都会进行改变。

查看Xcode的UUID

方式1
在终端执行
defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID

Xcode 关于插件失效的若干问题_第1张图片
终端示例.png

方式2
在/Applications目录中找到Xcode.app,右键”显示包内容”,进入Contents文件夹,双击Info.plist打开,找到DVTPlugInCompatibilityUUID,拷贝后面的字符串。

示例.gif

升级Xcode 插件失效问题 (仅适用于Xcode 8 之前)

插件通过 DVTPlugInCompatibilityUUIDs 来指定能够运行此插件的 Xcode 版本。因此,DVTPlugInCompatibilityUUIDs 中存放的是 Xcode 版本对应的 UUID,Xcode 在启动加载控件时,将当前 UUID 同插件 Info.plist 中 DVTPlugInCompatibilityUUIDs 存放的 UUID 数组进行匹配,如果没有匹配项,说明此插件无法在该版本的 Xcode 运行,插件也就失效了。

添加Xcode的UUID到插件的Info.plist文件

方式1--插件已经安装完成
1、打开xcode插件所在的目录:
~/Library/Application Support/Developer/Shared/Xcode/Plug-ins;
2、选择已经安装的插件例如VVDocumenter-Xcode,右键”显示包内容”;
3、找到info.plist 文件,找到DVTPlugInCompatibilityUUIDs的项目,添加一个Item,Value的值为之前Xcode的UUID,保存。

示例.gif

方式2--插件还未安装/重新安装
1、从GitHub克隆仓库到本地,在Xcode中打开项目,选择项目名称,在TAGETS下选中VVDocumenter-Xcode;
2、选择Info,找到DVTPlugInCompatibilityUUIDs的项目,添加一个Item,Value的值为之前Xcode的UUID;
3、Build项目,VVDocumenter-Xcode会自动安装。

重启Xcode 会有弹窗

Xcode 关于插件失效的若干问题_第2张图片
示例.png

终端添加UUID到插件的Info.plist文件

进入plugin安装的目录
终端输入
cd ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins
执行下面的命令后,Xcode会打开这个plist文件
open VVDocumenter-Xcode.xcplugin/Contents/Info.plist

Xcode 关于插件失效的若干问题_第3张图片
Snip20161003_8.png

DVTPlugInCompatibilityUUIDs 数组里加一行,粘贴你在man时看到的UUID。这些UUID都对应Xcode的一个历史版本。

当然如果插件过多,也可以用终端批量操作
终端输入
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`
`
解说:
1、通过 find 命令在插件目录下找到所有插件的 Info.plist 文件。
2、通过 defaults read 命令从 Xcode 的 Info.plist 读取 DVTPlugInCompatibilityUUID。
3、通过 xargs 命令对上一步的搜索结果进行“for 循环”(就这样理解吧),针对每一个 Info.plist 文件,利用 defaults write 命令将当前版本的 UUID 加到 DVTPlugInCompatibilityUUIDs 中。

XCode 8 插件失效问题

xcode8增加了安全相关的检查,更细点说它从根源上屏蔽了插件的工作,xcode插件在xcode8上统统不能执行。所以确切的说只要是Xcode 8 就不可能使用插件了。所谓鱼与熊掌不可兼得,安全与方便也不可兼得呀!

当然如果你插件爱不释手,那就可以忽略安全性,仍然用Xcode 8 之前的版本,当然也可以使用破解版的Xcode 8 (还不如用Xcode 8 之前的版本);
破解方法:
xcode8继续愉快的使用插件
让你的 Xcode8 继续使用插件

Xcode 关于插件失效的若干问题_第4张图片
点我点我点我哦.png

如有技术问题,扫码交流

Xcode 关于插件失效的若干问题_第5张图片
如有技术问题,扫码交流.jpg

你可能感兴趣的:(Xcode 关于插件失效的若干问题)