Errore Xcode 10: vengono generati più comandi


659

errore: più comandi producono '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist': 1) Target 'Opt '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist' to '/ Users / uesr / Library / Developer / Xcode / DerivedData / OptimalLive-fxatvygbofczeyhjsawtebkimvwx / Build / Products / Optugiveos .app / Info.plist '2) Target' OptimalLive 'ha il comando di copia da' /Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Server/Masonry/Info.plist 'in' / Users / uesr / Libreria / Sviluppatore / Xcode / DerivedData / OptimalLive-fxatvygbofczeyhjsawtebkimvwx / Build / Products / Debug-iphoneos / OptimalLive.app / Info.plist '3) Target' OptimalLive 'ha un comando di processo con input '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist'

L'esecuzione del codice in Xcode9 funziona, ma c'è un errore in Xcode10.


Per cocoapods gestite le dipendenze, fare riferimento a stackoverflow.com/a/52421345/334999
Shuo

succede quando importi un framework di terze parti nel tuo progetto e ha info.plist nei suoi file sorgente. Questa info.plist è in conflitto con quella della tua app. Basta rimuoverlo dalle fasi di costruzione
protspace il

Caro lettore, leggi OGNI risposta a questa domanda, ci sono molte cose diverse che potrebbero essere sbagliate.
iluvcapra,

Vai al percorso "Crea fasi-> Copia risorse del pacchetto". Controlla il nome del file ed elimina lo stesso. Pulisci ed esegui l'aplication
Sagar Sukode

Risposte:


1228

Il problema potrebbe verificarsi a causa di più Plist o altri file all'interno dell'App-

Soluzione -> Apri target -> Fasi di costruzione> Copia risorse bundle e rimuovi info.plistda lì.

inserisci qui la descrizione dell'immagine

Nota: se hai sviluppato anche un'app per l'orologio, dovrai rimuovere anche il plist dall'orologio e l'estensione per l'orologio.


12
Potrebbe anche essere necessario cercare eventuali dipendenze, ad esempio CocoaPods per i file info.plist aggiunti erroneamente
Chris Paveglio,

68
Per elaborare un po ': questo errore si verifica perché il nuovo sistema di build di Xcode 10 è più efficace nel rilevare i problemi di configurazione del progetto. Problemi come questi a volte possono causare sottili problemi con la tua build, quindi è bene risolverli.
Rick Ballard,

2
Nel mio caso ho dovuto rimuovere alcuni file di localizzazione denominati InfoPlist.strings
neowinston,

8
Nel mio caso, avevo un info.plistfile in una delle mie dipendenze private CocoaPods che veniva raccolto perché era associato alla source_filesproprietà del podspec . Non avevo bisogno del info.plistfile nel mio modulo, quindi l'ho appena eliminato.
aapierce,

3
Grazie! Avevo aggiunto alcuni plugin per sviluppatori nel mio codice qualche tempo fa e aveva anche un file info.plist che era in conflitto con il file info.plist della mia app
Christopher Smit,

567

Ho trovato la soluzione per questo errore di compilazione, per chiunque abbia lo stesso problema con il sistema di compilazione Xcode 10, seguire i passaggi seguenti per risolverlo:

  1. In Xcode, vai su File-> Impostazioni progetto / area di lavoro.
  2. Cambia il sistema di build in legacy Build system.

inserisci qui la descrizione dell'immagine Risolverà il problema di compilazione con il nuovo Xcode 10.

Se vuoi lavorare con il nuovo sistema di generazione, puoi trovare l'aiuto per la risoluzione dei problemi da questa pagina di aiuto di Apple Xcode .

Spero che sia di aiuto!


4
puoi spiegare perché sta arrivando questo problema e come risolverlo con la scelta di Legacy Build System? @Akshay Sunderwani
user832

142
Non stai risolvendo il problema, li stai solo nascondendo.
Caio,

