jak rozwiązać problem „Polecenie / bin / sh nie powiodło się z kodem zakończenia 1” w telefonie iPhone

93

W mojej aplikacji użyłem biblioteki statycznej kakao. Podczas kompilacji biblioteki pojawił się następujący błąd:

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

Zrzut ekranu błędu

Jak mogę to naprawić?

Ben10
źródło

Odpowiedzi:

208

 Cel -> Fazy budowy -> przykłady aktualizacji

Kliknij pole wyboru Uruchom, jeśli nie jest zaznaczone.

Harshad
źródło
2
To pole wyboru może znajdować się pod Fazy kompilacji → Pakiet Reaguj natywny kod i obrazy.
rishat
4
dla mnie działa to podczas budowania / instalowania aplikacji na telefonie, ale nie podczas archiwizacji
Adeem
Ta odpowiedź jest poprawna. Ale po ustawieniu trybu Generc iOS Device do uzyskiwania kompilacji fr all ... get the errr again @Harshad
reza_khalafi
@reza_khalafi upewnij się, że masz czyste dane, a także usuń dane pochodne. następnie spróbuj ponownie.
Harshad
1
@Harshad Działa podczas budowania, ale nie do archiwizacji
NGB,
63

Miałem ten problem, ponieważ odmówiłem dostępu do pęku kluczy i aby go rozwiązać, musisz otworzyć pęku kluczy, Następnie kliknij kłódkę w prawym górnym rogu ekranu, aby ponownie go zablokować, po czym możesz zarchiwizować i zadziała

Salem Binmusaed
źródło
3
DZIĘKUJĘ BARDZO! Btw, przynajmniej dla mnie zamek jest po lewej stronie. Był otwarty i musiał go zamknąć.
Eironeia
Udostępniłem to rozwiązanie ze źródła, którego niestety nie pamiętam.
Salem Binmusaed
Otrzymałem kod zakończenia 134, gdy próbowałem zarchiwizować produkt, ale mogłem zainstalować aplikację na urządzeniu, otworzyłem pęku kluczy, ale czy możesz znaleźć blokadę gdziekolwiek, moja Xcode w wersji 9.2 naprawdę potrzebuje pomocy
showmyroutes
43

Usuwanie „danych pochodnych” działało dla mnie.

W Xcode przejdź do Plik> Ustawienia obszaru roboczego> kliknij strzałkę obok ścieżki pliku danych pochodnych> przenieś folder „Dane pochodne” do kosza.

hgwhittle
źródło
1
Do jakiej wersji Xcode masz na myśli? ... Nie mam menu / okien ani opcji, do których się
odnosisz
2
jego w oknach-> Organizator nie projekty Windows
CthulhuJon
działa, ale trzeba wyczyścić projekt i zrestartować Xcode dla mnie
Hosny
1
Plik-> Ustawienia obszaru roboczego ...-> Dane pochodne. Kliknij strzałkę na końcu ścieżki. Kliknij folder prawym przyciskiem myszy i przenieś do kosza. iOS 10.12.6
Augustas
30

Wygląda na to, że uruchamiasz skrypt powłoki i nie może on znaleźć konkretnego pliku. Spójrz, Target -> Build-Phases -> RunScriptczy uruchamiasz skrypt.

Możesz sprawdzić, czy skrypt jest uruchomiony w wyniku kompilacji (w panelu nawigacyjnym). Jeśli twój skrypt zrobi coś źle, faza kompilacji zostanie zatrzymana.

Panie Bonjour
źródło
SKM Zmieniłem odpowiedź. Może to Xcode, który stworzył ten skrypt, aby znaleźć Twoją bibliotekę statyczną. Nawiasem mówiąc, nie kompiluje się, ponieważ nie może znaleźć pliku w /Users/sijuthomas/Library/Developer/Xcode/DerivedData/SCXML2-bbttehupryhijphhjdiemcytkvgy/Build/Products/Debug-iphonesimulator/libSCXMLParser.a. Więc upewnij się, że to tam
umieścisz
19

