Polecenie konsolidatora nie powiodło się z kodem zakończenia 1 (użyj -v, aby zobaczyć wywołanie), Xcode 8, Swift 3

114

Nie mogę pozbyć się tego błędu!

Próbowałem różnych rzeczy, takich jak czyszczenie danych pochodnych (Preferencje-> Lokalizacje-> kliknij szarą strzałkę, aby otworzyć folder danych pochodnych w Finderze-> kliknij prawym przyciskiem myszy, przenieś do kosza), czyszczenie projektu (CMD + Shift + K lub Produkt -> Wyczyść), aktualizowanie kartaginy i zależności, sprawdzanie innych odpowiedzi na StackOverflow (głównie korekty w ustawieniach / fazach kompilacji) i ponowne klonowanie aplikacji z github itp.

Ten sam projekt działa na komputerach moich współpracowników.

EDYCJA: Z aktualnie najwyżej ocenianej odpowiedzi udało mi się trochę dalej debugować ... Jednak nadal nie jestem pewien, jak to naprawić. Wygląda na to, że mam coś w projekcie dwa razy? Szukałem i nie mogę znaleźć niczego, co się pojawiło dwa razy!

Oto zdjęcie dziennika:

Jake Dobson
źródło
dlaczego przyjąłeś najwyżej ocenioną odpowiedź, jeśli to nie rozwiązało Twojego problemu ...?
benomatis

Odpowiedzi:

160

Miałem dzisiaj ten sam problem w Xcode 8 w wersji 8.3.2

kliknij prawym przyciskiem myszy problem -> pokaż w dzienniku

wprowadź opis obrazu tutaj

wtedy możesz sprawdzić, co powoduje ten problem

wprowadź opis obrazu tutaj

umairqureshi_6
źródło
Dziękuję za to! Oto, co dostaję w dzienniku: imgur.com/vFkNJzZ
Jake Dobson
W końcu to rozwiązałem. Pomogłeś poprowadzić mnie we właściwym kierunku! Naprawdę było do niczego, że Xcode nie ujawnił dziennika po kliknięciu ... Mogło mi zaoszczędzić trochę czasu!
Jake Dobson
Dziękujemy za wskazówkę dotyczącą ujawniania w dzienniku. Nie wiedziałem, że mogę go użyć
KarenAnne
1
@GhasemTabatabaei Sprawdź moją odpowiedź poniżej
Jake Dobson
81
Dlaczego jest to akceptowana odpowiedź? W rzeczywistości nie odpowiada na pytanie, a jedynie potencjalnie pomaga w znalezieniu rozwiązania.
Tom Oakley,
116

Być może zainstalowałeś plik pod i nadal próbujesz zbudować z .xcodeprojpliku zamiast.xcworkspace

Aashish
źródło
4
Nie, z tego powodu użyłem Kartaginy. To uzasadniona odpowiedź, która może pomóc innym ludziom z tym samym błędem!
Jake Dobson,
1
Dodałem kod m $ AppCenter do istniejącego projektu i potrzebowałem Pods. Nie mam pojęcia, co się dzieje i robiłem to z tym .xcodeprojprzez ponad rok .. Coś tak prostego!
Dennis Smolek
1
Moja poprawka była w pewnym stopniu z tym związana. Niedawno zaktualizowałem niektóre zależności, a projekt używa teraz CocoaPods. Wcześniej zawsze pracowałem z pliku projektu. Otworzyłem plik obszaru roboczego, który zawierał zarówno mój projekt, jak i Pods, i wszystko działało dobrze.
Rozgonyi
40

jedyną rzeczą, która działała dla mnie, było bieganie pod deintegrateipod install

Charles Harring
źródło
Odpowiedź na pytanie. Jeśli widzisz mój komentarz poniżej, zaimportowałem plik, który został już zaimportowany do tego pliku. Projekt był w stanie wyścigu, próbując dwukrotnie odwołać się do pliku.
Jake Dobson
ok tak, ale nie zadziałało dla mnie, a kiedy to wyszukałem w Google, to właśnie się pojawiło, więc pomyślałem, że spróbuję pomóc komuś innemu ... Jestem nowy w tym, czy powinienem usunąć swoją odpowiedź?
Charles Harring,
Chyba nie, skoro już tam jest. Jestem pewien, że ktoś może uznać to za przydatne. Aplikacja, której używałem, nie korzystała z cocoapods. Chodzi o to, że ten błąd jest bardzo powszechny i ​​daje niewiele informacji o sobie. W zależności od projektu można znaleźć tak wiele rozwiązań.
Jake Dobson
To ratuje mój dzień! Niech cię Bóg błogosławi!
user2612604
19

