46

今天我更新到 Xcode 6.3.2 并且我无法运行 Clang 代码格式化 - 似乎它甚至没有安装。每次更新 Xcode 时,我都必须重新安装 Alcatraz 和大多数软件包(为什么要顺便说一句?)以使它们在新版本的 Xcode 上工作。

这次我重新安装了所有软件包(如 VVDocumenter、颜色选择器等),但 ClangFormat 不起作用——它甚至没有出现在“编辑”菜单中。知道为什么吗?

顺便提一句。我试图重新启动 Xcode 以及 Mac 本身 :)

编辑(解决方案):

Xcode 6.3.x 的解决方案(如果这不起作用,请使用下面的通用解决方案。)

在终端中,输入以下内容:

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

一般解决方案

通过终端获取新的 UUID:

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

将新的 UUID 添加到插件中的 DVTPlugInCompatibilityUUIDs 键(您的 xcplugin 文件 --> 显示包内容 --> Contents/Info.plist

4

9 回答 9

45

通常,以下方法会有所帮助:重新安装 Alcatraz,重新启动 Xcode,卸载并重新安装您的插件。有时重新启动 Xcode 会有所帮助。这对我有用。

如果您的插件仍然没有出现,问题可能是您的新 Xcode 的兼容性密钥尚未包含在插件的兼容性密钥列表中。

可能的解决方案:

  • 等待包含 Xcode 新 UUID 的插件更新
  • 如果您不想等待(例如,如果您安装了 Xcode 的测试版,并且插件更新时间过长),您可以手动将 Xcode 的新 UUID 添加到插件中(详细说明如何做这见下文)。当然,不能保证您的插件届时可以工作。如果 Xcode 发生了变化,以至于它真的不再兼容,它当然不会工作。但是,通常它会起作用。

将新的 UUID 添加到插件:

如果您使用 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

对于其他版本的 Xcode,通过终端获取 Xcode 的 UUID:并在上面的命令defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID中使用它来更新 UUID 。find

[除了使用find上面的命令,您还可以手动将新的 UUID 添加到DVTPlugInCompatibilityUUIDs插件包中的键(您的xcplugin文件 --> 显示包内容 --> Contents/Info.plist)]

来源:GitHub和“ ianmasters ”发帖

于 2015-05-21T07:57:23.777 回答
29

安装 Xcode 6.4 后,我选择“Skip Bundles”,找不到 Alcatraz。

首先我尝试添加 UUID,但 Alcatraz 也不起作用;

然后试试这个:

defaults read com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-6.4 

在 iTerm 中显示如下:

allowed =     {
};
skipped =     {
    "com.mneorr.Alcatraz" =         {
        version = 1;
    };
};

但是这个文件不能编辑,所以删除:

defaults delete com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-6.4

接下来,我重新安装 Alcatraz,Xcode 再次显示“Load Bundles”,这次我不会出错,选择“Load Bundles”。

于 2015-07-04T02:49:36.320 回答
19

您可以使用此脚本在更新后更新您的 Xcode 插件(适用于 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

或从我的要点复制https://gist.github.com/MaciejGad/86302b6b8bdb1ee25115

于 2015-07-01T09:36:27.480 回答
17

事实证明,Xcode 现在有一个您启用的捆绑包的白名单/黑名单。您可以通过运行从终端检查它:

$ 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;
    };
};}

坏消息是,即使您重新安装 Alcatraz,加载捆绑包的提示也不会再次显示。修复很简单,只需通过运行删除白名单/黑名单:

defaults delete com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-6.3.2

并重新打开 Xcode 以再次提示(这次确保单击“Load Bundles”)。

此处的原始帖子: 在 Xcode 6.3.2 或更高版本上重新启用 Alcatraz

于 2015-06-09T23:22:24.587 回答
5

在终端使用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 版本是 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

当您的 Xcode 为 6.3 或 6.3.1 时,等于:

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

你可以发现不同的是最后的代码,它是Xcode的uuid,所以我们可以使用这个来获取Xcode的新uuid

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

并在该代码的末尾更改它。

如果这仍然不起作用,您可能没有在Alcatraz的警报中选择“加载包” 在此处输入图像描述

如果你选择了“skip bundle”,你可以这样做

  1. 重新加载恶魔岛
  2. 恶魔岛的警报会再次出现,选择加载包
  3. 在热中使用上面的代码
  4. 重新加载 Xcode
  5. 成功地 !!

编辑: 我试过了,只需要再次使用终端中的通用代码,警报会再次显示,选择它就可以了。

于 2015-05-21T09:51:43.130 回答
3

从 Xcode 6.3.2 开始,这对我有用

http://pablin.org/2015/05/27/re-enable-alcatraz-on-xcode-6-dot-3-2-or-newer/

于 2015-06-12T10:55:51.137 回答
2

插件兼容性密钥不适用于 6.3.2 / 6.4.b2

让我们看看这个线程:https ://github.com/omz/Dash-Plugin-for-Xcode/issues/37 - 他们有一个问题和解决方案。

总体总结:XCode确实改变了加载插件的方式(自定义插件先加载),所以有必要做一些代码修改。

于 2015-05-21T12:20:11.907 回答
0

尝试从源代码构建,而不是使用 curl 命令安装!出于某种原因,我对 curl 命令所做的任何事情都没有为我工作,包括更改 UUID。所以我从插件文件夹中删除了所有内容并下载了主文件并进行了构建。重新启动 xCode 并接受对话框。也许这会对你有所帮助。

于 2015-06-01T16:37:09.960 回答
0

此脚本会更新插件的 UDID 并确保系统提示您加载包:

#!/bin/bash
xcodeUUID=`defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID`
echo $xcodeUUID
xcodeVersion=`defaults read /Applications/Xcode.app/Contents/Info.plist CFBundleShortVersionString`
echo $xcodeVersion

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

defaults delete com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-$xcodeVersion
于 2016-09-19T07:35:09.407 回答