#关于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
方式2 在/Applications目录中找到Xcode.app,右键”显示包内容”,进入Contents文件夹,双击Info.plist打开,找到DVTPlugInCompatibilityUUID,拷贝后面的字符串。
#升级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,保存。
方式2--插件还未安装/重新安装 1、从GitHub克隆仓库到本地,在Xcode中打开项目,选择项目名称,在TAGETS下选中VVDocumenter-Xcode; 2、选择Info,找到DVTPlugInCompatibilityUUIDs的项目,添加一个Item,Value的值为之前Xcode的UUID; 3、Build项目,VVDocumenter-Xcode会自动安装。
####重启Xcode 会有弹窗
###终端添加UUID到插件的Info.plist文件
进入plugin安装的目录
终端输入
cd ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins
执行下面的命令后,Xcode会打开这个plist文件
open VVDocumenter-Xcode.xcplugin/Contents/Info.plist
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 就不可能使用插件了。所谓鱼与熊掌不可兼得,安全与方便也不可兼得呀!