Miałem ten sam problem i naprawiłem go. Wykonaj poniższe czynności, aby rozwiązać problem w Xcode 6.4.

  1. Kliknij Pokaż nawigator projektu w oknie Nawigatora
  2. Teraz wybierz projekt bezpośrednio pod oknem nawigatora
  3. Wybierz Cele
  4. Wybierz kartę Fazy ​​budowy
  5. Otwórz opcję rozwijaną Uruchom skrypt
  6. Zaznacz pole wyboru Uruchom skrypt tylko podczas instalacji

Zrzut ekranu z krokami

Teraz wyczyść swój projekt (cmd + shift + k) i skompiluj swój projekt.

Jayprakash Dubey
źródło
To powinna być akceptowana odpowiedź. Na problem bin / sh to jest rozwiązanie.
Yash Bedi
9

Czyszczenie folderu kompilacji (Cmd + Shift + Alt + K) działało dla mnie

nb07
źródło
3

1) Usuń folder pod i plik .xcworkspace 2) Otwórz folder w terminalu 3) Wpisz „pod install”

Akil
źródło
1

Czy dodałeś bibliotekę .a do projektu xcode? (projekt -> fazy budowy -> Połącz plik binarny z bibliotekami -> kliknij „+” -> kliknij „dodaj inne” -> wybierz swoją bibliotekę)

A może biblioteka nie jest kompatybilna z symulatorem, czy próbowałeś kompilować dla iDevice (nie symulator)?

(Już walczyłem z drugim problemem, mam bibliotekę, która nie działała z symulatorem, ale z prawdziwym urządzeniem, które kompiluje ...)

Ashbay
źródło
1

Dla mnie mój certyfikat stracił ważność. Utworzyłem nowy certyfikat.

Vincent Sit
źródło
0

Próbowałem zrestartować Xcode (7) i nic ( czy próbowałeś go wyłączyć i ponownie włączyć rozwój iOS :-)). Następnie spróbowałem ponownie uruchomić moją skrzynkę i to zadziałało.

W moim przypadku skrypt zawodził podczas kopiowania pliku z lokalizacji do innej. Myślę, że mogło to być związane z wkręcaniem Findera w prawa do zapisu w niektórych folderach.

Juan Fran Jimenez
źródło
0

U mnie ten błąd występował, ponieważ zmieniłem numer wersji z 1 na 1.0 i numer kompilacji z 6 na 1.1, kiedy wyciągałem kod z drzewa źródłowego. Po prostu zmieniłem go z powrotem i zmieniłem numer kompilacji z 6 na 7 i działało dobrze.

Chaudhry Talha
źródło
0

W moim przypadku była spacja w ścieżce, która powodowała awarię skryptu.Jeśli używasz takich zmiennych, jak $PROJECT_DIRlub $TARGET_BUILD_DIRto je zamień "$PROJECT_DIR"lub "$TARGET_BUILD_DIR"odpowiednio.Po dodaniu cudzysłowów mój skrypt działał pomyślnie.

Kwiat pustyni
źródło
0

po prostu umieść skrypt w pliku i uruchom ten plik z 2> / dev / null na końcu linii poleceń!

W ten sposób, jeśli wystąpi jakikolwiek problem z poleceniem, nie zatrzyma ono kompilacji xcode

w moim przypadku wykonałem tylko polecenie odinstalowania mojej poprzedniej kopii aplikacji z podłączonego iPhone'a, więc może to spowodować błąd, jeśli iPhone'a tam nie ma. Aby to rozwiązać:

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

Saeed Badran
źródło
0

Jedyna rzecz działała dla mnie:

1) Usuń pochodne dane za pomocą CleanMyMac: śmieci systemowe -> śmieci Xcode -> dane pochodne Xcode

Usuwanie danych pochodnych za pomocą CleanMyMac

2) Następnie w Xcode: Produkt -> Wyczyść

Евгений М
źródło
0

Zrobiłem wszystko powyżej i spędziłem godzinę nad tym problemem.

Wypróbowałem wszystko powyżej, a także ponownie uruchomiłem Xcode.

Wreszcie zrestartowałem komputer i wszystko znów działa normalnie!

