可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
Today I updated to Xcode 6.3.2 and I can't run the Clang code formatting – it seems like it's not even installed. Everytime I update Xcode, I have to reinstall Alcatraz and most of the packages (why btw?) to make them work on the new version of Xcode.
This time I reinstalled all packages (like VVDocumenter, Color picker, etc), but the ClangFormat doesn't work – it doesn't even appear in the "Edit" menu. Any idea why?
btw. I tried to restart Xcode as well as the Mac itself :)
EDIT (Solution):
Solution for Xcode 6.3.x (If this does not work, use the general solution below.)
In terminal, enter the following:
find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add 9F75337B-21B4-4ADC-B558-F9CADF7073A7
General solution
Get the new UUID via the terminal:
defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID
Add the new UUID to the DVTPlugInCompatibilityUUIDs key in the plugin (your xcplugin file --> show package contents --> Contents/Info.plist
回答1:
Oftentimes, the following helps: Re-install Alcatraz, restart Xcode, de-install and re-install your plugin. Sometimes it helps to restart Xcode again. This worked for me.
If your plugin still does not show up, the problem is probably that the the compatibility key of your new Xcode is not yet included in the list of compatibility keys of your plugin.
Possible solutions:
- Wait for an update of the plugin that includes the new UUID of Xcode
- If you do not want to wait (for example, if you installed a beta of Xcode and it would take too long for the plugins to be updated), you may manually add the new UUID of Xcode to the plugin (details on how to do this see below). Of course, there is no guarantee that your plugin will work then. If Xcode has changed so that it is really not compatible anymore, it will, of course, not work. However, oftentimes it will work.
To add the new UUID to the plugin:
In terminal, enter the following if you use Xcode 6.3.2:
find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add E969541F-E6F9-4D25-8158-72DC3545A6C6
For other versions of Xcode, get the UUID of Xcode via the terminal: defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID
and use it to update the UUID in the find
command above.
[Instead of using the find
command above, you may also manually add the new UUID to the DVTPlugInCompatibilityUUIDs
key in the plugin package (your xcplugin
file --> show package contents --> Contents/Info.plist
)]
Sources: GitHub and post by "ianmasters"
回答2:
After install Xcode 6.4, I choose "Skip Bundles",I can't find Alcatraz.
Fisrt I try the add UUID,but Alcatraz also no working;
Then try this:
defaults read com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-6.4
In iTerm show below:
allowed = {
};
skipped = {
"com.mneorr.Alcatraz" = {
version = 1;
};
};
but this file can't edit,so delete:
defaults delete com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-6.4
Next,I reinstall Alcatraz,Xcode show “Load Bundles" again,this time I will not make wrong,choose "Load Bundles".
回答3:
You could use this script to update your Xcode's plugin after update (works fine with Xcode 7.3):
#!/bin/bash
xcodeUUID=`defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID`
echo $xcodeUUID
find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add $xcodeUUID
or copy from my gist https://gist.github.com/MaciejGad/86302b6b8bdb1ee25115
回答4:
It turns out, Xcode now has a whitelist / blacklist of bundles you enable. You can check it from the Terminal by running:
$ defaults read com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-6.3.2
{
allowed = {
};
skipped = {
"com.mneorr.Alcatraz" = {
version = 1;
};
"com.onevcat.VVDocumenter-Xcode" = {
version = 1;
};
"com.travisjeffery.ClangFormat" = {
version = 1;
};
};}
The bad news is that the prompt to load the bundles won’t show again, even if you reinstall Alcatraz. The fix is simple though, just delete the whitelist / blacklist by running:
defaults delete com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-6.3.2
and re-open Xcode to be prompted again (and this time make sure you click “Load Bundles”).
Orignal post here:
Re-enable Alcatraz on Xcode 6.3.2 or newer
回答5:
Use the general code for "all version" of Xcode in terminal,then restart Xcode ,all will be right:
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
Please attention that the code have combined the code of other answers.
If the version of your Xcode is 6.3.2,the code above is equal to
find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add E969541F-E6F9-4D25-8158-72DC3545A6C6
When your Xcode is 6.3 or 6.3.1 ,is equal to:
find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add 9F75337B-21B4-4ADC-B558-F9CADF7073A7
You can find that the difference is the code at the end,it's the uuid of Xcode,so we can get the new uuid of Xcode use this
defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID
and change it at the end of that code.
If this still not work,you may have not chosen "load bundle" in the alert of Alcatraz
If you have chosen "skip bundle",you can do this
- reload Alcatraz
- the alert of Alcatraz will appear again, choice load bundle
- use the code above in thermal
- reload Xcode
- successfully