4
Risolve l'errore di compilazione per progetti nativi di reazione. Vedi il problema qui: github.com/facebook/react-native/issues/20492 Esiste una possibile soluzione se non si desidera passare al sistema di build legacy: github.com/facebook/react-native/issues/…
Eugen Timm,

6
Questa non è una soluzione a lungo termine. Alla fine il sistema di build legacy non sarà più un'opzione.
Paul King,

6
Bene, nasconderò il problema al 100% invece di risolverlo perché nessuna di queste soluzioni funziona. Sembra essere un problema noto con Cocoapods; vedi github.com/CocoaPods/CocoaPods/issues/7949 . Spero che in qualche modo si risolva da solo quando questa soluzione alternativa non sarà più un'opzione.
sudo,

170

Vai su Xcode -> File -> Impostazioni dell'area di lavoro. Troverai un pop-up simile.

inserisci qui la descrizione dell'immagine

Seleziona " Legacy Build System " dal tag Build System. Premi su " Fine "

Nota: - Assicurati di cancellare il tuo progetto con " cmd + maiusc + alt + k " e " Dati derivati "

Costruisci il tuo progetto funzionerà a meraviglia :)


Secondo la mia comprensione, i nostri progetti esistenti sono realizzati in vecchio swift e xcode che sono supportati vecchia versione di swift e xcode. Quindi, prima di quello che abbiamo fatto, abbiamo scelto "Impostazioni bundle-> Sistema di build legacy Swift" e abbiamo selezionato la versione precedente.
Hardik1344,

Inizialmente lo avevo su "Swift Legacy Build System", ma era stato cambiato dopo aver riavviato il mio computer. Anche se pensi di avere impostato correttamente, potrebbe valere la pena ricontrollare.
EndersJeesh,

Questa soluzione non risolve il problema, ma lo nasconde.
Argus,

Assicurati anche di modificare le impostazioni dello spazio di lavoro per utente sullo stesso;)
Wei Shen,


114

Prova anche questo. Xcode-> File-> Impostazioni progetto-> Sistema build -> Sistema build legacy.


38
In questo caso Xcode sta segnalando un problema nel progetto, quindi il ripristino del sistema di build legacy lo nasconderà per ora. La segnalazione di Xcode di questo tipo di problemi è intenzionale ed è meglio risolverlo.
Rick Ballard,

2
Se l'errore si verifica nel progetto generato da CocoaPods, disabiliterei il nuovo sistema di build fino a quando una nuova versione di CocoaPods risolverà il problema.
Rivera,

@RickBallard ha un senso, ora, quale potrebbe essere la soluzione giusta? sembra che ci sia un mix di risposte
rolando

1
Esistono diverse cause di questo tipo di errore, ma puoi leggere ulteriori informazioni sul significato di help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0
Rick Ballard,

74

Se si ottiene questo dal Dittocomando creando più istanze con lo stesso nome (NON il 'copy files' build phase), potrebbe essere necessario modificare il Product Module Name.

  1. Fai clic sui tuoi target di cui Xcode si lamenta
  2. Clicca su Build Settings
  3. Cercare Product Module Name
  4. Cambia il nome in qualcosa di unico

Abbiamo un target di monitoraggio e alcuni target di notifica nella nostra app, quindi ho inserito elementi come Extensionalla fine del nome del modulo.

Originariamente ho trovato questa soluzione qui: https://forums.developer.apple.com/thread/103913


1
Ha funzionato un po 'bene, ma poi si è rotto con il file ponte.
Mohamad Kaakati,

5
Nel mio caso, ho dovuto selezionare Alla destra dove cercare per Product Module Namemostrare la configurazione della build.
Hodson,

56
Ho avuto lo stesso problema in Xcode 10. Lo stesso progetto stava funzionando bene in Xcode 9.4.1. Quindi la soluzione è molto semplice. Rimuovi tutti i file info.plist dalla destinazione. Si prega di farlo per tutti i file info.plist. Passo 1. Seleziona il file info.plist. 2. In File inspector Deseleziona il progetto in Target Membership. Quindi esegui il tuo progetto. Grazie !
Un kit

