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?

Ben10
la source

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.

Harshad
la source
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

Salem Binmusaed
la source
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.

hgwhittle
la source
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.

Monsieur Bonjour
la source
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.

Jayprakash Dubey
la source
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

nb07
la source
3

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

Akil
la source
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 ...)

Ashbay
la source
1

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

Vincent Sit
la source
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.

Juan Fran Jimenez
la source
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é.

Chaudhry Talha
la source
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.

Rose du désert
la source
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

Saeed Badran
la source
0

La seule chose a fonctionné pour moi:

1) Supprimer les données dérivées avec CleanMyMac: System Junk -> Xcode Junk -> Xcode Derived Data

Suppression de données dérivées avec CleanMyMac

2) Puis dans Xcode: Produit -> Nettoyer

Евгений М
la source
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!

Luke Mccormick
la source
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

FullMetalFist
la source
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é.

rgkobashi
la source
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,

sumit rathore
la source
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.

Haseeb Iqbal
la source
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.

NicholasTM
la source
-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
MuhammadGad
la source