Błąd Xcode 10: Powstaje wiele poleceń


658

błąd: wiele poleceń tworzy „/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist”: 1) Docelowa „kopia optymalna” ma „OptimalLive” '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist' do '/ Users / uesr / Library / Developer / Xcode / DerivedData / OptimalLive-fxatvygbofczeyhjsawtebkimvwx / Build / Products / Debug-iphoneos / OptimalLive .app / Info.plist '2) Miejsce docelowe' OptimalLive 'posiada polecenie kopiowania z' /Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Server/Masonry/Info.plist 'do' / Users / uesr / Biblioteka / Developer / Xcode / DerivedData / OptimalLive-fxatvygbofczeyhjsawtebkimvwx / Build / Products / Debug-iphoneos / OptimalLive.app / Info.plist '3) Target' OptimalLive 'ma komendę procesową z wejściem „/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist”

Uruchomienie kodu w Xcode9 działa, ale w Xcode10 wystąpił błąd.


Aby zapoznać się z zależnościami zarządzanymi przez cocoapods, patrz stackoverflow.com/a/52421345/334999
Shuo

dzieje się, gdy importujesz platformę innej firmy do swojego projektu i ma ona info.plist w swoich plikach źródłowych. Ta strona info.plist jest w konflikcie z aplikacją Twojej aplikacji. Po prostu usuń go z faz kompilacji
protspace

Drogi czytelniku, przeczytaj KAŻDĄ odpowiedź na to pytanie, istnieje wiele różnych rzeczy, które mogą być złe.
iluvcapra

Przejdź do ścieżki „Fazy budowania-> Kopiuj zasoby pakietu”. Sprawdź nazwę pliku i usuń ją. Wyczyść i uruchom aplikację
Sagar Sukode

Odpowiedzi:


1222

Problem może występować z powodu wielu plików Plist lub innych plików w aplikacji

Rozwiązanie -> Otwórz cel -> Fazy kompilacji> Skopiuj zasoby pakietu i usuń info.pliststamtąd.

wprowadź opis zdjęcia tutaj

Uwaga: jeśli również opracowałeś aplikację do zegarków, musisz również usunąć plist z zegarka i rozszerzenie zegarka.


12
Konieczne może być także sprawdzenie zależności, np. CocoaPods w celu znalezienia nieprawidłowo dodanych plików info.plist
Chris Paveglio,

68
Aby to trochę rozwinąć: Ten błąd występuje, ponieważ nowy system kompilacji Xcode 10 lepiej wychwytuje problemy z konfiguracją projektu. Takie problemy mogą czasami powodować subtelne problemy z kompilacją, więc dobrze je naprawić.
Rick Ballard,

2
W moim przypadku musiałem usunąć niektóre pliki lokalizacyjne o nazwie InfoPlist.strings
neowinston

8
W moim przypadku miałem info.plistplik w jednej z moich prywatnych zależności CocoaPods, który był coraz bardziej zgarnięty, ponieważ pasowała do niego source_fileswłaściwość podspec . Nie potrzebowałem info.plistpliku w moim module, więc właśnie go usunąłem.
aapierce

3
Dzięki! Jakiś czas temu dodałem wtyczkę dla programistów do mojego kodu, która zawierała również plik info.plist, który był w konflikcie z info.plist mojej aplikacji
Christopher Smit

567

Znalazłem rozwiązanie tego błędu kompilacji, aby każdy, kto ma ten sam problem z systemem kompilacji Xcode 10, wykonaj następujące kroki, aby go naprawić:

  1. W Xcode przejdź do Plik-> Ustawienia projektu / obszaru roboczego.
  2. Zmień system kompilacji na starszy system kompilacji.

wprowadź opis zdjęcia tutaj Rozwiązuje problem kompilacji z nowym Xcode 10.

Jeśli chcesz pracować z nowym systemem kompilacji, pomoc dotyczącą rozwiązywania problemów znajdziesz na tej stronie pomocy Apple Xcode .

Mam nadzieję że to pomoże!


4
czy możesz wyjaśnić, dlaczego ten problem nadchodzi, a także w jaki sposób rozwiązanie Legacy Build System rozwiązuje ten problem? @Akshay Sunderwani
user832

142
Nie rozwiązujesz problemu, po prostu je ukrywasz.
Caio,

4
Naprawiono błąd kompilacji dla projektów rodzimych. Zobacz problem tutaj: github.com/facebook/react-native/issues/20492 Istnieje możliwość naprawy, jeśli nie chcesz przełączać się do starszego systemu kompilacji: github.com/facebook/react-native/issues/…
Eugen Timm

