web-dev-qa-db-fra.com

Impossible de construire un projet XCode à partir de la ligne de commande, mais de XCode

J'ai créé dans XCode une application iPhone simple basée sur la navigation. L'application est générée et fonctionne correctement sous XCode, mais je ne parviens pas à la créer depuis la ligne de commande. 

Depuis le terminal j'exécute:

xcodebuild -project George.xcodeproj -alltargets -parallelizeTargets -configuration Debug build

mais je reçois cette erreur:

=== BUILD NATIVE TARGET George OF PROJECT George WITH CONFIGURATION Debug ===
Check dependencies
[BEROR]Code Sign error: The identity 'iPhone Developer' doesn't match any valid certificate/private key pair in the default keychain

** BUILD FAILED **


The following build commands failed:
    Check dependencies
(1 failure)

Y a-t-il quelque chose qui cloche dans la façon dont j'essaie de le gérer?

26
mgamer

En plus de déverrouiller le trousseau, vous pouvez également spécifier l'identité de code-signature (ou la définir dans votre cible). Les certificats de développement prennent la forme "Développeur iPhone: Société Inc", les certificats de distribution tels que "Distribution iPhone: Société Inc".

xcodebuild -project George.xcodeproj -alltargets -parallelizeTargets -configuration Debug build CODE_SIGN_IDENTITY='iPhone Developer: Company Inc' 
26
Bryan

Vous pouvez créer à partir de la ligne de commande une construction ciblée sur le simulateur sans problèmes de signature.

Cela a résolu le problème de signature pour moi:

xcodebuild -sdk iphonesimulator

Source: xcodebuild Code Sign error: Aucune identité de codification correspondante trouvée:

Cela est particulièrement utile si la construction en ligne de commande sert uniquement à vérifier le code source dans le cadre d’une configuration d’intégration continue.

4

Très probablement, votre trousseau est verrouillé. Essayez de le déverrouiller avant d’exécuter le script, vous pouvez le faire en ligne de commande (juste avant de le construire):

security unlock -p YourPasswordToKeychain ~/Library/Keychains/login.keychain

Remarque, j'utilise le trousseau "login" qui pourrait être différent dans votre cas

En outre, si cela ne résout pas le problème, essayez de supprimer tous les autres paramètres et laissez-les comme ceci:

xcodebuild -configuration Debug et nettoyer au préalable xcodebuild -configuration Debug clean

4
Nick

J'utilise shenzhen, cela montre aussi cette erreur. 

Il se trouve que cela se produit lorsque je connecte mon iPad, mais ce n'est pas dans le profil de provision En passant --verbose à shenzhen. ça montre:

Check dependencies
Code Sign error: No matching provisioning profiles found: None of the valid     provisioning profiles include the devices:
XXXX’s iPad
CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 8.3'

débranchez l'appareil, tout fonctionne bien ...

3
Zitao Xiong

J'ai eu une erreur d'archivage semblable mais pas tout à fait identique à celle du message d'origine:

** ARCHIVE FAILED **


The following build commands failed:
    Check dependencies
(1 failure)

Cela s'est avéré être un service d'application manquant (dans mon cas, le service/droit HealthKit), que j'avais activé dans mon ID d'application de développement mais pas mon ID d'application de production. 

Vous activez les services dans le centre des membres Apple: https://developer.Apple.com/account/ios/identifiers/bundle/bundleList.action

1
Kevin Qi

En fonction de l'objectif de votre script, il peut également être suffisant d'activer simplement la signature de code dans le script, ce que vous pouvez faire en définissant CODE_SIGN_IDENTITY = ''

xcodebuild -project George.xcodeproj -alltargets -parallelizeTargets -configuration Debug build CODE_SIGN_IDENTITY='' 

De toute évidence, cela ne sert à rien si vous essayez de créer une version finale à partir d'un script, mais cela peut aller si vous essayez simplement de faire une construction test pour l'intégration continue (par exemple, à partir de Jenkins, pour vous assurer que personne n'a cassé quoi que ce soit) .

1
Sam Deane

Cela peut être corrigé dans XCode 8.0 en passant de "Distribution iOS" à "Développement iOS" dans XCode. Il ne semble pas que cela devrait fonctionner, mais cela fonctionne pour une raison quelconque.

0
Cory Trese