web-dev-qa-db-fra.com

Pourquoi mes plugins Xcode (tels que le format clang) installés avec Alcatraz ne fonctionnent plus après la mise à jour vers la nouvelle version de Xcode?

Aujourd'hui, j'ai mis à jour vers Xcode 6.3.2 et je ne peux pas exécuter le formatage du code Clang - il semble qu'il ne soit même pas installé. Chaque fois que je mets à jour Xcode, je dois réinstaller Alcatraz et la plupart des packages (pourquoi btw?) Pour les faire fonctionner sur la nouvelle version de Xcode.

Cette fois, j'ai réinstallé tous les packages (comme VVDocumenter, Color picker, etc.), mais le ClangFormat ne fonctionne pas - il n'apparaît même pas dans le menu "Edition". Une idée pourquoi?

btw. J'ai essayé de redémarrer Xcode ainsi que le Mac lui-même :)

MODIFIER (Solution):

Solution pour Xcode 6.3.x (Si cela ne fonctionne pas, utilisez la solution générale ci-dessous.)

Dans le terminal, entrez les informations suivantes:

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

Solution générale

Obtenez le nouvel UUID via le terminal:

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

Ajoutez le nouvel UUID à la clé DVTPlugInCompatibilityUUIDs dans le plugin (votre fichier xcplugin -> afficher le contenu du package -> Contents/Info.plist

45
Pavel Smejkal

Souvent, les aides suivantes: Réinstallez Alcatraz , redémarrez Xcode, désinstallez et réinstallez votre plugin. Parfois, il est utile de redémarrer à nouveau Xcode. Cela a fonctionné pour moi.

Si votre plugin n'apparaît toujours pas, le problème est probablement que la clé de compatibilité de votre nouveau Xcode n'est pas encore incluse dans la liste des clés de compatibilité de votre plugin.

Solutions possibles:

  • Attendez une mise à jour du plugin qui inclut le nouvel UUID de Xcode
  • Si vous ne voulez pas attendre (par exemple, si vous avez installé une version bêta de Xcode et qu'il faudrait trop de temps pour que les plugins soient mis à jour), vous pouvez ajouter manuellement le nouvel UUID de Xcode au plugin (détails sur la façon de faire voir ci-dessous). Bien sûr, il n'y a aucune garantie que votre plugin fonctionnera alors. Si Xcode a changé de sorte qu'il n'est vraiment plus compatible, cela ne fonctionnera bien sûr pas. Cependant, cela fonctionnera souvent.

Pour ajouter le nouvel UUID au plugin:

Dans le terminal, entrez les informations suivantes si vous utilisez 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

Pour les autres versions de Xcode, obtenez l'UUID de Xcode via le terminal: defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID et l'utiliser pour mettre à jour l'UUID dans la commande find ci-dessus.

[Au lieu d'utiliser la commande find ci-dessus, vous pouvez également ajouter manuellement le nouvel UUID à la clé DVTPlugInCompatibilityUUIDs dans le module d'extension (votre fichier xcplugin -> afficher le contenu du package -> Contents/Info.plist)]

Sources: GitHub et poster par " ianmasters "

44
vomako

Après avoir installé Xcode 6.4, je choisis "Skip Bundles", je ne trouve pas Alcatraz.

Pour commencer, j'essaie d'ajouter l'UUID, mais Alcatraz ne fonctionne pas non plus;

Essayez ensuite ceci:

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

Dans iTerm montrer ci-dessous:

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

mais ce fichier ne peut pas être modifié, supprimez donc:

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

Ensuite, je réinstalle Alcatraz, Xcode affiche à nouveau "Load Bundles", cette fois je ne vais pas me tromper, choisissez "Load Bundles".

29
wenghengcong

Vous pouvez utiliser ce script pour mettre à jour le plugin de votre Xcode après la mise à jour (fonctionne très bien avec 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

ou une copie de mon Gist https://Gist.github.com/MaciejGad/86302b6b8bdb1ee25115

19
bazyl87

Il s'avère que Xcode a maintenant une liste blanche/liste noire de bundles que vous activez. Vous pouvez le vérifier à partir du terminal en exécutant:

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

La mauvaise nouvelle est que l'invite de chargement des bundles ne s'affichera plus, même si vous réinstallez Alcatraz. Le correctif est simple cependant, supprimez simplement la liste blanche/liste noire en exécutant:

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

et rouvrez Xcode pour être invité à nouveau (et cette fois assurez-vous de cliquer sur "Charger les faisceaux").

Message d'origine ici: Réactiver Alcatraz sur Xcode 6.3.2 ou plus récent

17
Elviin Goomez

Utilisez le code général pour "toutes les versions" de Xcode dans le terminal, puis redémarrez Xcode, tout ira bien:

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

Veuillez noter que le code a combiné le code des autres réponses.

Si la version de votre Xcode est 6.3.2, le code ci-dessus est égal à

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

Lorsque votre Xcode est 6.3 ou 6.3.1, est égal à:

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

Vous pouvez constater que la différence est le code à la fin, c'est l'uuid de Xcode, donc nous pouvons obtenir le nouvel uuid de Xcode utiliser ceci

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

et le changer à la fin de ce code.

Si cela ne fonctionne toujours pas, vous n'avez peut-être pas choisi "charger le paquet" dans l'alerte de Alcatraz enter image description here

Si vous avez choisi "skip bundle", vous pouvez le faire

  1. recharger Alcatraz
  2. l'alerte de Alcatraz réapparaîtra, choisissez le lot de chargement
  3. utilisez le code ci-dessus en thermique
  4. recharger Xcode
  5. avec succès ????!!

EDIT: J'ai essayé, j'ai juste besoin d'utiliser à nouveau le code général dans le terminal, l'alerte s'affichera à nouveau, choisissez-le, ça ira .

5
ElonChan
3
Zappel

La clé de compatibilité du plugin ne fonctionnait pas pour 6.3.2/6.4.b2

Examinons ce fil: https://github.com/omz/Dash-Plugin-for-Xcode/issues/37 - ils ont un problème et une solution.

Résumé général : XCode a changé la façon de charger les plugins (les plugins personnalisés se chargent d'abord), il est donc nécessaire de faire quelques changements de code.

2
deksden

Essayez de construire à partir de la source plutôt que d'installer à l'aide de la commande curl! Pour une raison quelconque, rien de ce que j'ai fait avec la commande curl n'a fonctionné pour moi, y compris le changement de l'UUID. J'ai donc tout supprimé du dossier du plugin et téléchargé le master et fait une construction. Redémarrez xCode et acceptez la boîte de dialogue. Peut-être que cela vous aidera.

0
smileBot

Ce script met à jour les UDID de vos plugins et garantit que vous êtes invité à charger des bundles:

#!/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
0
arsenius