12
Per me ho dovuto andare su [Nome progetto]> Fasi di costruzione> Copia risorse pacchetto e rimuovere le duplicazioni lì
user3322509

5
@Bharath Non rimuovere i file info.plist dal tuo progetto. Devi rimuovere solo da Target come ho già detto. Non possiamo rimuovere info.plist, è molto importante per il progetto.
Un kit

69

Stavo sperimentando Core Data. Ho creato un modello di dati per un semplice programma di checklist e generato NSManagedObjects. Quando ho compilato il progetto ho ricevuto il seguente errore:

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

Il problema era che il modello di dati (CheckList.xcdatamodeld nel mio caso) era nell'elenco "Sorgenti di compilazione". Il progetto è stato compilato in modo chiaro quando l'ho rimosso dall'elenco.

  1. Apri il navigatore del progetto e seleziona il progetto (primissima voce in alto)
  2. Seleziona il tuo obiettivo di costruzione in Target nel riquadro "Progetti e target"
  3. Seleziona l'opzione Crea fasi nella parte superiore
  4. Espandi la voce "Compila origini" e cerca il nome del tuo modello di dati. Cerca "xcdatamodeld" se hai problemi a trovarlo.
  5. Elimina il modello dall'elenco di compilazione
  6. Assicurarsi che il modello di dati sia incluso nell'elenco "Copia risorse pacchetto". Aggiungilo se manca.

MODIFICARE

Come @WilliamT. spiega nei commenti, è necessario xcdatamodeld nell'elenco di compilazione. Invece, vai alle tue entità all'interno del file xcdatamodeld. Seleziona i modelli che presentano errori, espandi il pannello di sinistra e cambia il campo di "Codegen" in "Manuale / Nessuno".


36
Il file xcdatamodeld dovrebbe effettivamente trovarsi nelle fonti di compilazione. se visualizzi questo errore in relazione ai dati principali, è probabile che tu abbia invocato "Crea sottoclasse NSManagedObject" ma hai impostato l'Entità su Codegen = "Definizione classe". Ciò significa che sta creando automaticamente queste classi per te e le hai create manualmente in modo che esistano due volte.
William T.

1
sei un
salvavita

1
@WilliamT. Quindi quale dovrebbe essere il valore di Codegen se si sta invocando Crea sottoclasse di oggetti NSManaged?
Kaunteya,

2
@Kaunteya C'è un'opzione per impostare il Codegen su "Manuale" su ciascun attributo CoreData (tabella)
William T.

1
Segui @WilliamT. consiglio e poi pulire e costruire.
PruitIgoe,

40

Durante il controllo del registro di build, ho notato un avviso:

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')

Quindi, se è il tuo caso, vai al tuo obiettivo:

  1. Costruisci fasi
  2. Copia risorsa pacchetto
  3. Rimuovi info.plist.

32
Il file info.plist non è presente nelle risorse del bundle di copia, continua a ricevere lo stesso errore
bunty kumar

Rimozione di un eccessivo Info.plist dalla fase di creazione delle risorse del pacchetto di copia risolto per me. Tuttavia, il mio avviso era diverso perché accidentalmente un Info.plist di un obiettivo diverso ma all'interno dello stesso progetto è stato aggiunto alla fase di creazione delle risorse del pacchetto di copia. L'avvertimento era: "avvertimento: file di output duplicato '... MyApp.app/Info.plist' sull'attività: ProcessInfoPlistFile". E porta allo stesso errore della domanda originale: "errore: più comandi producono '... MyApp.app/Info.plist'".
Martin Polak,

nel mio caso era il file "LICENSE" - una volta rimosso, il problema è stato risolto, quindi immagino che il problema sia più generale di "plist", sembra essere solo un problema più frequente
vir us

37

Se usi CocoaPods potresti voler provare a disintegrare i pod e installarli di nuovo. Per me funziona.

