comment résoudre le problème "La commande / bin / sh a échoué avec le code de sortie 1" sur l'iphone


92

J'ai utilisé une bibliothèque statique de cacao dans mon application. Lorsque je compile ma bibliothèque, j'ai l'erreur suivante:

Shell Script invocation error:can't open input file:
/Users/sijuthomas/Library/Developer/Xcode/DerivedData/SCXML2-
    bbttehupryhijphhjdiemcytkvgy/Build/Products/Debug-iphonesimulator/
    libSCXMLParser.a (No such file or directory)
Command /bin/sh failed with exit code 1

Capture d'écran d'erreur

Comment puis-je réparer cela?

Réponses:


208

 Target -> Build-Phases -> exemples de mise à jour

Cliquez sur la case à cocher On Run si elle n'est pas sélectionnée.


2
Cette case à cocher peut être sous Build Phases → Bundle React Native code and images.
rishat

4
pour moi, cela fonctionne lors de la construction / installation de l'application sur le téléphone mais pas lors de l'archivage
Adeem

Cette réponse est correcte, mais lorsque vous réglez le mode Generc iOS Device pour obtenir la compilation de tous ... obtenez à nouveau l'erreur @Harshad
reza_khalafi

@reza_khalafi assurez-vous d'avoir des données claires et supprimez les données dérivées. puis réessayez.
Harshad

1
@Harshad Fonctionne pendant la construction mais pas pour l'archivage
NGB

63

J'ai eu ce problème parce que j'ai refusé l'accès au trousseau et pour le résoudre, vous devez ouvrir le trousseau, puis cliquez sur le verrou en haut à droite de l'écran pour le verrouiller à nouveau, après cela, vous pouvez archiver et cela fonctionnera


3
MERCI BEAUCOUP! Btw, au moins pour moi la serrure est dans le côté gauche. Il était ouvert et a dû le fermer.
Eironeia

J'ai partagé cette solution à partir d'une source dont je ne me souviens malheureusement pas.
Salem Binmusaed le

J'ai reçu le code de sortie 134 lorsque j'essaie d'archiver le produit, mais je pourrais installer l'application sur l'appareil, j'ai ouvert le trousseau mais pourriez-vous trouver le verrou n'importe où, ma version 9.2 de Xcode, j'ai vraiment besoin d'aide
showmyroutes

42

La suppression des «données dérivées» a fonctionné pour moi.

Dans Xcode, allez dans Fichier> Paramètres de l'espace de travail> Cliquez sur la flèche à côté du chemin du fichier de données dérivées> déplacez le dossier "Données dérivées" vers la corbeille.


1
À quelle version de Xcode parlez-vous? ... Je n'ai pas le menu / les fenêtres ou les options
auxquels

2
its in windows-> Organizer not Windows Projects
CthulhuJon

cela fonctionne mais il fallait nettoyer le projet et redémarrer Xcode pour moi
Hosny

1
Fichier-> Paramètres de l'espace de travail ...-> Données dérivées. Cliquez sur la flèche à la fin du chemin. Faites un clic droit sur le dossier et placez-le dans la corbeille. iOS 10.12.6
Augustas

30

Il semble que vous exécutez un script shell et qu'il ne trouve pas votre fichier spécifique. Regardez Target -> Build-Phases -> RunScriptsi vous exécutez un script.

Vous pouvez vérifier si un script est en cours d'exécution dans votre sortie de construction (dans le panneau du navigateur). Si votre script fait quelque chose de mal, la phase de construction s'arrêtera.


SKM J'ai modifié ma réponse. Peut-être son Xcode qui a créé ce script afin de trouver votre bibliothèque statique. D'ailleurs, il ne compile pas car il ne trouve pas le fichier dans /Users/sijuthomas/Library/Developer/Xcode/DerivedData/SCXML2-bbttehupryhijphhjdiemcytkvgy/Build/Products/Debug-iphonesimulator/libSCXMLParser.a. Alors assurez-vous de l'inclure là
Mr Bonjour

19

J'ai eu le même problème pour le résoudre. Utilisez les étapes ci-dessous pour résoudre le problème dans Xcode 6.4.

  1. Cliquez sur Afficher le navigateur de projet dans la fenêtre Navigateur
  2. Maintenant, sélectionnez le projet immédiatement sous la fenêtre du navigateur
  3. Sélectionnez des cibles
  4. Sélectionnez l' onglet Phases de construction
  5. Option de liste déroulante Ouvrir le script
  6. Cochez la case Exécuter le script uniquement lors de l'installation

Capture d'écran pour les étapes

Maintenant, nettoyez votre projet (cmd + shift + k) et générez votre projet.


Cela devrait être la réponse acceptée. Pour un problème bin / sh c'est la solution.
Yash Bedi

9

Le nettoyage du dossier de construction (Cmd + Shift + Alt + K) a fonctionné pour moi


3

1) Supprimez le dossier pod et le fichier .xcworkspace 2) Ouvrez le dossier dans le terminal 3) Tapez «pod install»


1

Avez-vous ajouté la bibliothèque .a au projet xcode? (projet -> phases de construction -> Lier le binaire avec les bibliothèques -> cliquez sur le '+' -> cliquez sur 'ajouter autre' -> choisissez votre bibliothèque)

Et peut-être que la bibliothèque n'est pas compatible avec le simulateur, avez-vous essayé de compiler pour iDevice (pas pour simulateur)?

(Je me suis déjà battu avec le deuxième problème, j'ai une bibliothèque qui ne fonctionnait pas avec le simulateur mais avec un vrai appareil qu'il compile ...)


1