próbowałeś wyczyścić? cmd + shift + k

Francisco Perez
źródło
8
O tak… wiele razy!
Jake Dobson
To dosłownie wszystko, co dostaję ... Kliknięcie tekstu nie przenosi mnie do żadnych dodatkowych informacji ani do lokalizacji pliku, w którym to się stało, tak jak w przypadku większości błędów. W konsoli nie ma nic, aplikacja nigdy nie uruchamia się z powodu tego błędu ...
Jake Dobson
FWIW, ostatnio napotkałem ten problem podczas budowania z SDK i sugestia @ FranciscoPereza załatwiła sprawę. Zdecydowanie polecam to jako pierwszy krok, zanim zagłębisz się w debugowanie.
riastrad
9

Okej ... Więc oto co rozwiązało mój problem ...

w pliku delegata aplikacji:

#import "AppDelegate.h"
#import "DarkSkyAPI.h"
//#import "Credentials.h"

Zaimportowałem Credentials.h już w pliku DarkSkyAPI.m w moim projekcie. Skomentowanie dodatkowego importu sprawiło, że błąd zniknął!

Kilka rzeczy, o których warto wspomnieć i może pomóc komukolwiek w przyszłości. Odpowiedź @umairqureshi_6 pomogła mi w tym procesie, ale go nie rozwiązała. Doprowadził do miejsca, w którym mogłem wydobyć informacje. Ciągle widziałem pliki AppDelegate i DarkSkyAPI pojawiające się w dzienniku błędów, a informacje, które pobierały z pliku Credentials, powodowały błąd. Wiedziałem, że musi znajdować się w jednym z tych 3 plików, więc od razu sprawdziłem import, ponieważ przypomniałem sobie, że plik .h zawiera wszystkie importy z pliku .m. Bum!

Jake Dobson
źródło
6

Mam już odpowiedź na to pytanie. Ale jeśli to pomaga komuś zaoszczędzić trochę czasu: miałem ten sam błąd. Sprawdziłem wszystko, aby znaleźć bardzo mały i głupi błąd z mojej strony. Zaimportowałem podstawowy plik danych ManagedObject w kontrolerze widoku mojego projektu. Przypadkowo zaimportowałem plik .m zamiast pliku .h , który powodował powielenie symbolu w architekturze (polecenie konsolidatora nie powiodło się), ponieważ mój plik .m klasy properties importuje plik .h podstawowej klasy danych, powodując zduplikowany import.

Po prostu sprawdź, czy zaimportowałeś właściwe pliki, zanim wypróbujesz wiele rozwiązań.!

Priyanka
źródło
Tak! To było bardzo podobne do mojego problemu. Ten sam plik został zaimportowany dwukrotnie do mojego projektu. Zamiast tego zaimportowałem „fileA.h” do „fileB.h”, ale potem zaimportowałem „fileA.h” i „fileB.h” do „fileC.h” lub coś podobnego ... Więc aplikacja ulega awarii ponieważ nie wie, którego użyć. Zdecydowanie jest to dobre miejsce, aby mieć przypomnienie dla innych o ponownym sprawdzeniu importu plików!
Jake Dobson,
6

Wiele rozwiązań zostało wymienionych powyżej. Nikt dla mnie nie pracował (ale najpierw spróbuj powyżej).

Wybierz Project -> Select Target -> Linked Framework and Libraries -> Add all pod libraries. (usuń, jeśli istnieją w osadzonych plikach binarnych)

Teraz usuń je z folderu Framework w lewym eksploratorze plików xcode.

To rozwiązało mój problem.

Aaban Tariq Murtaza
źródło
4

Wybierz projekt-> Faza budowy-> Połącz plik binarny z bibliotekami i dodaj wszystkie biblioteki pod.

K Prasad
źródło
3

Miałem ten sam problem, używając Kartaginy do zależności.

Po prostu przejdź do Select Project -> Build Settings -> Search for Enable Bitcode -> Jeśli jest wybrana na Yes, wybierz No.

To rozwiązało ten problem.

Adri Silva
źródło
2

Miałem ten sam problem.

Przyczyną było to, że zadeklarowałem tę samą zmienną globalną w 2 plikach . Więc pokazywał ten sam błąd, mówiąc o 2 zduplikowanych symbolach .

Rozwiązaniem było usunięcie tych zmiennych.

Ajit A. Kenjale
źródło
1
dlaczego usunąłeś oba, a nie tylko jeden?
Jake Dobson
2

Dla każdego, kto ma ten problem z platformą Flurry. To rozwiązało mój problem. Dla mnie problem polegał na tym, że zaimportowałem następujące pliki, ale nigdy ich nie użyłem. „libFlurryTVOS_9.2.3” „libFlurryWatch_9.2.3”