pod deintegrate

pod install


Sì, il mio problema è stato causato da un pacchetto pod e solo questo ha risolto il problema! grazie
CodeBrew

@Ming Chu Grazie
N. Der

30

Prova questo funziona:

In Xcode, vai su File-> Impostazioni progetto / area di lavoro.

Cambia il sistema di build in legacy Build system.


2
In questo caso Xcode sta segnalando un problema nel progetto, quindi il ripristino del sistema di build legacy lo nasconderà per ora. La segnalazione di Xcode di questo tipo di problemi è intenzionale ed è meglio risolverlo. Per ulteriori informazioni, consultare help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 .
Rick Ballard,

27

Leggere questa risposta se il messaggio di errore fa riferimento a file di dati principali

Sinossi: Potresti avere sia file di classe di oggetti gestiti generati automaticamente che generati manualmente.

Questa risposta si applica se la prima riga dell'errore si riferisce a un file Foo + CoreDataProperties.o o Foo + CoreDataClass.o . Esempio:

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

La causa principale può essere vista espandendo la sezione Compile Swift Source Files della Build Transcript. Per esempio:

<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'

Il primo file menzionato è un file di origine nella directory del progetto, che qualcuno ha generato selezionando il modello di dati nel Navigatore progetto e facendo clic nel menu Editor > Crea sottoclasse oggetto gestito . Questa funzione è stata aggiunta in Xcode 7 o giù di lì.

Il secondo file è un file con lo stesso nome ma che è sepolto in Xcode DerivedData. Questo file viene generato automaticamente da Xcode durante ogni build se il file del modello di dati ( .xcdatamodeld) è incluso nella fase di compilazione Sorgenti di compilazione del target . Questa funzione è stata aggiunta in Xcode 9 o giù di lì. Zero, vengono generati uno o due file per ogni entità / classe, a seconda dell'impostazione del popup Codegen . Tale popup si trova in Impostazioni modello dati quando selezioni un'entità durante la modifica del modello di dati ...

screenshot di Data Model Inspector

Le impostazioni sono:

  • Manuale / Nessuno Nessun file generato
  • Categoria / Estensione Un file, Foo + CoreDataProperties.m o .swift Viene generato , contenente una categoria Objective-C o estensione Swift.
  • Definizione della classe Viene generato lo stesso file di categoria / estensione e inoltre viene generato un Foo + CoreDataClass.m o .swift , contenente la dichiarazione e la definizione della classe.

Quindi vedi che il problema si verifica quando uno sviluppatore (come me) abituato al vecchio Xcode inizia un progetto in un nuovo Xcode. Riteniamo di dover utilizzare la voce di menu Crea sottoclasse di oggetti gestiti , che facciamo, per creare i file che possiamo vedere nel Navigatore progetto senza renderci conto che le nostre impostazioni nel popup Codegen stanno facendo sì che Xcode crei file duplicati, che Apple "abilmente" non viene visualizzato nel Navigatore progetto, perché non si fidano degli sviluppatori di leggere ed ascoltare il commento nell'intestazione // Questo file è stato generato automaticamente e non deve essere modificato.

Soluzione 1: utilizzare il modo precedente

