Problemi dopo l'aggiornamento a Xcode 10: impossibile trovare il file di input della build


105

Ho aggiornato il mio Xcode SDK alla versione 10 la scorsa notte e poi ho scoperto che non posso costruire.

Ricevo questo errore:

Impossibile trovare il file di input della build: "/Users/call01/Library/Developer/Xcode/DerivedData/Comp-Lite-Apps-gytvmossqptokeafrddvvmnlzadk/Build/Products/Debug-iphoneos/SG11.app/SG11

che non esisteva prima del mio aggiornamento e sono tentato di tornare indietro, ma vorrei restare con la versione 10 se posso risolvere questo problema.

Risposte:


131

Prova a tornare a Legacy Build System( File > Project Settings > Workspace Settings > Legacy Build System)


2
Bello. Ma mi chiedo ancora cosa succederà dopo? Dobbiamo sistemare il nostro progetto ma come?
Teddy

1
@Teddy Non ho ancora trovato una soluzione, utilizzo ancora questa soluzione alternativa
schmidt9

2
@ schmidt9 tanto di cappello, grazie mille sei un salvavita. in secondo luogo, NON POSSO credere che questo nuovo sistema di build fosse il problema. Ho lottato con questo per giorni. dopo l'aggiornamento a iOS 12 e XCode 10, la firma automatica è stata interrotta. Ho provato di tutto e persino revocato e ricreato tutti i certificati. e profili. la firma è stata corretta ma il profilo di provisioning era sempre NESSUNO. Potevo firmare manualmente l'app e ha funzionato, ma dall'app pubblicata mancavano il contenitore iCloud e altri elementi di autorizzazione. comunque, risolto il mio problema. buon Dio come Apple mi frustra con ogni aggiornamento. Saluti!
Nexus

Questo ha risolto il mio problema con la firma e la profilazione automatica. ma ho ancora problemi con i contenitori iCloud. quando installo l'app direttamente sul mio telefono funziona bene. Ho un contenitore iCloud e utilizzo i documenti iCloud per allegare file dall'archivio iCloud. ma quando rilascio l'app per TestFlight, non funziona. fallisce silenziosamente, come se il contenitore iCloud non fosse nemmeno presente nel profilo dell'app distribuita. incredibilmente frustrante.
Nexus

1
@Nexus questo problema con il nuovo sistema di build persiste da quando Apple lo ha lanciato (xcode 8 o 9). Mi dispiace non ho avuto a che fare con i contenitori iCloud, non posso dire quale potrebbe essere il problema
schmidt9

91

Per file Swift o file che appartengono al progetto come:

Build input file cannot be found: PATH/TO/FILE/FILE.swift

Questo problema può verificarsi quando file o cartelle sono stati rimossi o spostati nel progetto.

Per risolverlo:

  1. Vai nel navigatore del progetto, seleziona il tuo progetto

  2. Seleziona Build Phasesscheda

  3. Nella Compile Sourcessezione, controlla i file di cui Xcode si lamenta

  4. Notare che i file hanno il percorso sbagliato e cancellarli facendo clic sull'icona meno

  5. Aggiungere nuovamente i file facendo clic sull'icona più e cercare nel progetto.

  6. Prodotto> Pulisci cartella build

  7. Costruire

Di solito trovi questi file mancanti nella Recovered Referencescartella di Xcode nell'albero del progetto (cerca la barra di ricerca in basso a sinistra di Xcode e cerca il tuo file lamentoso):

Anche eliminarli da questa cartella può risolvere l'errore.


1
Grazie! Avevamo riferimenti a file cancellati. La sola eliminazione di questi riferimenti ha risolto il problema
Jason

A volte, quando rinomino da XCode, il file in "Finder" conserva ancora il vecchio nome. Individua il file in "Finder" e rinominalo con il nuovo nome.
Tony

58

Per me in Xcode 10, questa soluzione ha funzionato a meraviglia. Basta andare alla cartella Riferimenti recuperati e rimuovere tutti i file in colore rosso e aggiungerlo di nuovo con il riferimento corretto.

inserisci qui la descrizione dell'immagine


10
Non riesco a trovare "Riferimenti recuperati" nel mio progetto
david m lee

4
Cosa intendi con "aggiungilo di nuovo con riferimento appropriato" dopo aver rimosso i file rossi?
PrimeTimeTran