Wszystko, co musiałem zrobić, to przejść do ustawień docelowych projektu i usunąć te 2 pliki z sekcji „Powiązane ramy i biblioteki”, a problem został rozwiązany.

Cedan Misquith
źródło
2

W moim przypadku przyczyną błędu jest biblioteka, do której linkowano dwa razy.

Używam, react-nativewięc został połączony automatycznie za pomocą react-native linki ręcznie w xcode.

Stanislav Mayorov
źródło
2

Upewnij się, że Find Implicit Dependenciespole wyboru jest zaznaczone.

(Produkt -> Schemat -> Edytuj schemat -> Kompiluj -> Znajdź niejawne zależności)

llama591
źródło
2

Testowałem platformę Sparkle z CocoaPods.

Niestety, umieściłem pod 'Sparkle', '~> 1.21'PodFile w złym miejscu. Umieściłem to pod testami (dla testów jednostkowych).

Po umieszczeniu w odpowiednim miejscu w PodFile wszystko jest w porządku.

pdq
źródło
1

Po prostu musiałem to zrobić import Foundation!

Używałem Kitury po stronie serwera Swift i ciągle o tym zapominałem!

kochanie
źródło
Ha. Tak, zawsze będziesz musiał przynajmniej zaimportować Foundation, zanim cokolwiek zrobisz! Zwykle importuję UIKit zamiast Foundation, ponieważ prawie zawsze będę musiał korzystać z funkcji UIKit, a UIKit dziedziczy wszystko z Foundation dla Ciebie. Importowanie z Objc może być dość trudne, ale wygląda na to, że używasz Swift?
Jake Dobson
Tak, korzystałem ze Swift, plik, który posiadałem, nie pokazywał żadnych problemów z kompilatorem, ale tylko podczas uruchamiania pliku napotkałem ten problem!
Honey
1
Tak, nie sądzę, że to naprawdę sprawdza to do czasu uruchomienia, mogę się mylić. Wygląda jednak na to, że nie będzie problemu, dopóki nie spróbujesz uzyskać dostępu do czegoś z Foundation, nie możesz znaleźć importu, a następnie nie możesz kontynuować procesu - awaria!
Jake Dobson
1

Oto mój problem i rozwiązanie:

Usunąłem dwa pliki z kodu źródłowego za pomocą drzewa źródłowego (kontrolera wersji). Po zastosowaniu różnicy, która zawiera dwie usunięte przeze mnie klasy, Xcode nie dodał jej automatycznie. Więc otrzymałem błąd konsolidatora.

Dodałem pliki ręcznie, klikając prawym przyciskiem myszy nazwę grupy i wybierając „Dodaj pliki do”. Teraz mój błąd został rozwiązany.

Jeśli ktoś napotkał błąd konsolidatora dotyczący pliku klasy, spróbuj dodać go ręcznie.

Sujananth
źródło
1
Zdecydowanie wygląda na to, że jest to problem z plikiem, do którego próbują wskazać ... Pliki w innych miejscach nie pobierają informacji od siebie, co wydaje się często spotykane na tej stronie. Dzięki za odpowiedź. Mam nadzieję, że pomoże to komuś w drodze!
Jake Dobson
1

Nie miałem tego problemu, gdy zbudowałem i uruchomiłem na własnym urządzeniu. Miałem ten problem tylko z symulatorami. Po prostu ponownie uruchomiłem komputer i uruchomiłem go. Zadziałało.

therealManUtdFan
źródło
1

W moim przypadku zmieniłem Targetnazwę w moim, Podfilewięc tworzy dla mnie ten sam błąd.

Rozwiązanie

Po prostu idź project-> Build Phase->Link Binary with librariesUsuń stare FrameWorks, klikając minus button(-)I wyczyść i uruchom ponownie. Pracuję dla mnie.

wprowadź opis obrazu tutaj

Usuń niechciane .framework.

Krunal Nagvadia
źródło
1

Inne odpowiedzi nie zadziałały dla mnie, więc tutaj udostępniam moje rozwiązanie na wypadek, gdyby mogło pomóc komuś innemu:

Mój problem polegał na tym, że konfigurowałem Podfile mojego projektu XCode dla złej platformy. Zmiana „platform: ios” na początku mojego Podfile na „platform: macos” pomogła mi pozbyć się błędu.

Vorashy
źródło
0

Miałem ten sam problem. Jeśli sprawdzasz dowolny projekt github, zamiast używać git clone, użyj git lfs clone, ponieważ czasami niektóre duże pliki nie są poprawnie klonowane przy użyciu samego git. Upewnij się również, że twój kod bitowy jest wyłączony.