Puoi disabilitare tutti i Codegen automatici per un modello di dati con una sola impostazione:

  • Apri il problema Fasi di costruzione del target (in Project Navigator , seleziona il progetto, quindi nell'elenco di TARGET che appare, seleziona il target del problema, quindi fai clic su Crea fasi ).
  • Espandere la voce Compila origini e trovare il modello di dati del problema ( .xcdatamodeldfile).
  • Eliminalo dall'elenco di compilazione
  • Assicurarsi che il modello dati sia incluso nell'elenco Risorse pacchetto copia .

Soluzione 2 - Core Data Magic per principianti

Qui, vai all in nel modo più recente.

  • Lascia il tuo modello di dati come è nelle fonti di compilazione .
  • In ogni ispettore entità nel modello dati, imposta Codegen su Definizione classe .
  • Nel Project Navigator, elimina e cancella tutti i file Foo + CoreDataClass e rinomina i file Foo + CoreDataProperties.m o .swift in qualcosa come Foo + MyProperties .
  • In ogni file Foo + MyProperties.m o .swift , se sono presenti proprietà generate da Xcode, eliminare queste proprietà perché si troveranno nei file nascosti creati da Codegen .

Con questa soluzione, le definizioni delle classi vengono generate automaticamente dal modello di dati su ogni build. Non puoi nemmeno vederli. È Core Data Magic , piacevole e semplice per i principianti.

Soluzione 3 - Per la maggior parte delle app del mondo reale

Ma la soluzione 2 non va bene se vuoi davvero aggiungere proprietà non gestite. (Objective-C non consente l'aggiunta di proprietà nelle categorie e Swift non consente l'aggiunta di proprietà memorizzate nelle estensioni.) Quindi nella maggior parte delle app del mondo reale, probabilmente vorrai andare a metà strada tra le soluzioni 1 e 2 ...

  • Lascia il tuo modello di dati nell'elenco delle fonti di compilazione
  • In ogni ispettore entità nel modello dati, imposta Codegen su Categoria / Estensione .
  • Nel Project Navigator, eliminare e eliminare qualsiasi file Foo + CoreDataClass.m o .swift e, per ridurre la confusione futura, rinominare qualsiasi file Foo + CoreDataProperties.m o .swift in forse solo Foo.m o .swift .
  • Assicurarsi che ogni file Foo.m o .swift contenga la definizione della classe, alla quale è possibile aggiungere le proprie proprietà non gestite.

(Ringraziamenti alla risposta di Positron. La mia risposta qui spiega perché la risposta di Positron (la mia soluzione 1) funziona e aggiunge la soluzione 2 e la soluzione 3.)


questo ha funzionato per me. sei fantastico!
Srujan Simha,

Bella risposta. Volevo solo aggiungere che puoi cancellare i file nascosti duplicati usando 'Prodotto> Pulisci cartella di build' dopo aver corretto il Codegen su Manuale / Nessuno preso da un commento da qui .
indubbiamente l'

21

Un'opzione che ha risolto il mio problema è quella di cambiare il sistema di build in un sistema di build legacy. Seguire i seguenti passaggi in Xcode 10+.

Qui ho scritto un articolo dettagliato sul problema e sulla sua soluzione. Errore Xcode: vengono generati più comandi

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


1
Salvato la mia vita. Ha funzionato perfettamente.
Reinaldo,

2
Questa risposta ha risolto da sola come 12 problemi che ho riscontrato in Xcode con React Native. Grazie!
Chris Gilardi,

19

Nel mio caso PDFGenerator stava producendo un file info.plist, l'ho appena eliminato.

inserisci qui la descrizione dell'immagine


18

Ho avuto lo stesso problema, avevo un'app di supporto in più nell'app principale e copiavo questa risorsa. Nel mio caso risolto come: -

1) Destinazione -> 2) Fasi di costruzione 2) Copia file (n articoli) 3) Rimuovi copia file.

L'app Helper viene copiata automaticamente in Xcode 10.0.

inserisci qui la descrizione dell'immagine


3
Copia file + Copia eliminazione risorse bundle aiutato.
Oleksandr,

Questo ha funzionato per me con una leggera modifica - Nel mio caso c'erano più file nel passaggio copia file, in qualche modo gli stessi nomi di file sono stati copiati nel pacchetto più volte / due volte - con conseguente errore: l'eliminazione di una singola riga richiede di evidenziare la riga / filtra il nome lamentato dall'errore ed elimina una riga con il segno meno (è sempre nella riga inferiore) invece di eliminare l'intero passaggio dei file di copia.
AztecWarrior_25

16

