摘要:Xcode升級後打開Xcode會提示loadbundle或Skipbundle,一般我們選擇loadbudle,Xcode插件依然有效,選擇Skipbundle,Xcode插件會失效。有人想裝兩個版本的Xcode,後裝的那個也會出現插件失效的情況。
一.Xcode插件失效原因
並不是升級或重裝後原本的插件被刪掉了,其實插件還在這個目錄~/Library/Application Support/Developer/Shared/Xcode/Plug-ins 。之所以插件失效,是因為每個插件只供特定UUID的Xcode使用,更新後uuid改變,於是便不能正常使用。
二.解決辦法
1.查看當前Xcode的uuid
在終端執行defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID,會得到一串 UUID 碼。可能你的Xcode不是你安裝的,而是直接拷貝別人安裝好的Xcode到你的應用程序中,那麼這個命令得不到Xcode的uuid,會出現如下圖的問題:
另外一種辦法也能得到Xcode的uuid,在應用程序中找到Xcode,右鍵選擇顯示包內容,找到Info.plist文件打開找到DVTPlugInCompatibilityUUID對應的值就是我們要的uuid
2. 修改插件的uuid為當前Xcode的uuid
找到這個目錄~/Library/Application Support/Developer/Shared/Xcode/Plug-ins,找到對應的插件,右鍵顯示包內容,找到Info.plist文件打開找到DVTPlugInCompatibilityUUIDs的項目,添加一個Item,Value的值為之前Xcode的UUID,保存.
3.重啟 Xcode 之後會提示"Load bundle"、 "Skip Bundle",這裡必須選擇"Load bundle",不然插件無法使用。如果又不小心點了Skip Bundle,那就刪掉你剛才在插件plist文件裡添加的那行Item,然後重啟Xcode,然後再重新剛才的那幾步。至此問題已經完美解決。那麼有人會問:如果很多個插件都失效,不想一個一個的改,有沒有快速的方法,有,請看下一步。
三.批量更新插件的 DVTPlugInCompatibilityUUID 的命令(建議使用sudo方式執行)
在終端不能用命令defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID得到uuid的,此方法不適用。批量修改命令為
代碼如下:
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 DVTPlugInCompatibilityUUID`
好了,問題結束了。