6
To nie jest długoterminowa poprawka. Ostatecznie starszy system kompilacji nie będzie już opcją.
Paul King

6
Cóż, w 100% ukryję problem zamiast go naprawić, ponieważ żadne z tych rozwiązań nie działa. Wydaje się być znanym problemem związanym z Cocoapods; patrz github.com/CocoaPods/CocoaPods/issues/7949 . Mam nadzieję, że jakoś to naprawi, zanim to obejście nie będzie już możliwe.
sudo

170

Przejdź do Xcode -> Plik -> Ustawienia obszaru roboczego. Znajdziesz jedno wyskakujące okienko.

wprowadź opis zdjęcia tutaj

Wybierz „ Legacy Build System ” ze znacznika Build System. Naciśnij „ Gotowe

Uwaga: - Upewnij się, że wyczyściłeś swój projekt za pomocą „ cmd + shift + alt + k ” i „ Dane pochodne

Zbuduj swój projekt, zadziała urok :)


Według mojego zrozumienia nasze istniejące projekty są wykonane w starych wersjach swift i xcode, które obsługują starą wersję swift i xcode. Tak więc wcześniej, co zrobiliśmy, wybraliśmy „Ustawienia pakietu -> Swift legacy Build System” i wybraliśmy wcześniejszą wersję.
Hardik1344,

Pierwotnie miałem go w „Swift Legacy Build System”, ale został przełączony po ponownym uruchomieniu komputera. Nawet jeśli uważasz, że masz ten zestaw poprawnie, nadal warto go dwukrotnie sprawdzić.
EndersJeesh

To rozwiązanie nie rozwiązuje problemu, po prostu go ukrywa.
Argus

Upewnij się również, czy zmieniłeś ustawienia obszaru roboczego dla użytkownika na takie same;)
Wei Shen


114

Spróbuj również tego. Xcode-> Plik-> Ustawienia projektu-> System kompilacji -> System kompilacji starszego typu.


38
W tym przypadku Xcode oznacza problem w projekcie, więc powrót do starszego systemu kompilacji na razie go ukryje. Zgłaszanie przez Xcode tego rodzaju problemów jest celowe i najlepiej je naprawić.
Rick Ballard

2
Jeśli błąd występuje w projekcie wygenerowanym przez CocoaPods, wyłączałbym nowy system kompilacji, dopóki nowa wersja CocoaPods nie rozwiąże problemu.
Rivera

@ RickBallard ma teraz sens, co może być właściwą poprawką? wydaje się, że istnieje mieszanka odpowiedzi
rolando

1
Istnieje wiele przyczyn tego rodzaju błędów, ale możesz przeczytać więcej o tym, co to znaczy na help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0
Rick Ballard

73

Jeśli otrzymujesz to z Dittopolecenia tworzenia wielu instancji o tej samej nazwie (NIE 'copy files' build phase), być może będziesz musiał zmienić Product Module Name.

  1. Kliknij obiekt docelowy, na który narzeka Xcode
  2. Kliknij Build Settings
  3. Szukaj Product Module Name
  4. Zmień nazwę na coś wyjątkowego

W naszej aplikacji mamy cel obserwacji i kilka celów powiadomień, więc umieszczam takie rzeczy jak Extensionna końcu nazwy modułu.

Pierwotnie znalazłem to rozwiązanie: https://forums.developer.apple.com/thread/103913


1
Działało to trochę dobrze, ale potem zepsuło się z plikiem pomostowym.
Mohamad Kaakati,

5
W moim przypadku musiałem wybrać Allpo prawej stronie, gdzie chcesz, Product Module Nameaby ta konfiguracja kompilacji była wyświetlana.
Hodson,

56
Mam ten sam problem w Xcode 10. Ten sam projekt działał dobrze w Xcode 9.4.1. Rozwiązanie jest więc bardzo proste. Po prostu usuń wszystkie pliki info.plist z celu. Zrób to dla wszystkich plików info.plist. Krok 1. Wybierz plik info.plist. 2. W Inspektorze plików Odznacz projekt w Docelowym członkostwie. Następnie uruchom swój projekt. Dzięki !
Zestaw

12
Dla mnie musiałem przejść do [Nazwa_projektu]> Fazy kompilacji> Kopiuj zasoby pakietu i tam usuń duplikaty
użytkownik3322509

5
@Bharath Nie usuwaj plików info.plist ze swojego projektu. Musisz usunąć tylko z Targetu, jak już wspomniałem. Nie możemy usunąć info.plist, jest to bardzo ważne dla projektu.
Zestaw

69

Eksperymentowałem z Core Data. Zbudowałem model danych dla prostego programu listy kontrolnej i wygenerowałem NSManagedObjects. Podczas kompilowania projektu wystąpił następujący błąd:

