Xcode版本更新插件失灵批量解决法

Xcode

编辑:Bison
投稿:许漠颜

"初出茅里的小虾并没有写过插件所以并不太清楚为什么每次更新的时候插件都不可用的原因。但根据修改的内容猜测可能是因为uuid对应的版本不同导致的,我对比了一个7.1版本的Xcode和7.2版本的uuid确实是不一样的。"


问题:
(1)Xcode更新以后插件不可用。

(2)重新启动Xcode的时候Load Bundles点错Skip Bundles

问题(1):初出茅里的小虾并没有写过插件所以并不太清楚为什么每次更新的时候插件都不可用的原因。但根据修改的内容猜测可能是因为uuid对应的版本不同导致的,我对比了一个7.1版本的Xcode和7.2版本的uuid确实是不一样的。但是前两天更新过的7.2.1版本和7.2版本的uuid是一样的,结果却是相同的。所以至于是不是uuid的原因我也不知道了。希望有人知道了可以回复我一下。

问题(2):插件DVTPlugInCompatibilityUUIDs配置好uuid以后,Xcode重启会有Load Bundles和Skip Bundles的选择,只会出现一次。很明显如果你点击了Skip Bundles插件肯定是不可用的状态。

解决的问题(1):首先打开终端输入命令:

defaults read /Applications/Xcode.app/Contents/Info.plist DVTPlugInCompatibilityUUID

得到uuid。然后我们可以去

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


目录下寻找到我们要使用的插件-显示包内容-Contents-Info.plist-DVTPlugInCompatibilityUUIDs下添加得到的uuid。

解决的问题(2):同样的获取到Mac的uuid将DVTPlugInCompatibilityUUIDs下相同的删除掉重新添加uuid。

这样我们重启Xcode就可以恢复插件重新使用。但是当我们插件比较多的时候,上边的方法就变得很麻烦。

简便方法:第一种情况发生在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`(注意的是我们在打开Xcode的情况下输入命令,然后重新启动Xcode)。


简便方法:第二种情况发生在我们已经做了第一种情况,但是在重启的时候失误点击了skip bundles。这样的话我们打开终端输入命令


find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults delete {} DVTPlugInCompatibilityUUIDs


然后我们讲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`


命令,再次重启Xcode即可。

命令行的解释:


find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist 找到目录Plug-in下名字Info.plist的文件

-maxdepth 3 |寻找的范围是三层文件夹<br>

xargs -I{} 将得到的info.plist文件的集合复制给{}<br>

defaults delete {} DVTPlugInCompatibilityUUIDs 删除掉plist文件下的DVTPlugInCompatibilityUUIDs参数


defaults write {} DVTPlugInCompatibilityUUIDs -array-add ''在DVTPlugInCompatibilityUUIDs Array下添加key


defaults read /Applications/Xcode.app/Contents/Info.plist DVTPlugInCompatibilityUUID 获取Mac的uuid


里边可能有说的不准确的地方,但是如果按照这个步骤去做。插件肯定会被恢复。

当然我们也可以使用defaults write、defaults read、 defaults delete在Mac上处理起其他的文件。


博主app上线啦,快点此来围观吧

更多经验请点击

好文推荐:Apple Pay强势来袭,开发者应做的事情


分享文章