@PrimeTimeTran Volevo dire che puoi aggiungere di nuovo quei riferimenti a file nel tuo progetto, trascinandoli e incollandoli. Proprio come aggiungere un nuovo file nel progetto.
Krishna Thakur

3
@davidmlee Penso che ciò che questo ragazzo intende in altre parole sia: "apri tutte le tue cartelle nel progetto, elimina le cose rosse e aggiungile di nuovo". Non è necessaria una cartella dei riferimenti ripristinati.
bearacuda13

17

Questo ha funzionato per me in Xcode 10:

  • Fare clic sull'icona / nome del progetto nel progetto Xcode
  • Vai alla scheda Generale
  • Fare clic su [Scegli file info.plist] nella sezione Identità
  • Seleziona il file info.Plist
  • Controlla la scheda Informazioni per vedere se info.plist è stato caricato correttamente
  • Costruisci ed esegui

15

Stranamente, anche chiudere Xcode e riaprirlo potrebbe essere sufficiente.


Ho anche cancellato i dati derivati, ma la semplice chiusura / riapertura potrebbe essere stata sufficiente.
Adam Johns,

Ho pensato che questo fosse un modo di Visual Studio per risolvere le cose ... ma ha funzionato per me.
SEG.Veenstra

14

La soluzione di cui sopra alla fine funziona per me; tuttavia, ho bisogno di eseguire alcuni passaggi aggiuntivi per riuscire finalmente a compilare correttamente. (Questi passaggi aggiuntivi erano richiesti anche su Xcode 9.)

  1. Xcode: File -> Impostazioni area di lavoro -> Build System: Legacy Build System
  2. Xcode: Product -> Clean
  3. Ruota per compilare diversi tipi di emulatore, come "iPhone 8", "iPhone 8 Plus", ecc. (Potrebbero fallire o meno).
  4. Alla fine compila su "Dispositivo iOS generico"

Anch'io avevo bisogno di eseguire alcuni di questi passaggi per farlo funzionare.
Liwen Zhao

13

Basta controllare il percorso del file .plist nelle impostazioni di compilazione della destinazione

inserisci qui la descrizione dell'immagine


Sì, avevo spostato il plist in una cartella separata. Penso che le cartelle fossero virtuali e ora sono reali (la vecchia cartella blu / gialla). Ad ogni modo la tua risposta è stata perfetta :-)
Peter

10