error: Multiple commands produce '/Users/myUSerName/Library/Developer/Xcode/DerivedData/myCoreDateExperiment-gzbslaqdwglkzxemijpdqmizgyzc/Build/Intermediates.noindex/ myCoreDateExperiment /Debug-iphonesimulator/ myCoreDateExperiment.build/Objects-normal/x86_64/CheckListItem+CoreDataProperties.o':
1) Target ' myCoreDateExperiment ' (project ' myCoreDateExperiment ') has compile command for Swift source files
2) Target ' myCoreDateExperiment ' (project ' myCoreDateExperiment ') has compile command for Swift source files

Problem polegał na tym, że model danych (w moim przypadku CheckList.xcdatamodeld) znajdował się na liście „Kompiluj źródła”. Projekt został poprawnie skompilowany, gdy usunąłem go z listy.

  1. Otwórz nawigator projektu i wybierz projekt (pierwszy wpis u góry)
  2. Wybierz cel kompilacji w obszarze Cele w panelu „Projekty i cele”
  3. Wybierz opcję Fazy budowania u góry
  4. Rozwiń pozycję „Kompiluj źródła” i poszukaj nazwy modelu danych. Wyszukaj „xcdatamodeld”, jeśli masz problemy ze znalezieniem.
  5. Usuń model z listy kompilacji
  6. Upewnij się, że model danych znajduje się na liście „Kopiuj zasoby pakietu”. Dodaj, jeśli go brakuje.

EDYTOWAĆ

Jako @WilliamT. wyjaśnia w komentarzach, potrzebujesz xcdatamodeld na liście kompilacji. Zamiast tego przejdź do swoich bytów w pliku xcdatamodeld. Wybierz błędne modele, rozwiń lewy panel i zmień pole „Codegen” na „Ręcznie / Brak”.


36
Plik xcdatamodeld powinien faktycznie znajdować się w źródłach kompilacji. jeśli widzisz ten błąd w stosunku do danych podstawowych, prawdopodobnie jest to spowodowane tym, że wywołałeś „Utwórz podklasę NSManagedObject”, ale twoja jednostka jest ustawiona na Codegen = „Definicja klasy”. Oznacza to, że automatycznie tworzy te klasy dla Ciebie i utworzyłeś je ręcznie, aby istniały dwukrotnie.
William T.


1
@WilliamT. Jaka powinna być wartość Codegen, jeśli wywołuje się funkcję Utwórz podklasę obiektu NSManaged?
Kaunteya

2
@Kaunteya Istnieje możliwość ustawienia Codegen na „Ręczny” na każdym atrybucie CoreData (tabela)
William T.

1
Śledź @WilliamT. porady, a następnie wyczyść i zbuduj.
PruitIgoe,

40

Podczas sprawdzania dziennika kompilacji zauważyłem ostrzeżenie:

note: Using new build system
note: Planning build
note: Constructing build description
Build system information
warning: The Copy Bundle Resources build phase contains this target's Info.plist file '/Users/<redacted>/Repositories/Whitesmith/optimize-ios/Carthage/Checkouts/WSStatusBarNotification/Miscellaneous/Info.plist'. (in target 'JDStatusBarNotification')

Jeśli tak jest w Twoim przypadku, przejdź do celu:

  1. Fazy ​​budowania
  2. Skopiuj zasób pakietu
  3. Usuń info.plist.

32
Plik info.plist nie jest obecny w zasobach pakietu kopii, nadal
pojawia

Usunięcie nadmiernej liczby Info.plist z fazy kompilacji pakietu kopii rozwiązało to dla mnie. Jednak moje ostrzeżenie było inne, ponieważ przypadkowo dodano Info.plist innego celu, ale w ramach tego samego projektu do fazy kompilacji zasobów pakietu kopii. Ostrzeżenie brzmiało: „ostrzeżenie: zduplikowany plik wyjściowy” ... MyApp.app/Info.plist ”w zadaniu: ProcessInfoPlistFile”. I prowadzi do tego samego błędu, co w pierwotnym pytaniu: „błąd: wiele poleceń powoduje„ ... MyApp.app/Info.plist ””.
Martin Polak,

w moim przypadku był to plik „LICENCJA” - kiedy go usunąłem, problem został naprawiony, więc myślę, że problem jest bardziej ogólny niż „plist”, wydaje się, że jest po prostu częściej spotykany
nas

37

Jeśli używasz CocoaPods, możesz spróbować dezintegrować strąki i zainstalować ponownie. Mi to pasuje.

pod deintegrate

pod install