Nessuna delle soluzioni proposte qui ha funzionato per me. Ciò è dovuto in particolare a CocoaPods. In precedenza utilizzavo Cocoapods 1.3.1. Il semplice aggiornamento a 1.5.3 non ha risolto immediatamente il problema.

I passi che ho seguito sono stati:

  1. Elimina Podfile.lock
  2. Elimina la directory dei pod
  3. Elimina i dati derivati ​​e pulisci
  4. Esci da Xcode
  5. Aggiorna CocoaPods alla 1.5.3
  6. Correre pod install
  7. Apri area di lavoro e crea

5
Aggiornare CocoaPods alla 1.5.3 (sudo gem install cocoapods) ed eseguire (pod install) è stato sufficiente per farlo funzionare per me. Grazie!
mikemike396,

Ho fatto alcuni dei consigli sopra indicati, ma questo è stato l'unico che ha risolto per me. Grazie
Almeida,

Questo ha risolto anche per me. Penso che sia meglio della soluzione di build legacy perché in realtà si occupa del problema.
MateusK,

1
Questo ha funzionato per me, ma ho anche dovuto aggiungere install! 'cocoapods', :disable_input_output_paths => truein cima al mio podfile. Inoltre, se non desideri aggiornare i tuoi pod, non eliminare podfile.lock e tutti i pod verranno installati nella loro versione corrente.
DoesData

11

Prima di iniziare, nota che il mio progetto utilizza Cartagine come gestore delle dipendenze.

Nessuna delle risposte esistenti qui ha risolto il mio problema. Ciò che ha risolto il problema per me è stato il seguente.

Innanzitutto, ho notato che l'errore di compilazione ha evidenziato un framework in particolare. Successivamente ho filtrato Target app> Crea fasi per quel framework. Ho notato che quel framework era presente sia in "Link Binary With Libraries" sia in "Embed Frameworks". Notando che nessuno dei framework elencati in "Embed Frameworks" era gestito da Cartagine, ho rimosso il framework in questione da "Embed Frameworks". Ho quindi ricostruito il mio progetto e tutto funziona perfettamente, inclusa la funzionalità abilitata dal framework in questione.


1
Ho usato PODS. Rimozione di tutto da Embed Frameworks ha funzionato. Ho pulito e ricostruito senza errori. Anche la soluzione legacy funziona ma non risolve il problema (per chiunque legga questo). Sono su xcode 10.2, cocoapods-1.6.1.
Nadine Rose

1
Sto usando Cartagine e questo mi ha risolto!
Devin B,

Ho anche usato CocoaPods. Framework è collegato come pod di sviluppo. "Embed Frameworks" è vuoto e presenta ancora questo problema
Luten

11

passi:

  1. Vai al file Xcode
  2. Fare clic su Impostazioni spazio di lavoro
  3. Sistema di compilazione Selezionare come sistema di generazione legacy

4
In questo caso Xcode sta segnalando un problema nel progetto, quindi il ripristino del sistema di build legacy lo nasconderà per ora. La segnalazione di Xcode di questo tipo di problemi è intenzionale ed è meglio risolverlo. Per ulteriori informazioni, consultare help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 .
Rick Ballard,

Questo funziona per me. La modifica del nome del prodotto no. Poiché il mio prodotto è mischiato con metà codice obiettivo-c e codice rapido. Il mio problema è "Più comandi producono swiftmodule"
wzhang84,

10

Prova tutte queste opzioni, qualcuno di queste 3 funzionerà sicuramente per te

Option 1: Remove all files from

Target >> Costruisci fasi >> Compila fonti

Target >> Crea fasi >> Copia risorse del pacchetto

Option 2: Change the build system

Xcode-> File-> Impostazioni progetto-> Sistema build -> Sistema build legacy

Option 3: remove and update existing pod

pod cache clean PromisesObjC
pod cache clean PromisesSwift
cd [your_project_dir]
rm -rf Pods /
rm Podfile.lock
aggiornamento pod

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

