Почему мои Xcode-плагины (такие как формат clang), установленные с Alcatraz, больше не работают после обновления до новой версии Xcode?

Сегодня я обновился до Xcode 6.3.2, и я не могу запустить форматирование кода Клана - похоже, он даже не установлен. Каждый раз, когда я обновляю Xcode, мне нужно переустановить Alcatraz и большинство пакетов (почему именно?), Чтобы заставить их работать с новой версией Xcode.

На этот раз я переустановил все пакеты (например, VVDocumenter, Color picker и т.д.), но ClangFormat не работает - он даже не появляется в меню "Изменить". Любая идея почему?

кстати. Я попытался перезапустить Xcode, а также сам Mac:)

EDIT (решение):

Решение для 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 в ключ DVTPlugInCompatibilityUUID в плагине (ваш файл xcplugin → показать содержимое пакета → Содержание/Info.plist

Ответ 1

Часто бывает полезно: Переустановить Alcatraz, перезапустить Xcode, удалить и установить ваш плагин. Иногда это помогает снова перезапустить Xcode. Это сработало для меня.

Если ваш плагин по-прежнему не отображается, проблема в том, что ключ совместимости вашего нового Xcode еще не включен в список ключей совместимости вашего плагина.

Возможные решения:

  • Дождитесь обновления плагина, который включает новый UUID Xcode
  • Если вы не хотите ждать (например, если вы установили бета-версию Xcode, и для плагинов потребуется слишком много времени), вы можете вручную добавить новый UUID Xcode к плагину (подробнее см. как это сделать, см. ниже). Конечно, нет никакой гарантии, что ваш плагин будет работать тогда. Если 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 получите UUID Xcode через терминал: defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID и используйте его для обновления UUID в команде find выше.

[Вместо использования вышеприведенной команды find вы также можете вручную добавить новый UUID к ключу DVTPlugInCompatibilityUUIDs в пакете плагинов (ваш xcplugin файл → показать содержимое пакета → Contents/Info.plist)]

Источники: GitHub и разместить сообщение ianmasters "

Ответ 2

После установки Xcode 6.4 я выбираю "Skip Bundles", я не могу найти Alcatraz.

Fisrt Я пытаюсь добавить UUID, но Alcatraz также не работает;

Затем попробуйте следующее:

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

В iTerm ниже:

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

но этот файл не может редактировать, поэтому delete:

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

Затем я переустанавливаю Alcatraz, Xcode снова показывает "Load Bundles", на этот раз я не ошибаюсь, выберите "Load Bundles".

Ответ 3

Вы можете использовать этот script для обновления плагина 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

или скопировать из моего gist https://gist.github.com/MaciejGad/86302b6b8bdb1ee25115

Ответ 4

Оказывается, теперь 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" ).

Orignal post здесь: Повторно активируйте Alcatraz на Xcode 6.3.2 или новее

Ответ 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

Вы можете обнаружить, что разница в коде в конце, это uuid Xcode, поэтому мы можем получить новый uuid Xcode, используя этот

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

и измените его в конце этого кода.

Если это все еще не работает, возможно, вы не выбрали "пакет загрузки" в предупреждении Alcatraz enter image description here

Если вы выбрали "skip bundle", вы можете сделать это

  • перезагрузить Alcatraz
  • появится предупреждение Alcatraz, выбор пакета загрузки
  • используйте приведенный выше код в термическом
  • перезагрузить Xcode
  • успешно 🍻!!

EDIT: Я пробовал, просто нужно снова использовать общий код в терминале, предупреждение снова появится, выберете его, все будет в порядке.

Ответ 7

Ключ совместимости плагинов не работает для 6.3.2/6.4.b2

Посмотрите на эту тему: https://github.com/omz/Dash-Plugin-for-Xcode/issues/37 - у них есть проблема и решение.

Общее резюме: XCode действительно изменил способ загрузки плагинов (сначала загружаются пользовательские плагины), поэтому необходимо внести некоторые изменения в код.

Ответ 8

Попробуйте создать исходный код вместо установки с помощью команды curl! По какой-то причине я ничего не сделал с командой curl, которая работала для меня, включая изменение UUID. Поэтому я удалил все из папки плагина и загрузил мастер и сделал сборку. Перезапустите xCode и примите диалог. Возможно, это поможет вам.

Ответ 9

Этот script обновляет 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