Pour moi, mon certificat est expiré. J'ai créé un nouveau certificat.


0

J'ai essayé de redémarrer Xcode (7) et rien ( avez-vous essayé de l'éteindre et de le rallumer du développement iOS pour moi :-)). J'ai ensuite essayé de redémarrer ma box et cela a fonctionné.

Dans mon cas, le script échouait lors de la copie d'un fichier d'un emplacement vers un autre. Je pense que cela aurait pu être lié au visionnage du Finder avec les droits d'écriture sur certains dossiers.


0

Pour moi, cette erreur s'est produite parce que j'ai changé le numéro de version de 1 à 1.0 et le numéro de version de 6 à 1.1 lorsque j'ai extrait le code de l'arborescence source. Je viens de le changer et de changer le numéro de version de 6 à 7 et cela a bien fonctionné.


0

Dans mon cas, il y avait de l'espace dans le chemin qui échouait le script.Si vous utilisez des variables telles que $PROJECT_DIRou $TARGET_BUILD_DIRremplacez-les "$PROJECT_DIR"ou "$TARGET_BUILD_DIR"respectivement.Après avoir ajouté des guillemets, mon script s'est exécuté avec succès.


0

mettez simplement votre script dans un fichier et exécutez ce fichier avec 2> / dev / null à la fin de la ligne de commande!

De cette façon, s'il y a un problème avec la commande, cela n'arrêtera pas votre build xcode

dans mon cas, j'exécutais juste une commande pour désinstaller ma copie précédente de l'application à partir d'un iPhone connecté, donc cela pourrait donner une erreur si l'iphone n'est pas là. Pour le résoudre:

$mobiledevice uninstall_app com.my.app 2>/dev/null



0

J'ai fait tout ce qui précède et j'ai passé une heure sur la question.

J'ai tout essayé ci-dessus et redémarré Xcode.

Enfin, l'ordinateur redémarré et tout fonctionne à nouveau normalement!


1
vous n'avez rien ajouté à ce message avec la réponse. Le redémarrage de l'ordinateur peut être un commentaire car il n'aide pas à expliquer ce qui n'allait pas.
Bojan Petkovic le

Un problème étrange, des données dérivées supprimées et un nouveau système de construction commuté / non commuté. Mais après un redémarrage, ça allait!
Oritm le

0

Je vais énumérer les choses que j'ai faites qui n'ont pas fonctionné pour moi et enfin ce qui a fonctionné

Tout d'abord, la réponse acceptée de Exécuter le script uniquement lors de l'installation n'a pas fonctionné.

La suppression des données dérivées n'a pas fonctionné.

Qu'est-ce qui a fonctionné:

  1. J'ai ajouté une nouvelle phase de construction dans les phases de construction

  2. Nouvelle phase de copie de fichiers

  3. Faites glisser et déposez le cadre choisi dans la cible de dépôt

  4. Définissez la 'Destination' sur Frameworks

Crédit dû au poste Medium de Kevin Le


0

Pour ceux qui ne veulent pas décocher cette option (en utilisant des cocoapodes par exemple), le problème peut être avec le certificat / la clé.

Xcode (ou tout autre outil que vous utilisez, comme un outil de ligne de commande) doit pouvoir utiliser le certificat / la clé du trousseau. Pour cela, ouvrez le trousseau, recherchez le certificat que vous souhaitez utiliser (généralement sur le logintrousseau My Certificates), faites un clic droit sur la clé, sélectionnez Get Info, cliquez sur l' Access Controlonglet et ajoutez l'application à la liste.

Si cela ne fonctionne pas, essayez de déverrouiller le trousseau.

Une autre option peut être de sélectionner Autoriser toutes les applications à accéder à cet élément au lieu d'applications spécifiques et / ou de déplacer le certificat / la clé vers le Systemtrousseau qui est partagé entre tous les comptes d'utilisateurs sur ce Mac.

Vérifiez également que le certificat n'est pas expiré.


0

1) option: Veuillez cocher exécuter le script uniquement lors de l'installation ...... il est juste de répondre à cette question

2) option: mise à jour du pod, nettoyer les données de dérivation,


0

Dans mon cas, l'un des scripts (lié à SwiftGen) échouait lors de la compilation.

J'ai résolu le problème en supprimant Podset en les mettant à jour à nouveau.

  1. Supprimez le pod problématique sous le Podsrépertoire ou utilisezpod deintegrate
  2. Installez / mettez à jour les pods en utilisant pod installoupod update

PS Il est possible que votre dépendance soit globale et ne soit pas dans des pods. Dans ce cas, vous pouvez également essayer de réinstaller cette dépendance.


0

LISEZ CECI SI VOUS UTILISEZ Crashlytics ET QUE VOUS AVEZ CE PROBLÈME ...

J'avais le même problème que ci-dessus Command /bin/sh failed with exit code 1plus spécifiquement[31merror: Could not fetch upload-symbols settings: An unknown error occurred fetching settings.[0m

La première solution (activer le script d'exécution uniquement lors de l'installation) m'a permis de construire ma cible dans le simulateur, mais je n'ai pas pu archiver ma build.

J'ai résolu ce problème d'archivage en activant Crashlytics sur Firebase. Je suis toujours habitué à Fabric où Crashlytics est automatiquement activé. Une fois que j'ai activé Crashlytics dans la console Firebase pour le GoogleService-Info.plist correspondant, j'ai pu archiver sans cette erreur.


-1

Retirez tous les pods et réinstallez-les.

Pas:

  1. commentez tous les pods et exécutez pod install
  2. décommentez tous les pods et exécutez pod install
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.