Tak, mój problem został spowodowany przez pakiet kapsułek i tylko to rozwiązało problem! dzięki
CodeBrew,

@Ming Chu Dziękuję
N. Der

30

Spróbuj tego Działa:

W Xcode przejdź do Plik-> Ustawienia projektu / obszaru roboczego.

Zmień system kompilacji na starszy system kompilacji.


2
W tym przypadku Xcode oznacza problem w projekcie, więc powrót do starszego systemu kompilacji na razie go ukryje. Zgłaszanie przez Xcode tego rodzaju problemów jest celowe i najlepiej je naprawić. Aby uzyskać więcej informacji, zobacz help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 .
Rick Ballard,

27

Przeczytaj tę odpowiedź, jeśli komunikat o błędzie odwołuje się do plików danych podstawowych

Streszczenie: Możesz mieć zarówno generowane automatycznie, jak i ręcznie generowane pliki klas obiektów zarządzanych przez Core Data.

Ta odpowiedź ma zastosowanie, jeśli pierwszy wiersz błędu odnosi się do pliku Foo + CoreDataProperties.o lub Foo + CoreDataClass.o . Przykład:

error: Multiple commands produce '/Users/me/Library/Developer/Xcode/DerivedData/MyApp-uebslaqdwgldkjemijpdqmizgyzc/Build/Intermediates.noindex/ MyApp /Debug-iphonesimulator/ MyApp.build/Objects-normal/x86_64/Foo+CoreDataProperties.o':

1) Target ' MyApp ' (project ' MyApp ') has compile command for Swift source files

2) Target ' MyApp ' (project ' MyApp ') has compile command for Swift source files

Główną przyczynę można zobaczyć, rozwijając sekcję Kompiluj szybkie pliki źródłowe transkrypcji kompilacji. Na przykład:

<unknown>:0: error: filename "Address+CoreDataClass.swift" used twice: '/Users/myUserName/Projects/Jnky/Foo+CoreDataProperties' and '/Users/jk/myUserName/Developer/Xcode/DerivedData/MyApp-uebslaqdwgldkjemijpdqmizgyzc/Build/Intermediates.noindex/MyApp.build/Debug/MyApp.build/DerivedSources/CoreDataGenerated/Jnky/Foo+CoreDataProperties.swift'

Pierwszy wspomniany plik to plik źródłowy w katalogu projektu, który ktoś wygenerował, wybierając model danych w Nawigatorze projektu i klikając w menu Edytor > Utwórz podklasę obiektu zarządzanego . Ta funkcja została dodana w Xcode 7 lub więcej.

Drugi plik jest plikiem o tej samej nazwie, ale jest zakopany w Xcode DerivedData. Plik ten jest generowany automatycznie przez Xcode podczas każdej kompilacji, jeśli .xcdatamodeldplik modelu danych ( ) jest zawarty w fazie kompilacji źródeł kompilacji celu. Ta funkcja została dodana w Xcode 9 lub więcej. Zero, jeden lub dwa pliki są generowane dla każdej jednostki / klasy, w zależności od ustawienia wyskakującego okienka Codegen . To okienko wyskakujące znajduje się w Inspektorze modelu danych po wybraniu elementu podczas edycji modelu danych…

zrzut ekranu Inspektora modelu danych

Ustawienia są następujące:

  • Ręcznie / Brak Żadne pliki nie są generowane
  • Kategoria / rozszerzenie Generowany jest jeden plik, Foo + CoreDataProperties.m lub .swift , zawierający kategorię Objective-C lub rozszerzenie Swift.
  • Definicja klasy Generowany jest ten sam plik kategorii / rozszerzenia, a ponadto generowany jest Foo + CoreDataClass.m lub .swift , zawierający deklarację klasy i definicję.

Widzisz więc, że problem występuje, gdy programista (jak ja) przyzwyczajony do starszego Xcode rozpoczyna projekt w nowszym Xcode. Uważamy, że musimy użyć elementu menu Utwórz podklasę obiektów zarządzanych , co robimy, aby utworzyć pliki, które widzimy w Nawigatorze projektu, nie zdając sobie sprawy, że nasze ustawienia w wyskakującym oknie Codegen powodują, że Xcode tworzy duplikaty plików, które Apple „sprytnie” nie pojawia się w Nawigatorze projektu, ponieważ nie ufają programistom, że przeczytają i zważą na komentarz w nagłówku // Ten plik został wygenerowany automatycznie i nie należy go edytować.

Rozwiązanie 1 - Użyj starszej drogi

