J'essaie d'ajouter un nouveau profil d'approvisionnement à mon Xcode afin de tester une application sur le périphérique. Voici les étapes que j'ai suivies:
Suppression de tous les certificats et profils d'approvisionnement
Créer/Ajouter IOS Certificat Dev
Ajouter mon IOS Device Online
Créer IOS Profil de provisioning
Ajouter IOS Profil d'approvisionnement
Clean App
Construire puis exécuter App
Définir la définition de code et le profil d'approvisionnement dans les paramètres de construction
Beaucoup de recherches sur Google> sans succès
Voici l'erreur que je reçois:
CSSM_SignData returned: 800108E6
/Users/alexpelletier/Library/Developer/Xcode/DerivedData/MyExpense-efnqzvoqwngzcmazaotyalepiice/Build/Products/Debug-iphoneos/MyExpense.app: errSecInternalComponent
Command /usr/bin/codesign failed with exit code 1
Ouvrez Accès au troussea, puis dans le menu Fichier, sélectionnez Verrouiller tous les trousseaux.
Revenez ensuite à Xcode, nettoyez et reconstruisez. Il vous demandera à nouveau votre mot de passe pour déverrouiller le trousseau.
Après cela, si vous n’avez pas d’autres problèmes de compilation, cela réussira!
Cela ressemble à un bug dans le mécanisme de signature de code, le redémarrage de votre mac devrait résoudre le problème
Cela se produit lorsque le trousseau de connexion est verrouillé. Pour déverrouiller le trousseau de connexion, exécutez:
security unlock-keychain login.keychain
Ensuite, essayez à nouveau la construction ou la signature de code. Le code d'erreur en question est décrit dans la documentation d'Apple comme une erreur interne, il est donc tout à fait possible que cela se produise dans d'autres cas également.
Avait le même problème sur High Sierra
/Xcode 9.4.1
, toutes les tentatives de signature ont abouti à errSecInternalComponent
Alternativement:
exécuter la commande codesign sur le terminal mac et "Toujours autoriser"/usr/bin/codesign
Si vous essayez de signer à partir de ssh/CI, vous devez également exécuter
security unlock-keychain login.keychain
avant d'essayer de signer le bundle d'application
J'ai rencontré le même problème, je redémarre mon MacOS et cela fonctionne.
En Chine, nous avons un dicton entre développeurs:
Petits problèmes, il suffit de redémarrer.Big problèmes, devrait réinstaller.
Parfois, le dicton ci-dessus vous aidera grandement!
Au cas où cela aiderait quelqu'un d'autre, j'ai rencontré une erreur errSecInternalComponent
avec codesign
parce que je l'exécutais sur une session SSH sur ma machine MacOS. L'exécution de la même commande à partir d'une fenêtre de terminal sur la machine macOS elle-même a fonctionné.
C'est probablement parce que codesign
a besoin d'accéder à la clé privée à partir du trousseau de connexion.
Fonctionnement security unlock-keychain login.keychain
(comme expliqué par réponse de cbracken ) de la même session devrait également fonctionner.
Si vous essayez de vous connecter à partir de la commande ssh:
security unlock-keychain login.keychain
avant d'essayer de signer le bundle d'application
ou de l'interface utilisateur
Mettre à jour le contrôle d'accès clé à "Autoriser toutes les applications à accéder à cet élément"
Merci à @Equilibrium et @Jon McClung
Iran security unlock-keychain login.keychain
et mon mot de passe de connexion n'a pas fonctionné. J'ai donc redémarré, puis j'ai à nouveau lancé Xcode et cela a fonctionné. L'exécution de la commande fonctionne également. Problème étrange.
Essayez juste une fois en utilisant le terminal mac mais pas depuis la session ssh
security unlock-keychain login.keychain
Et choisissez toujours autoriser dans la boîte de dialogue. Et puis vous pourriez xcodebuild dans la session distante.
Comme l'a souligné @Equilibrium dans l'un des commentaires, si vous êtes en ligne de commande env. comme Jenkins (mon cas), vous devrez peut-être passer le mot de passe à la commande security-unlock mentionnée dans les solutions.
Donc, au lieu d'utiliser,
security unlock-keychain login.keychain
utilisation:
security unlock-keychain -p <login-keychain-password> <path-to-login-keychain>
où le trousseau de chemin d'accès au login peut être $ HOME/Bibliothèque/Keychains/login.keychain (mon cas) ou simplement login.keychain