Aman pradhan
źródło
dobra uwaga… ale zazwyczaj konsola poinformuje Cię, że niektóre pliki są zbyt duże, aby można je było przesłać?
Jake Dobson
0

Dla mnie plik blokady klejnotów określał starszą wersję cocoapodów niż ta, którą zainstalowałem. bundle exec pod installZamiast tego musiałem ponownie rozgałęzić się i uruchomićpod install

Jason
źródło
0

Wygląda na to, że u większości z nas problem jest inny, a komunikat o błędzie zawiera przyzwoite informacje. W moim przypadku cel wdrożenia został ustawiony 10.13na export MACOSX_DEPLOYMENT_TARGET=10.13linię, ale działałem 10.14. Musiałem więc zmienić cel wdrożenia na 10.14Ogólne> Informacje o wdrożeniu, aby symbole związane z ITLibrary były ponownie dostępne.

cd /Users/foo/src/scrobble/macos/itunes-scrobble
    export MACOSX_DEPLOYMENT_TARGET=10.13

... SNIP ...

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_ITLibMediaItem", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_ITLibPlaylist", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_ITLibrary", referenced from:
      objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
nishanths
źródło
0

W moim przypadku produkowałem wiele produktów z tego samego projektu. W przypadku jednego z produktów main.mplik zaimportował plik nagłówkowy z innego folderu w tym samym projekcie. Ale ten plik nie został uwzględniony w sekcji „Zgodne źródła” w sekcji „Faza budowy”. Spowodowało to błąd konsolidatora.

Po dokładnym porównaniu ustawień „Fazy kompilacji” dla produktu, który mógłby zostać pomyślnie zbudowany, zdałem sobie sprawę, że .mplik nagłówka musi znajdować się na liście „Skompilowane źródło”. Mój problem został rozwiązany po dodaniu tego pliku. Dołączenie zdjęcia dla większej przejrzystości. Zaznaczony plik musiał zostać dodany.

wprowadź opis obrazu tutaj

Raiyan
źródło
-1

Te same problemy napotkałem podczas tworzenia projektu Ionic 1.

Udało mi się rozwiązać problem po usunięciu pliku CDVLogger.h i CDVLogger.m

KAUSHIK PARMAR
źródło
wygląda na to, że nigdy nie potrzebowałeś tych plików? Musiał wywoływać pliki w tych i innych plikach, dezorientując projekt i uniemożliwiając jego uruchomienie.
Jake Dobson
-4

Ok, miałem ten sam problem właśnie dzisiaj i zacząłem go googlować, kiedy natknąłem się na ten wątek. Nie skończyłem czytać pytania, gdy przyszła mi do głowy odpowiedź: zadeklarowałem klasę z pustym konstruktorem

class MyClass{
    MyClass();

    void func_one(){
    // code
    }

    void func_two(){
    // code
    }

    ~MyClass(){
        cout << "Deleting object" << endl;
     }
};

Wtedy pomyślałem, dlaczego nie zakończyć (nie jestem pewien, czy mam rację z wyborem słów tutaj, ale kogo to obchodzi) konstruktora mojej klasy za pomocą nawiasów klamrowych ( {}). Więc zrobiłem:

class MyClass{
    MyClass(){}

    void func_one(){
    // code
    }

    void func_two(){
    // code
    }

    ~MyClass(){
        cout << "Deleting object" << endl;
     }
};

Problem został wyeliminowany, mój kod zaczął działać idealnie.

Wiem, dobrą praktyką jest zbadanie problemu i znalezienie prawdziwej przyczyny, ale to zadziałało.

Michael Gnedkovskii
źródło
Nie sądzę, aby to było pomocne w przypadku tego wątku ... Wygląda na to, że błąd próbuje rozwiązać problem z plikiem, na przykład podczas importowania tego samego w oddzielnych plikach. Wydaje mi się dziwne, że dostaniesz ten błąd, ponieważ jest to błąd specyficzny dla celu C ...
Jake Dobson
Otrzymałem ten błąd również w C ++. Błąd konsolidatora w twoim przypadku polegał prawdopodobnie na tym, że konsolidator nie mógł znaleźć kodu dla twojego konstruktora. Miałem podobny błąd z funkcją, której nazwę zmieniłem, ale ponieważ Xcode 10 nie otwierał samodzielnie dziennika konsolidatora i nie wiedziałem, że możesz kliknąć prawym przyciskiem myszy i „ujawnić w dzienniku”, byłem zaskoczony przez kilka minut na zlokalizowanie błędu.
Matt Parkins