Luke Mccormick
źródło
1
nic nie dodałeś do tego postu z odpowiedzią. Ponowne uruchomienie komputera może być komentarzem, ponieważ nie pomaga wyjaśnić, co było nie tak.
Bojan Petkovic
Jakiś dziwny problem, usunięte dane pochodne i przełączony / nieprzełączony nowy system kompilacji. Ale po ponownym uruchomieniu byłem w porządku!
Oritm
0

Wymienię rzeczy, które zrobiłem, a które nie zadziałały, i wreszcie, co zadziałało

Po pierwsze, zaakceptowana odpowiedź Uruchom skrypt tylko podczas instalacji nie zadziałała.

Usuwanie danych pochodnych nie działa.

Co zadziałało:

  1. Dodałem nową fazę budowy w fazie budowy

  2. Nowa faza kopiowania plików

  3. Przeciągnij i upuść wybraną strukturę do miejsca docelowego

  4. Ustaw „Miejsce docelowe” na Struktury

Kredyt z powodu średnich postu Kevina LE

FullMetalFist
źródło
0

Dla tych, którzy nie chcą odznaczyć tej opcji (na przykład używając cocoapods), problem może dotyczyć certyfikatu / klucza.

Xcode (lub dowolne narzędzie, którego używasz, takie jak narzędzie wiersza poleceń) musi mieć możliwość użycia certyfikatu / klucza z pęku kluczy. W tym celu otwórz pęku kluczy, znajdź certyfikat, którego chcesz użyć (zwykle na loginpęku kluczy My Certificates), kliknij prawym przyciskiem myszy klucz, wybierz Get Info, kliknij Access Controlkartę i dodaj aplikację do listy.

Jeśli to nie zadziała, spróbuj odblokować pęku kluczy.

Inną opcją może być wybranie Zezwalaj wszystkim aplikacjom na dostęp do tego elementu zamiast określonych aplikacji i / lub przenieś certyfikat / klucz do Systempęku kluczy, który jest współdzielony między wszystkimi kontami użytkowników na tym Macu.

Sprawdź również, czy certyfikat nie wygasł.

rgkobashi
źródło
0

1) opcja: Proszę sprawdzić uruchamianie skryptu tylko podczas instalacji ...... to jest prawidłowa odpowiedź na to pytanie

2) opcja: aktualizacja poda, czyste dane pochodne,

sumit rathore
źródło
0

W moim przypadku jeden ze skryptów (powiązany z SwiftGen) nie powiódł się podczas kompilacji.

Rozwiązałem problem, usuwając Podsi aktualizując je ponownie.

  1. Usuń problematyczny pod z Podskatalogu lub użyjpod deintegrate
  2. Zainstaluj / zaktualizuj pody przy użyciu pod installlubpod update

PS Możliwe, że twoja zależność jest globalna i nie znajduje się w strąkach. W takim przypadku możesz również spróbować ponownie zainstalować tę zależność.

Haseeb Iqbal
źródło
0

PRZECZYTAJ TEN JEŚLI KORZYSTASZ Crashlytics I MASZ TEN PROBLEM ...

Miałem ten sam problem jak wyżej Command /bin/sh failed with exit code 1dokładniej[31merror: Could not fetch upload-symbols settings: An unknown error occurred fetching settings.[0m

Pierwsze rozwiązanie (włączenie skryptu uruchamiania tylko podczas instalacji) pozwoliło mi zbudować cel w symulatorze, ale nie mogłem zarchiwizować kompilacji.

Rozwiązałem ten problem z archiwum, włączając Crashlytics w Firebase. Nadal jestem przyzwyczajony do Fabric, w którym Crashlytics jest automatycznie włączony. Po włączeniu Crashlytics w konsoli Firebase dla odpowiedniej listy GoogleService-Info.plist mogłem archiwizować bez tego błędu.

NicholasTM
źródło
-1

Usuń wszystkie strąki i zainstaluj ponownie.

Kroki:

  1. skomentuj wszystkie strąki i uruchom pod install
  2. odkomentuj wszystkie strąki i uciekaj pod install
MuhammadGad
źródło