Ho risolto il problema in questo modo: vai alle fasi di costruzione del tuo progetto (fai clic sull'icona del progetto in alto, quindi fai clic su Fasi di costruzione). Cerca lì il tuo file. Se è presente (sarà disattivato), eliminalo. Quindi pulisci (maiusc + alt + comando + k) ed esegui! Spero che sia d'aiuto.


9

Se l'errore dice che non riesce a trovare Info.plist e sta cercando nel percorso sbagliato , procedi come segue:

  1. Seleziona il tuo progetto dal navigatore, quindi seleziona il tuo target
  2. Seleziona "Impostazioni build" e cerca "plist"
  3. Dovrebbe esserci un'opzione chiamata File Info.plist. Modificare la posizione in quella corretta.

Questa risposta è applicabile anche se rinomini la cartella / struttura dell'app. Grazie @keverly
Lorem

5

Nessuno dei precedenti ha funzionato per me, ma questo ha funzionato:

  1. Apri il progetto nel Finder, fai clic con il pulsante destro del mouse sul file .xcodeproj e mostra il contenuto del pacchetto
  2. Apri project.pbxproj in un editor di testo
  3. Trova il riferimento al tuo file mancante
  4. Modifica path = "path/to/file.swift"nella posizione effettiva sul disco e salva il file.
  5. Ricostruisci il progetto

QUESTO è quello che lo risolve ... incredibile
David Seek

Anch'io. Come diavolo hai fatto a capirlo?
Peter Schorn

2

apri il pannello di navigazione a destra in cui esistono i tuoi file di progetto OPPURE JSUT fai clic su cmd + 1 Quindi cerca la cartella "Riferimenti recuperati", aprila tutti i file rossi (cancellali), quindi tutto funzionerà perfettamente.


2

Ho fatto questo per costruire i miei test unitari. Ciò potrebbe essere accaduto perché ho eliminato i test di esempio.

Ho rimosso il pacchetto di test unitario, quindi l'ho aggiunto di nuovo come mostrato nelle immagini sottostanti e tutto è andato di nuovo bene.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


2

Mi sono imbattuto in questo errore dopo aver rinominato un file. In qualche modo Xcode non ha rinominato correttamente il file effettivo sul disco.

Quindi non è stato possibile trovare il file. A volte i file vengono evidenziati con un colore del testo rosso. Altre volte l'icona Swift davanti al file aveva una sovrapposizione grigia.

La soluzione è stata semplice.

  • Esamina l'errore e vedi esattamente quale file non è in grado di trovare.
  • Seleziona il file che non può essere trovato.
  • Vai a "File Inspector". È nel riquadro di navigazione destro di Xcode.
  • Fare clic sull'icona della cartella.
  • Seleziona il file corretto.
  • Pulisci build ed eseguilo di nuovo.

1

Ho riscontrato un problema simile dopo l'aggiornamento a una nuova versione rapida di recente. Spostare i file ha causato il mio progetto xcode a fare riferimento a elementi che non erano più nella directory del progetto, dandomi il file di input build codice errore non trovato.

Nella mia situazione avevo in qualche modo più file / immagini a cui veniva fatto riferimento come descritto di seguito:inserisci qui la descrizione dell'immagine

Nell'immagine sopra.

  • Vai alla tua pagina Target.
  • Quindi fare clic sulla scheda Build Phases in alto.
  • Scorri verso il basso per copiare le risorse del pacchetto
  • Trova i file interessati e rimuovili. (premi Elimina su di essi o selezionali e premi il pulsante meno)

È stato qui che in qualche modo avevo più file e immagini a cui si faceva riferimento da altre cartelle e la build non funzionava perché non potevano più trovarli. E non sono riuscito a trovarli neanche io! o come Xcode li stesse ancora facendo riferimento

Spero che questo aiuti qualcun'altro !


1

Ho avuto lo stesso problema. Il problema era che non avevo alcun file in Target> Build Phases> Compile Sources. Il problema è stato risolto dopo aver aggiunto almeno un file a Compile Sources.


1

Non che abbia fatto qualcosa di sbagliato, ma mi sono imbattuto in questo problema per un motivo completamente diverso e so cosa lo ha causato.

In precedenza ho utilizzato Finder e ho trascinato un file nella directory / cartella del mio progetto. Non ho trascinato in Xcode . Per fare in modo che Xcode includesse quel file nel progetto, ho dovuto trascinarlo di nuovo in Xcode in seguito.

Ma quando sono passato a un nuovo ramo che non aveva quel file (né necessario), Xcode mi dava questo errore:

Impossibile trovare il file di input della build: "/ Users / honey / Documents / xp / xpios / powerup / Models Extensions / CGSize + Extension.swift"


Ho pulito la cartella di build ed eliminato i miei dati derivati, ma non ha funzionato fino a quando non ho riavviato il mio Xcode.


1

Questo ha funzionato per me

  1. prova a eliminare i file colorati in rosso
  2. eliminare i file nei dati derivati
  3. pulire la cartella build
  4. quindi provare a creare utilizzando "nuovo sistema di compilazione" da file-> impostazioni dell'area di lavoro

1

Nel mio caso, il file (e la directory) menzionato da XCode non era corretto e il problema ha iniziato a verificarsi dopo un'unione di Git con un ramo relativamente grande. Per risolvere lo stesso, ho eseguito i seguenti passaggi:

  • Ricerca del file nel sistema di directory di XCode.
  • Trovato il file con errori evidenziato in rosso (cioè, mancava).
  • Fare clic con il tasto destro sul file e rimuovere il file.
  • Ho provato di nuovo a costruire il mio codice e voilà, ha avuto successo.

Spero che questi passaggi aiutino qualcuno.


0
  1. Vai a Xcode-> File -> Impostazioni progetto
  2. Cambia sistema di compilazione: - "Sistema di compilazione legacy".
  3. Pulisci, costruisci e premi Esegui.

0

Ciò di cui Xcode si lamentava era un file XIB che ho ottenuto funzionando andando su Progetto -> Fasi di costruzione -> Copia risorse bundle, rimuovendo lo XIB "problematico", pulendolo (CMD + Maiusc + K), costruendolo e aggiungendolo di nuovo.


0

C'è anche una possibilità che a volte quando sposti i tuoi file in una cartella diversa e soprattutto quando sposti info.plistin un'altra cartella, devi definire la posizione di quel file. Per risolvere questo problema, fai semplicemente clic sull'icona blu del tuo progetto in alto e vedrai un pulsante al posto del nome del progetto e dell'ID bundle, fai clic su di esso e individua il info.plistfile lì, pulisci e compila felicemente.


0

Ho riscontrato questo problema subito dopo l'aggiornamento a Xcode 10, ma non era quello il problema.

Ho provato a cambiare il sistema di compilazione, ma questo mi ha dato un errore separato che significava la stessa cosa. Generalmente dicendo "File X non può essere trovato".

Ci sono più cose da controllare quando non è possibile trovare un file.

  1. Cartella dei riferimenti recuperati Apple fa questa cosa carina in cui se rileva un riferimento a un file che non esiste, aggiungerà questo riferimento in un gruppo chiamato "Riferimenti recuperati"

È carino da parte di Apple, ma non sempre funziona.

  1. Fasi di compilazione Fonti di compilazione In questo elenco, potrebbero esserci metadati per un file che il progetto dovrebbe compilare, ma il file non esiste effettivamente e sta tentando di trovare il file nel percorso specificato. In questo elenco sarà disattivato, eliminarli e aggiungerli di nuovo attivando le dipendenze di destinazione del file o rimuovendolo manualmente e trascinandolo.

  2. Percorso del file Controlla due volte il percorso del file che l'errore sta stampando e il percorso del file nel Finder. Puoi vederlo facilmente facendo clic sul file in Xcode e selezionando la scheda "Mostra l'ispettore file" (la scheda più a sinistra). Se questi percorsi sono corretti, allora sei bravo!

  3. File oscurati nel tuo progetto che non sono in riferimenti recuperati o rossi Questo mi ha fatto incazzare perché non è ovvio cosa è successo, ma fondamentalmente se vai nel Finder e sposti un file in una posizione diversa senza aggiornare il riferimento nel progetto genererà l'errore poiché il file non esiste più lì. L'unica indicazione che ho trovato è che il file nella scheda "Navigatore progetto" (la scheda più a sinistra) è leggermente oscurato, ma quando vai a eliminare questo file Xcode non ti chiede di eliminare il riferimento o di inviarlo a spazzatura. Puoi risolvere questo problema eliminando il file e aggiungendolo di nuovo al progetto o andando alla scheda "File Inspector" e fai clic sull'icona della cartella accanto al percorso e modificalo nella posizione corretta.

In ogni caso, l'errore indica che non è possibile trovare un file, il passaggio al vecchio sistema di build è un cerotto per un problema più concreto. Come sviluppatori, sappiamo che un compilatore vuole solo che un artefatto sia elencato alla fine di un percorso di file. Da qualche parte il percorso non è corretto! Dobbiamo trovare dove si trova!

Il mio problema è stato risolto con l'elemento 4 sopra elencato. Spero che questo aiuti qualcuno.


0

File> Impostazioni progetto> Cambia sistemi di build in sistemi di build legacy


3
Sarebbe utile una piccola spiegazione
vik_78

0

Nel mio caso ho cancellato accidentalmente una cartella xcodeproj di terze parti che ho usato nella mia app.


0

Se hai provato la creazione di profili e poi non ha funzionato, e ora non puoi creare, vai nel riquadro Target (tramite l'icona del progetto), passa alla scheda Impostazioni build, cerca PROFILE e imposta CLANG_USE_OPTIMIZATION_PROFILE su "No".


0

Nel mio caso, avevo creato un nuovo target di test e cancellato il file swift predefinito in modo che fosse rimasto solo con l'estensione info.plist. L'aggiunta di un nuovo file ha risolto questo problema.


0

Nel mio caso avevo uno script di compilazione che generava il file binario .app (Buck). Lo script di build Buck è stato eseguito in parallelo con il passaggio di build Swift Embed. Poiché il file binario .app non è stato ancora generato, il passaggio Swift fallirà.

Nel mio script di build ho aggiunto "$BUILD_PRODUCTS_DIR/$EXECUTABLE_PATH"sotto "Output Files".

Questo dice al New Build System di Xcode che questo script produrrà l'app Binary e, a sua volta, Xcode si assicurerà di sincronizzare tutti i passaggi di build che dipendono da questo artefatto.

inserisci qui la descrizione dell'immagine

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.