Możesz wyłączyć wszystkie automatyczne Codegen dla modelu danych za pomocą tylko jednego ustawienia:

  • Otwórz problem Fazy ​​kompilacji celu (w Nawigatorze projektów wybierz projekt, a następnie na wyświetlonej liście CELE , wybierz cel problemu, a następnie kartę Fazy ​​kompilacji ).
  • Rozwiń pozycję Kompiluj źródła i znajdź problematyczny model danych ( .xcdatamodeldplik).
  • Usuń go z listy kompilacji
  • Upewnij się, że model danych znajduje się na liście zasobów pakietu kopii .

Rozwiązanie 2 - Podstawowa magia danych dla początkujących

Tutaj wchodzisz all-in na nowszą drogę.

  • Pozostaw model danych taki, jaki jest w tym źródle kompilacji .
  • W każdym Inspektorze jednostek w modelu danych ustaw Codegen na Definicja klasy .
  • W Nawigatorze projektu usuń i usuń wszystkie pliki Foo + CoreDataClass i zmień nazwę dowolnego pliku Foo + CoreDataProperties.m lub .swift na coś takiego jak Foo + MyProperties .
  • W każdym pliku Foo + MyProperties.m lub .swift , jeśli istnieją właściwości generowane przez Xcode, usuń te właściwości, ponieważ będą one znajdować się w ukrytych plikach utworzonych przez Codegen .

Dzięki temu rozwiązaniu definicje klas są generowane automatycznie na podstawie modelu danych dla każdej kompilacji. Nawet ich nie widzisz. Jest to Core Data Magic , ładne i proste dla początkujących.

Rozwiązanie 3 - Dla większości aplikacji w świecie rzeczywistym

Ale rozwiązanie 2 nie jest dobre, jeśli naprawdę chcesz dodać właściwości niezarządzane. (Objective-C nie pozwala na dodawanie właściwości w kategoriach, a Swift nie pozwala na dodawanie przechowywanych właściwości w rozszerzeniach). Więc w większości rzeczywistych aplikacji prawdopodobnie chcesz przejść w połowie drogi między Rozwiązaniami 1 i 2…

  • Pozostaw swój model danych na liście Kompiluj źródła
  • W każdym Inspektorze jednostek w modelu danych ustaw Codegen na Kategoria / Rozszerzenie .
  • W Nawigatorze projektu usuń i usuń wszystkie pliki Foo + CoreDataClass.m lub .swift i, aby zmniejszyć przyszłe nieporozumienia, zmień nazwę dowolnego pliku Foo + CoreDataProperties.m lub .swift na być może po prostu Foo.m lub .swift .
  • Upewnij się, że każdy plik Foo.m lub .swift zawiera definicję klasy, do której możesz dodać własne niezarządzane właściwości.

(Podziękowania dla odpowiedzi firmy Positron. Moja odpowiedź tutaj wyjaśnia, dlaczego odpowiedź Positron (moje Rozwiązanie 1) działa, i dodaje Rozwiązanie 2 i Rozwiązanie 3)


to zadziałało dla mnie. jesteś niesamowity!
Srujan Simha

Niezła odpowiedź. Chciałem tylko dodać, że możesz usunąć zduplikowane ukryte pliki za pomocą polecenia „Produkt> Wyczyść folder kompilacji” po ustawieniu Codegen na Manual / None wzięte z komentarza z tego miejsca .
wątpienia


19

W moim przypadku PDFGenerator tworzył plik info.plist, właśnie go usunąłem.

wprowadź opis zdjęcia tutaj


18

Miałem ten sam problem, miałem jeszcze jedną aplikację pomocniczą w głównej aplikacji i skopiowałem ją do zasobu. W moim przypadku rozwiązany jako:

1) Cel -> 2) Fazy kompilacji 2) Kopiuj plik (n elementów) 3) Usuń plik kopiowania.

Aplikacja Pomocnik automatycznie skopiowana do Xcode 10.0.

wprowadź opis zdjęcia tutaj


3
Kopiowanie plików + Kopiowanie zasobów pakietu Pomógł usunięcie.
Oleksandr

Działa to dla mnie z niewielką modyfikacją - w moim przypadku w kroku kopiowania plików było wiele plików, w jakiś sposób te same nazwy plików zostały skopiowane do pakietu wiele razy / dwa razy - co powoduje błąd: usunięcie jednego wiersza wymaga podświetlenia wiersza / filtruj nazwę, w której wystąpił błąd, i usuń jeden wiersz znakiem minus (zawsze w dolnym wierszu) zamiast usuwać cały krok kopiowania plików.
AztecWarrior_25

16

Żadne z zaproponowanych tutaj rozwiązań nie działało dla mnie. Stało się tak szczególnie dzięki CocoaPods. Wcześniej używałem Cocoapods 1.3.1. Po prostu aktualizacja do wersji 1.5.3 nie rozwiązała problemu od razu.