-1. No, non funziona "di sicuro". Qual è il punto nella rimozione delle fonti di compilazione e copia delle risorse del pacchetto ?! Il progetto non funzionerà senza compilare codice e risorse.
Luten

9

Quindi il problema che stavo riscontrando è che avevo accidentalmente incluso Info.plist nelle impostazioni del progetto -> Crea fasi -> Copia risorse bundle per il mio obiettivo.


Questa è stata esattamente la soluzione anche per me, poiché questo errore si è verificato durante il tentativo di eseguire tflite_camera_example in Xcode 10
zai chang,

9

Questo problema è emerso per me dopo aver aggiunto una seconda parte della suite Fabric di SDK all'app.

Quello che è realmente accaduto è stato che GoogleUtilies Framework è stato aggiunto due volte al progetto Pods

Due voci per GoogleUtilities.framework

Questo sarebbe andato bene prima di Xcode 10 ma Xcode 10 si lamenterà se un file ha due azioni contro di esso (in questo caso un'azione di copia).

È sicuro rimuovere il secondo framework.


Lo stesso per me, ma usando Cartagine trascinando tutti i .frameworks nel progetto della sezione biblioteche
Ronaldo Albertini,

Hai risolto questo @Damo
Harikarthick K il

Sto affrontando questo problema, potresti dirmi come risolvere questo problema, senza cambiare l'eredità
Harikarthick K

9

Ecco un'altra soluzione funzionante: (Se stai usando Pod personalizzati)

  • Seleziona "Baccelli" dalla barra laterale come punti salienti dello screenshot.
  • Fai clic su Build Phase. Espandi la sezione "Intestazioni". Sono disponibili 3 opzioni: Pubblico, Privato, Progetto
  • Espandi Pubblico e controlla che ci siano file duplicati. Rimuoverlo. FATTO!!

inserisci qui la descrizione dell'immagine


questa risposta dovrebbe anche essere vista come una soluzione nel caso in cui il pod (personalizzato) stia causando il problema!
MkaysWork,

Inoltre è possibile rimuovere qualsiasi file * .plist da qui. Sembra funzionare con pod personalizzati.
Amit Ahire,

8

Avevo un sacco di Multiple commands produceavvertimenti, non limitato alla duplicazione di info.plist in un obiettivo. Comprese risorse localizzate e file di stringhe, intestazioni ecc.

Soluzione: rimuovere tutte le duplicazioni nell'appartenenza di destinazione.


Ho avuto questo errore perché avevo un target watch con il suo file infoplist.strings che veniva copiato nella stessa directory del file infoplist.strings dell'app principale. Entrambi sarebbero finiti nello stesso posto durante la costruzione.
Lyck,

7

Ho avuto questo problema quando avevo un file con lo stesso nome in due target diversi. Per qualche motivo uno di quei file avevo parte di entrambi i target. Quindi praticamente avevo due file. Ed entrambi questi file appartenevano a un obiettivo.

È logico che un target possa avere solo un nome file per target, quindi deselezionando la casella del membro target per il file non correlato al target principale è stato risolto il problema.


7

Uso Cartagine e Xcode 10.

La mia soluzione è -> Progetto -> Destinazione -> Generale ->

Rimuovere i frame aggiunti con Cartagine da "File binari incorporati"

di solito devi aggiungere uno script in Build Phases per eliminare l'architettura per l'app store.

In Xcode 10 lo script sembra chiamato sempre. Quindi copia i framework nel posto giusto e non è necessario aggiungerli alla scheda Generale.

Nota: se non impostato -> in Impostazioni di costruzione -> Percorsi di ricerca -> Percorsi di ricerca del framework -> imposta il percorso del Framework u aggiunto con Cartagine .... ad es. "$ (Project_dir) / Cartagine / build / iOS"


7

Vale la pena notare che questo errore può essere prodotto dopo la generazione automatica dei modelli CoreData in cui Codegen non è impostato su Manuale / Nessuno.

Per correggerlo in Xcode 10, fai doppio clic sul tuo file xcdatamodeId e seleziona ciascuna delle tue entità e imposta Codegen su Manuale / Nessuno in Classe in Impostazioni modello dati.


Sì! E fai anche una "Cartella Build Clean".
Dirk,

6

Aveva un problema simile ma con i file .swiftdoc.

Ho estensioni e obiettivi di unit test nel progetto. E avevano lo stesso "Nome modulo prodotto" (PRODUCT_MODULE_NAME in Impostazioni build) dell'applicazione. Dopo aver reso i nomi un problema unico sparito.


6

Passando a Xcode 10, errori simili

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

può essere risolto come segue:

Vai a Xcode->File->Workspace/Project Settings-> Build System -> Legacy Build System.


2
In questo caso Xcode sta segnalando un problema nel progetto, quindi il ripristino del sistema di build legacy lo nasconderà per ora. La segnalazione di Xcode di questo tipo di problemi è intenzionale ed è meglio risolverlo. Per ulteriori informazioni, consultare help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 .
Rick Ballard,

questo l'ha fatto per me, signore, siete un genio
sabato

6

Vai a Project Build Phase e rimuovi info.plist dalle fonti di compilazione. Rimuoverà quel problema e il progetto sarà di nuovo attivo.

inserisci qui la descrizione dell'immagine


6

Uno dei miei CocoaPods è stato eliminato e ha causato il problema. Ha fatto un aggiornamento dei pod e ha funzionato bene.

Credo che potrebbe essere stato l'SDK di LivePerson


per me
dovevo

6

Il mio problema era in Xcode 10 in esecuzione su Mojave e durante il tentativo di eseguire unit test che ho scritto prima di aggiornare a XCode 10.

Nel mio caso, ho riscontrato questo problema durante l'esecuzione del mio TestTargetobiettivo. Per risolvere, ho dovuto:

  • Elimina una delle dipendenze target (in TestTarget > build phases > Target Dependencies)

poiché avevo altri due obiettivi oltre al mio TestTarget ed entrambi stavano eseguendo lo stesso script e creando / copiando file a un certo punto.

E ciò è in conflitto con quanto menzionato in Build System Release Notes per Xcode 10 qui :

È un errore per ogni singolo file nella build essere prodotto da più di un comando build. Ad esempio, se due target dichiarano ciascuno lo stesso file di output da una fase di script di shell, fattorizzare la dichiarazione del file di output in un singolo target.

Nuovo AGGIORNAMENTO dopo l'aggiornamento da Xcode 10.1 a 10.2

Problema simile si è nuovamente verificato dopo l'aggiornamento a Xcode 10.2. Ho più bersagli in per progetto: Target1e Target2, e ho risolto questo problema:

  • navigando verso Edit Scheme > Builde
  • rimuovere uno dei target dalla costruzione: deseleziona la casella di controllo di Target1under Testpoiché sapevo Target2importatoTarget1

Da notare anche qui, Target2la casella di controllo deve rimanere selezionata sottoTest


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'

Ci possono essere 2 diverse soluzioni per sbarazzarsi di questo problema:

Soluzione 1

Come possiamo vedere stavo ottenendo lo stesso errore .. nel mio caso c'era una copia aggiuntiva della cartella Chat21Core nella cartella TildeskWidget .. Questo stava creando un problema .. Quindi una delle possibili soluzioni può anche essere solo leggere l'errore completamente e prova a trovare se c'è qualche copia aggiuntiva referenziata dal progetto o meno.

Soluzione 2

Un'altra soluzione semplice che ho trovato quando ho riscontrato lo stesso tipo di problema per un progetto diverso. Questa volta ho dovuto applicare una soluzione diversa.

  • pod deintegrate dal progetto.
  • Rimuovere il file dell'area di lavoro e il file pod.lock dalla cartella del progetto.
  • Ancora una volta pod install e prova a costruire il progetto.

Spero che questo possa funzionare per te ..

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.