在更新到Xcode的新版本后,为什么我的Xcode插件(如clang格式)与Alcatraz一起安装后不再有效?

Pav*_*kal 45 iphone xcode updates ios clang-format

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

这次我重新安装了所有软件包(如VVD文件管理器,颜色选择器等),但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
Run Code Online (Sandbox Code Playgroud)

一般解决方案

通过终端获取新的UUID:

defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID
Run Code Online (Sandbox Code Playgroud)

将新的UUID添加到插件中的DVTPlugInCompatibilityUUIDs键(您的xcplugin文件 - > show package contents - > Contents/Info.plist

vom*_*ako 44

通常,以下有助于:重新安装恶意软件,重新启动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
Run Code Online (Sandbox Code Playgroud)

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

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

来源:GitHub和" ianmasters "发布

  • Xcode 6.3.x的解决方案似乎仍能正常工作 - 使用General解决方案的第1步首先检索要使用的UUID(例如,6.3.2是E969541F-E6F9-4D25-8158-72DC3545A6C6).然而,有人说Xcode 6.4中的插件加载行为正在改变,如下面的答案中所述. (3认同)

wen*_*ong 29

安装Xcode 6.4后,我选择"Skip Bundles",我找不到恶魔岛.

Fisrt我尝试添加UUID,但恶魔岛也没有用;

然后尝试这个:

defaults read com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-6.4 
Run Code Online (Sandbox Code Playgroud)

在以下iTerm节目中:

allowed =     {
};
skipped =     {
    "com.mneorr.Alcatraz" =         {
        version = 1;
    };
};
Run Code Online (Sandbox Code Playgroud)

但是这个文件无法编辑,所以删除:

defaults delete com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-6.4
Run Code Online (Sandbox Code Playgroud)

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


baz*_*l87 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
Run Code Online (Sandbox Code Playgroud)

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

  • 这应该投票.由于它工作得很好,所以不需要查找UUID号码.干得好. (4认同)

小智 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;
    };
};}
Run Code Online (Sandbox Code Playgroud)

坏消息是,即使重新安装恶魔岛,加载捆绑包的提示也不会再显示.修复很简单,只需运行以下命令删除白名单/黑名单:

defaults delete com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-6.3.2
Run Code Online (Sandbox Code Playgroud)

并重新打开Xcode再次提示(这次确保单击"加载包").

Orignal在这里发布: 在Xcode 6.3.2或更新版本上重新启用Alcatraz


Elo*_*han 5

在终端中使用Xcode"all version"的通用代码,然后重新启动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
Run Code Online (Sandbox Code Playgroud)

请注意代码已经结合其他答案的代码.

如果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
Run Code Online (Sandbox Code Playgroud)

当你的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
Run Code Online (Sandbox Code Playgroud)

你可以发现差异是最后的代码,它是Xcode的uuid,所以我们可以得到Xcode的新uuid使用这个

 defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID
Run Code Online (Sandbox Code Playgroud)

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

如果这仍然不起作用,您可能没有在恶魔岛的警报中选择"加载捆绑" 在此输入图像描述

如果您选择了"跳过捆绑",则可以执行此操作

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

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