Kroki, które wykonałem to:

  1. Usuń Podfile.lock
  2. Usuń katalog Pods
  3. Usuń dane pochodne i wyczyść
  4. Wyjdź z Xcode
  5. Zaktualizuj CocoaPods do wersji 1.5.3
  6. Biegać pod install
  7. Otwórz przestrzeń roboczą i buduj

5
Aktualizacja CocoaPods do wersji 1.5.3 (sudo gem install cocoapods) i uruchomienie (instalacja pod) wystarczyło, aby działało dla mnie. Dzięki!
mikemike396,

Zrobiłem kilka poleconych powyżej, ale to był jedyny, który rozwiązał dla mnie. Dzięki
Almeida,

Ten również rozwiązał to dla mnie. Myślę, że jest to lepsze niż starsze rozwiązanie kompilacji, ponieważ faktycznie zajmuje się tym problemem.
MateusK,

1
To działało dla mnie, ale musiałem również dodać install! 'cocoapods', :disable_input_output_paths => truena górze mojego podfile. Dodatkowo, jeśli nie chcesz aktualizować swoich zasobników - nie usuwaj pliku podfile.lock, a wszystkie zasobniki zostaną zainstalowane w ich bieżącej wersji.
DoesData

11

Zanim zacznę, zauważ, że mój projekt wykorzystuje Kartaginę jako menedżera zależności.

Żadna z istniejących odpowiedzi tutaj nie rozwiązała mojego problemu. To, co rozwiązało problem, było następujące.

Po pierwsze zauważyłem, że błąd kompilacji wskazywał w szczególności jedną strukturę. Następnie odfiltrowałem Cel aplikacji> Fazy budowania dla tego frameworka. Zauważyłem, że ten framework był obecny zarówno w „Link Binary With Libraries”, jak i „Embed Frameworks”. Zauważając, że żaden z frameworków wymienionych w „Embed Frameworks” nie był zarządzany przez Carthage, usunąłem omawiany framework z „Embed Frameworks”. Następnie przebudowałem mój projekt i wszystko działa dobrze, łącznie z funkcjonalnością włączoną przez dany framework.


1
Użyłem PODS. Działa usuwanie wszystkiego z Embed Frameworks. Czyszczę i odbudowuję bez błędów. Starsze rozwiązanie działa również, ale nie rozwiązuje problemu (dla każdego, kto to czyta). Jestem na xcode 10.2, cocoapods-1.6.1.
Nadine Rose

1
Używam Kartaginy i to naprawiło to dla mnie!
Devin B,

Użyłem również CocoaPods. Framework jest podłączony jako moduł rozwojowy. „Embed Frameworks” jest pusty i nadal pojawia się ten problem
Luten

11

Kroki:

  1. Przejdź do pliku Xcode
  2. Kliknij Ustawienia WorkSpace
  3. System budowania Wybierz jako starszy system budowania

4
W tym przypadku Xcode oznacza problem w projekcie, więc powrót do starszego systemu kompilacji na razie go ukryje. Zgłaszanie przez Xcode tego rodzaju problemów jest celowe i najlepiej je naprawić. Aby uzyskać więcej informacji, zobacz help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 .
Rick Ballard

To działa dla mnie. Zmiana nazwy produktu nie. Ponieważ mój produkt jest pomieszany z kodem połowy celu-c i kodem szybkiego. Mój problem brzmi: „Wiele poleceń tworzy moduł szybki”
wzhang84,

10

Wypróbuj całą tę opcję, każdy z tej opcji 3 na pewno będzie dla ciebie działał

Option 1: Remove all files from

Cel >> Fazy budowy >> Kompiluj źródła

Cel >> Fazy budowy >> Kopiuj zasoby pakietu

Option 2: Change the build system

Xcode-> Plik-> Ustawienia projektu-> System kompilacji -> System kompilacji starszego typu

Option 3: remove and update existing pod

pod pamięć podręczna czyszczenia PromisesObjC
pod pamięć podręczna czyszczenia PromisesSwift
cd [katalog_projektu]
rm -rf Pods /
rm Podfile.lock
aktualizacja pod

I hope this will help you, Happy coding :-)

-1. Nie, to nie działa „na pewno”. Po co usuwać źródła kompilacji i kopiować zasoby pakietów ?! Projekt nie będzie działać bez kompilacji kodu i zasobów.
Luten

9

Problemem było to, że przypadkowo włączyłem Info.plist do ustawień projektu -> Fazy kompilacji -> Kopiuj zasoby pakietu dla mojego celu.


To też było dla mnie rozwiązanie, ponieważ ten błąd wystąpił podczas próby uruchomienia tflite_camera_example w Xcode 10
zai chang

9

Ten problem pojawił się dla mnie po dodaniu do aplikacji drugiej części pakietu Fabric SDK.

Faktycznie stało się to, że Framework GoogleUtilies został dodany dwukrotnie do projektu Pods

Dwa wpisy dla GoogleUtilities.framework

Byłoby to w porządku przed Xcode 10, ale Xcode 10 będzie narzekał, jeśli plik ma dwa działania przeciwko niemu (w tym przypadku działanie kopiowania).

Można bezpiecznie usunąć drugą platformę.


To samo dla mnie, ale używając Carthage'a przeciągając wszystkie .frameworks do projektu sekcji bibliotek
Ronaldo Albertini

Czy naprawiłeś to @Damo
Harikarthick K

Mam do czynienia z tym problemem, czy możesz mi powiedzieć, jak to naprawić, bez zmiany dziedzictwa
Harikarthick K

9

Oto inne działające rozwiązanie: (Jeśli używasz niestandardowych kapsuł)

  • Wybierz „Pods” z paska bocznego jako podświetlenia na zrzucie ekranu.
  • Kliknij Faza kompilacji. Rozwiń sekcję „Nagłówki”. Dostępne są 3 opcje Publiczne, Prywatne, Projekt
  • Rozwiń opcję Publiczne i sprawdź, czy istnieją zduplikowane pliki. Usunąć to. GOTOWY!!

wprowadź opis zdjęcia tutaj


ta odpowiedź powinna być również postrzegana jako rozwiązanie na wypadek, gdyby problem spowodował (niestandardowy) moduł!
MkaysWork,

Możesz również usunąć wszystkie pliki * .plist z tego miejsca. Wygląda na to, że działa w przypadku niestandardowych strąków.
Amit Ahire

8

Miałem kilka Multiple commands produceostrzeżeń - nie tylko duplikację info.plist w jednym celu. W tym zlokalizowane zasoby i pliki ciągów, nagłówki itp.

Rozwiązanie: usuń wszystkie duplikaty członkostwa docelowego.


Miałem ten błąd, ponieważ miałem cel oglądania z własnym plikiem infoplist.strings, który był kopiowany do tego samego katalogu, co plik infoplist.strings głównej aplikacji. Obie kończyłyby się w tym samym miejscu, gdy były budowane.
Lyck,

7

Miałem ten problem, gdy miałem plik o tej samej nazwie w dwóch różnych obiektach docelowych. Z jakiegoś powodu jeden z tych plików miał część obu celów. Zasadniczo miałem dwa pliki. Oba te pliki należały do ​​jednego celu.

Ma sens, że cel może mieć tylko jedną nazwę pliku na cel, więc usunięcie zaznaczenia pola elementu docelowego dla pliku, który nie był powiązany z głównym celem, rozwiązało problem.


7

Korzystam z Carthage i Xcode 10.

Moje rozwiązanie to -> Projekt -> Cel -> Ogólne ->

Usuń frameworki dodane do Carthage z „Embedded Binaries”

zwykle musisz dodać skrypt w Fazach kompilacji, aby usunąć architekturę z App Store.

W Xcode 10 skrypt wydaje się zawsze wywoływany. Więc kopiuje ramy we właściwe miejsce i nie musisz dodawać ich do zakładki Ogólne.

Uwaga: jeśli nie ustawiono -> w Ustawieniach kompilacji -> Ścieżki wyszukiwania -> Ścieżki przeszukiwania frameworka -> ustaw ścieżkę do frameworku dodanego za pomocą Kartaginy .... „$ (PROJECT_DIR) / Carthage / Build / iOS”


7

Warto zauważyć, że ten błąd może zostać wygenerowany po automatycznym wygenerowaniu modeli CoreData, w których Codegen nie jest ustawiony na Ręcznie / Brak.

Aby to skorygować w Xcode 10, kliknij dwukrotnie plik xcdatamodeId, wybierz każdy ze swoich bytów i ustaw Codegen na Manual / None w Class w Inspektorze modelu danych.


Tak! Zrób też „Clean Build Folder”.
Dirk

6

Miał podobny problem, ale z plikami .swiftdoc.

Mam rozszerzenia i cele testów jednostkowych w projekcie. I mieli tę samą „Nazwę modułu produktu” (PRODUCT_MODULE_NAME w Ustawieniach kompilacji) co aplikacja. Po zrobieniu nazw unikalny problem zniknął.


6

Przejście do Xcode 10, błędy takie jak

error: Multiple commands produce '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist':

można rozwiązać w następujący sposób:

Idź do Xcode->File->Workspace/Project Settings-> Build System -> Legacy Build System.


2
W tym przypadku Xcode oznacza problem w projekcie, więc powrót do starszego systemu kompilacji na razie go ukryje. Zgłaszanie przez Xcode tego rodzaju problemów jest celowe i najlepiej je naprawić. Aby uzyskać więcej informacji, zobacz help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 .
Rick Ballard

ten zrobił to dla mnie, proszę pana, jesteś genialny
samouray

6

Przejdź do fazy kompilacji projektu i usuń info.plist ze źródeł kompilacji. Spowoduje to usunięcie tego problemu i projekt będzie ponownie aktywny.

wprowadź opis zdjęcia tutaj


6

Jeden z moich CocoaPods został usunięty i spowodował problem. Czy strąki zostały zaktualizowane i działało dobrze.

Uważam, że mógł to być zestaw LivePerson SDK


dla mnie po prostu musiałem zrobić „pod instalację”
Pnar Sbi Wer

6

Mój problem polegał na tym, że Xcode 10 jest uruchamiany w Mojave i podczas próby uruchomienia testów jednostkowych, które napisałem przed aktualizacją do XCode 10.

W moim przypadku miałem ten problem podczas uruchamiania mojego TestTargetcelu. Aby rozwiązać, musiałem:

  • Usuń jedną z zależności docelowych (w TestTarget > build phases > Target Dependencies)

ponieważ miałem dwa inne cele poza moim TestTargeti oba działały w tym samym skrypcie i tworzyły / kopiowały pliki w pewnym momencie.

I to koliduje z tym, o czym wspomniano w Uwagach do wydania System Build dla Xcode 10 tutaj :

Błędem jest wygenerowanie dowolnego pliku w kompilacji przez więcej niż jedno polecenie kompilacji. Na przykład, jeśli dwa obiekty docelowe deklarują ten sam plik wyjściowy z fazy skryptu powłoki, rozłóż deklarację pliku wyjściowego na pojedynczy cel.

Nowa AKTUALIZACJA po aktualizacji z Xcode 10.1 do 10.2

Podobny problem pojawił się ponownie po aktualizacji do Xcode 10.2. Mam wiele celów według projektu: Target1i Target2rozwiązałem ten problem przez:

  • nawigacja do Edit Scheme > Buildi
  • usunięcie jednego z budowanych obiektów: odznacz pole wyboru Target1poniżej, Testponieważ wiedziałem, że zostały Target2zaimportowaneTarget1

Należy również zwrócić uwagę na to, Target2że pole wyboru pozostanie zaznaczone podTest


6
error: Multiple commands produce '/Users/KunshtechNew/Library/Developer/Xcode/DerivedData/chat21-fgjaqebxysmggqfdnetggdbzfqih/Build/Products/Debug-iphonesimulator/Chat21.app/Base.lproj/Chat.strings':
1) Target 'chat21' (project 'chat21') has copy command from '/Users/KunshtechNew/Downloads/chat21-ios-demo-master/TildeskWidget/Chat21Core/Base.lproj/Chat.strings' to '/Users/KunshtechNew/Library/Developer/Xcode/DerivedData/chat21-fgjaqebxysmggqfdnetggdbzfqih/Build/Products/Debug-iphonesimulator/Chat21.app/Base.lproj/Chat.strings'
2) Target 'chat21' (project 'chat21') has copy command from '/Users/KunshtechNew/Downloads/chat21-ios-sdk-master 2/Chat21Core/Base.lproj/Chat.strings' to '/Users/KunshtechNew/Library/Developer/Xcode/DerivedData/chat21-fgjaqebxysmggqfdnetggdbzfqih/Build/Products/Debug-iphonesimulator/Chat21.app/Base.lproj/Chat.strings'

Istnieją dwa różne rozwiązania, aby pozbyć się tego problemu:

Rozwiązanie 1

Jak widać byłem coraz ten sam błąd .. w moim przypadku nie było dodatkową kopię folderu Chat21Core w TildeskWidget folderu ..This było stworzenie problem .. Więc jedno z możliwych rozwiązań może być także po prostu przeczytać w całości i błąd spróbuj znaleźć, czy istnieje jakaś dodatkowa kopia z projektu, czy nie.

Rozwiązanie 2

Kolejne proste rozwiązanie, które znalazłem, gdy napotykam ten sam typ problemu dla innego projektu. Tym razem musiałem zastosować inne rozwiązanie.

  • pod deintegrate z projektu.
  • Usuń plik obszaru roboczego i plik pod.lock z folderu projektu.
  • Ponownie pod install i spróbuj zbudować projekt.

Mam nadzieję, że to może Ci pomóc.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.