Xcode 4: build non riuscita, nessun problema


90

L'app funziona bene nel simulatore, si costruisce e funziona.

Quando collego il mio dispositivo (iPhone 3GS con iOS 4.3) e scelgo come destinazione l'iPhone, il risultato è "Creazione non riuscita" con "Nessun problema".

Guardando la finestra dei risultati della build, tutto è verde, ha un segno di spunta, inclusa la notifica di build non riuscita .

L'espansione delle trascrizioni non mostra errori.

Non posso escludere la possibilità di un errore di firma o provisioning, ma mi ha dato quegli errori, li ho risolti e ora non mi dà errori o problemi, solo "Build non riuscita; Nessun problema"

  • In che modo la build può fallire senza problemi?
  • C'è un modo in cui posso guardare l'output della build per vedere se riesco a trovare il motivo per cui non funziona senza problemi?
  • Esiste un output di build prodotto oltre l'elenco dei problemi?
  • Non vedo nella finestra di build dove tenta di caricare l'app sul mio dispositivo: questo output è altrove?

Mi sta succedendo proprio adesso! Così frustrante!
tallen11

1
Penso che stackoverflow.com/a/28064945/1709587 mostrerà solitamente una sorta di messaggio di errore; è molto più utile delle varie ipotesi incluse nelle altre risposte e dovrebbe essere il punto di partenza per chiunque cerchi di eseguire il debug di questa situazione. Lo accettereste per portarlo in cima alla pagina?
Mark Amery

Risposte:


76

Ho ricevuto "Build Failed" senza errori nel navigatore Problemi (solo avvisi). Il navigatore dei rapporti, tuttavia, visualizzava correttamente gli errori.


4
Fantastico, questo ha mostrato i miei errori. Ora posso smettere di sprecare il mio tempo e risolvere effettivamente l'errore :)
Daniel Ryan

Mi ha salvato la giornata !! Grazie
DZenBot

Ho dovuto ripulire DerivedData + disabilitare BitCode (per ogni evenienza).
DevAndArtist

33

Stai utilizzando "trattino basso" e "spazio", ecc. Per l'identificatore del pacchetto?

Stai usando .m invece di .h in una delle tue importazioni? #import "Photo.h"


1
No, non sto usando lo spazio o il trattino basso nel mio ID bundle.
Adam Davis

2
Grazie! Per me, era un trattino basso nell'identificatore del bundle.
cocoapriest

Grazie! Il mio identificatore bundle era vuoto per qualche motivo.
tallen11

2
Grazie. Dopo aver rimosso il carattere di sottolineatura, il mio progetto è stato compilato perfettamente. Sento una strana combinazione di rabbia accecante, sollievo e gratitudine. COME POSSO ESSERE TALE SCIOCCO DA USARE UN UNDERSCORE NEL NOME DEL PROGETTO?!?
Tina D.

1
WOW! Anch'io ho avuto questo problema. Un sottolineato. Cambiato in dash e le cose vanno bene. Questa è assolutamente ASSURDA APPLE! Amo iOS. Disprezzo il processo complicato che Apple utilizza per portare la tua app su un dispositivo da testare. Comunque, grazie per questa correzione!
DA.

21

La prima cosa che proverei è pulire tutto (menu Prodotto / Pulisci) e ricostruirlo. Potresti averlo già provato.

Troverai (e potrai guardare durante la compilazione) l'output completo della build nel Log Navigator. Questa è l'icona più a destra delle piccole icone appena sotto i pulsanti Esegui e Costruisci.

I file di registro di build (e debug) si trovano nella directory / Users / you / Library / Developer / XCode / DerviedData / YourProject-abcdefg / Logs / Build (e ../Debug rispettivamente).

Non credo ci sia alcun output per l'installazione della tua app sul dispositivo.


Sì, la pulizia non aiuta. Ho utilizzato e esaminato l'output di compilazione sul navigatore di log e il relativo registro di sessione. I file di log che indichi sembrano essere binari, quindi sembra che l'unico accesso che ho a loro sia tramite il navigatore di log e il log di sessione.
Adam Davis

Per quanto riguarda il Log Navigator, nel mio caso avevo un log che era nel futuro (dato che ho cambiato la data sul computer con 1 giorno di anticipo per eseguire alcuni test). Sembra che xcode utilizzi l'ultimo registro (per data di build). Per risolvere questo problema (in xcode 5), ho eliminato la data derivata per il progetto e riavviato xcode, quindi i registri futuri scompaiono e Issue Navigator ha iniziato a mostrare gli avvisi e gli errori corretti.
alex-i

19

C'è uno spazio nel nome del prodotto del target?

So che nelle versioni precedenti di Xcode questo non era un problema, ma sembra che abbiano rotto qualcosa in Xcode 4 quindi non funziona più (sospetto che abbia qualcosa a che fare con l'assurdità del percorso DerivedData). Puoi aggiungere uno spazio al nome della tua app come appare sul Launchpad del tuo iDevice impostando la CFBundleDisplayNamechiave in Info.plistqualcosa di diverso da ${PRODUCT_NAME}.


No, il nome dell'app è composto da una sola parola, senza caratteri speciali, spazi o altro.
Adam Davis

Che ha fatto per me. Amico, Apple trova nuovi modi per rendere più difficile per gli sviluppatori passare alla loro piattaforma. Errore strabiliante. !!
CF_Maintainer

Inoltre, non è possibile inserire un trattino basso nel nome del prodotto
messaggio dal

13

In una delle mailing list locali di Cocoa Heads sono stato incoraggiato a provare un piccolo progetto di esempio predefinito, qualcosa che avrei dovuto fare all'inizio per assicurarmi che il mio provisioning e la mia firma funzionassero. È stato creato e eseguito sul mio dispositivo senza problemi, quindi tutti i segnali indicano un problema con il mio codice o il progetto.

Inserirò le cose dal progetto esistente nel nuovo progetto di esempio, e se fallisce in un modo simile dovrei essere in grado di restringere il problema a un'area di interesse più piccola.


Ho aggiunto la funzionalità principale dell'app in un nuovo progetto e funziona bene. L'unica cosa che ho fatto diversamente questa volta è stata che non ho impostato un binario universale (solo iPhone al momento) e ho disattivato tutto tranne l'orientamento verticale. Per quanto posso dire, tutto il resto è lo stesso, anche se se decido di esaminarlo ulteriormente in seguito, diffonderò i file di progetto e vedrò cos'altro potrebbe essere diverso.

Quindi la soluzione per me era iniziare un nuovo progetto portando tutte le funzionalità dal vecchio progetto al nuovo progetto.

Potrebbe essere che ricreare l'obiettivo, come suggerisce Paul in un'altra risposta, lo risolva anche, ma con un progetto così semplice riavviare da zero è stato facile per me.


Anch'io ho avuto questo problema. Avevo creato un nuovo progetto Xcode4 prima di impostare il mio certificato / profilo di provisioning e si sarebbe verificato un errore senza problemi. Una volta che sono stati impostati e ho riavviato Xcode, sono stato in grado di avviare un nuovo progetto ed eseguirlo senza problemi. (Non molto di aiuto con un progetto esistente, lo so.)
zekel

@zekel interessante! Ho anche avviato il progetto sul simulatore, prima di eseguire il processo di ottenimento dei certificati e del provisioning. Immagino che le persone che non hanno lasciato scadere la loro fornitura durante l'aggiornamento non avrebbero avuto questo problema allora ...
Adam Davis

7

Ho avuto lo stesso problema e, come ha suggerito qualcun altro, aveva a che fare con l'identificatore del pacchetto. L'avevo cambiato di recente, come prova, e vi avevo inserito un asterisco. L'ho risolto e ho dovuto pulire l'obiettivo, e poi ha funzionato.


Anch'io avevo un asterisco e rimuoverlo ha risolto il mio problema. Grazie per averlo detto.
SteveB

Anche l'utilizzo dell'identificatore jolly (ad es. Com.developername. *) È stata la causa del problema anche per me. Ripristinando il nome com.developername predefinito. $ {PRODUCT_NAME: rfc1034identifier} ha risolto il problema. Attualmente sto eseguendo Xcode 4.0.2
GnarlyDog

7

Questo è successo a me dopo aver eliminato un target inutilizzato. Sembra che Xcode abbia inserito uno spazio nel CFBundleIdentifier del mio target rimanente (com.company.etc). Ho dovuto modificare Info.plist con un editor di testo esterno per rimuoverlo e poi ha funzionato bene.


questo è successo anche a me. sotto obiettivi, riepilogo, identificatore, mi sono sbarazzato di uno spazio all'inizio. Mela Sheesh. Quanti trucchi puoi creare?
fregas

Bundle Identifier era il mio problema. Questo è nel file Info.plist.
Bentford

7

Stavo solo giocando con l'aggiunta di più progetti all'interno di un'area di lavoro e ho riscontrato questo problema. Ho una semplice libreria in uno dei progetti e stavo costruendo e ho aggiunto un target basato su finestre iOS per testarlo. Ho cancellato il primo target che ho creato per questo per rinominarlo. Dopo aver letto questo ho provato a rimuovere xcuserdata dall'interno del pacchetto .xcodeproj e questo ha risolto il mio problema. Spero che questo aiuti qualcun'altro. Esecuzione di Xcode 4.1 su OS X 10.7.1.


7

Dopo aver esaminato tutte queste risposte, ho avuto lo stesso identico problema, ma qualcosa di diverso lo ha risolto per me.

Il problema:

Creazione non riuscita senza problemi dopo il refactoring. (Rinomina una classe usando Modifica -> Refactoring -> Rinomina).

La soluzione più stupida di sempre:

Effettua il refactoring (rinomina) qualcos'altro (-_- "). Dopo averlo fatto, l'errore era che Xcode non era riuscito a rinominare tutti i file appropriati e non mostrava errori. Quindi, dopo un altro refactoring, sono comparsi gli errori del refactor precedente .


questo è tutto ! ho rinominato manualmente una proprietà e questo ha causato il problema. grazie
Laszlo

6

Ho avuto lo stesso problema. Stavo cercando di risolverlo, un xcode si è bloccato. L'ho riaperto e ha funzionato benissimo. Forse sono stato fortunato o qualcosa del genere? Comunque, non mi interessa davvero cosa c'era che non andava fintanto che ora funziona


6

Se hai cambiato l'identificatore del bundle e hai ripulito il progetto, ma non ha funzionato, prova a svuotare la directory / Users / YOUR_USERNAME / Library / Developer / Xcode / DerivedData.

Per me funziona.


6

Per me, la compilazione non è riuscita senza visualizzare alcun errore nel Navigatore problemi. Tuttavia, nel Log Navigator, in quella sessione di build, ho potuto vedere l'errore. Nel mio caso, l'errore era una costante non dichiarata. Ho importato il file di intestazione richiesto e il problema è stato risolto. Non sono sicuro del motivo per cui questo errore non è stato visualizzato nel Navigatore problemi.

Ho provato a riprodurre questo comportamento cambiando deliberatamente il nome di un'altra variabile. Questa volta, l'errore è stato visualizzato in Issue Navigator. Quindi, non sono ancora sicuro del motivo per cui l'errore precedente non sarebbe stato visualizzato nel Navigatore problemi.

Spero che questo ti aiuti.


6

Le soluzioni di cui sopra non funzionano per me.

La mia soluzione è spostare il progetto in un'altra cartella.

Gli errori di compilazione vengono quindi visualizzati come normalmente.


4

Hai pulito la tua cartella build? Vai al menu Prodotto, tieni premuto il tasto Opzione e seleziona "Pulisci cartella build ..."


Questo non ha cambiato i risultati.
Adam Davis

Non sono state apportate modifiche
Jayprakash Dubey

4

So qual è il problema: In Info.plist -> Bundle Identifier: non puoi usare '_'. Ad esempio, com.mycompany.My_app non è valido, ma com.mycompany.My-app è OK.


3

Ho avuto esattamente lo stesso problema durante il tentativo di compilare un progetto esistente in xcode 4, e ho quasi subito il dolore di ricreare il progetto.

Tuttavia, in un ultimo disperato tentativo ho sostituito il file info.plist con uno appena creato che includeva i tag aggiuntivi per "tipi di documento", "tipi di URL", "UTI di tipo esportato" e "UTI di tipo importato"

Sembrava funzionare ed è stata una soluzione sorprendentemente semplice per il mio progetto.


3

Questo è successo a me con il mio obiettivo UnitTest. Stava funzionando e poi si è fermato. Mi ero dimenticato di aver appena cancellato un .h / .m dal file system e di non averlo rimosso dal file di progetto, tuttavia XCode non lo ha segnalato.

L'ho capito eseguendo il progetto sulla riga di comando, che mi ha detto l'errore:

/usr/bin/xcodebuild -target "UnitTest"

Eseguilo nella cartella in cui hai il tuo file di progetto e sostituisci UnitTest con il tuo target, o semplicemente non passare un target per costruire il target predefinito.


3

Anch'io ho avuto questo problema, ma la causa era un'altra:

Ho uno spazio di lavoro con un progetto al suo interno. In questo progetto utilizzo un framework che è incluso aggiungendo il suo progetto Xcode al mio progetto. Ho importato il file di intestazione del framework nella mia intestazione del prefisso (.pch). Questo è stato stupido.

La soluzione era rimuovere #import del file di intestazione del framework dal mio file di intestazione del prefisso e aggiungerlo solo dove necessario.


3

Stesso problema qui durante la creazione per il dispositivo. La compilazione non è riuscita, ma il mio registro è tutto segni di spunta verdi. La pulizia / eliminazione della cartella di build non lo risolve. Ho letto altrove che qualcuno ha risolto questo problema eliminando e ricreando il target, ma non ho ancora capito come farlo in XCode 4.


La mia soluzione temporanea è stata scaricare e installare XCode 3.2.6 con iOS 4.3. Non mi ero accorto che Apple avesse rilasciato anche una versione di XCode 3 che include iOS 4.3, permettendoti di posticipare l'aggiornamento a XCode 4. Ho presentato una segnalazione di bug ad Apple riguardo al problema di Build Failed.


aggiornamento da Apple:

Quando creiamo questo progetto, anche se su una versione successiva a Xcode 4.0, vediamo quanto segue nel passaggio ProcessProductPackaging nel registro di compilazione:

(null): errore: CFBundleIdentifier "com.yourcompany.Magic_Carpet" contiene carattere non valido "_" identificatore bundle non valido "com.yourcompany.Magic_Carpet"

Il codice ProcessProductPackaging è stato revisionato abbastanza di recente, quindi sospettiamo che non stesse emettendo errori correttamente in Xcode 4.0. Dai un'occhiata alla trascrizione della tua build e, in tal caso, probabilmente verrà risolto in una versione futura di Xcode (non possiamo commentare ulteriormente fino a quando non verrà rilasciata una correzione).

Sono passato da un trattino basso a un trattino e il problema è stato risolto.


2

La stessa cosa è appena successa a me per una causa diversa.

Ho rimosso get-task-allow dal mio file Entitlements.plist, lasciando un plist vuoto. Le impostazioni di build avevano ancora il file Entitlements.plist specificato come file Entitlements. Ho scelto di eseguire utilizzando le mie impostazioni di build Ad-Hoc sul dispositivo iOS con il mio iPhone collegato e ho visto il comportamento descritto in questo bug. L'aggiunta di get-task-allow indietro lo ha risolto.


2

sembra che ci siano molte possibili cause di questo problema. Il mio si è rivelato essere quello

Il mio obiettivo era impostato per utilizzare un profilo di provisioning inesistente.

Ho impostato il mio progetto per utilizzare un nuovo profilo e ho eliminato quello vecchio. Non si rendeva conto che la destinazione aveva una propria impostazione del profilo di provisioning, che era ancora impostata sul vecchio profilo (ora eliminato).


2

Solo per aggiungere un'altra risposta dopo aver provato TUTTO quanto sopra senza successo: ho dovuto riavviare il MacBook, non solo chiudere XCode, e ha funzionato per me. Si è concluso con XCode che mostrava alcuni errori nelle Localizable.strings che non mostrava prima.

spero che aiuti


Ho qualcosa di simile, Xcode 5.0.2: si è verificato un errore di sintassi in una delle mie Localizable.strings che Xcode non ha mostrato durante la creazione.
Bart van Kuik

2

Cancella tutti gli spazi negli schemi di progetto in xcschemes e questo risolve il problema. Fottuta Apple :( AppCode ROCKS!


1

vedere: http://developer.apple.com/library/ios/#DOCUMENTATION/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html

Il set di caratteri UTI Un identificatore di tipo uniforme è una stringa Unicode che di solito contiene caratteri nel set di caratteri ASCII. Tuttavia, è consentito solo un sottoinsieme di caratteri ASCII. È possibile utilizzare l'alfabeto romano in maiuscolo e minuscolo (A – Z, a – z), le cifre da 0 a 9, il punto (".") E il trattino ("-"). Questa restrizione si basa sulle restrizioni del nome DNS, stabilite nella RFC 1035.

Gli identificatori di tipo uniforme possono anche contenere qualsiasi carattere Unicode maggiore di U + 007F.

Importante: qualsiasi carattere non valido che appare in una stringa UTI, ad esempio trattino basso ("_"), due punti (":") o spazio (""), farà sì che la stringa venga rifiutata come UTI non valido. A livello API, non viene generato alcun errore per UTI non valide.


1

Non ho avuto problemi con il nome del pacchetto, quindi le soluzioni suggerite non hanno funzionato per me. Alla fine ho impostato Non scrivere il codice per la build, quindi ho chiuso il progetto, quindi rimosso il provisioning nell'organizer, quindi scaricato il nuovo provisioning e aggiungerlo all'organizer, quindi impostarli per la build. Ha funzionato.


1

Questa non è una risposta tecnica, ma una risposta di "errore dell'utente" che probabilmente non si applica alla tua situazione. È successo a me e la mia ricerca mi ha portato a questa domanda e risposta senza alcun risultato, finché non ho realizzato il mio errore. Avevo un filtro impostato nel Navigatore problemi che non corrispondeva a nulla che veniva segnalato come problema. Quando ho cancellato il filtro, sono stati visualizzati i problemi.

Si noti che i sintomi erano gli stessi che mi stavi chiedendo e non ho idea di quando ho impostato quel filtro (deve essere ereditato dalle altre viste di navigazione) poiché non avrei avuto bisogno di alcun filtro nell'elenco ristretto.


1

Ho appena avuto un problema simile. Impossibile trovare un errore da nessuna parte. Ho eliminato tutti i miei profili di provisioning e ne ho aggiunti di nuovi.

Quindi ho provato a creare un'altra app di test sul mio dispositivo e ho ricevuto questo messaggio di errore:

Errore di firma del codice: l'identità del certificato "iPhone Developer: xxxxxx" appare più di una volta nel portachiavi. Lo strumento di firma del codice richiede che ce ne sia solo uno.

Quindi sono entrato in Portachiavi, ho trovato un paio di certificati scaduti con lo stesso nome e li ho cancellati, e questo ha funzionato.

Abbastanza casuale, ma forse se provi a creare un'altra app sul dispositivo come ho fatto io, potresti essere abbastanza fortunato da ricevere un messaggio di errore, come ho fatto io, per aiutare a diagnosticare il problema.


1

Vai a Organizer in xcode. E nella scheda Progetto, elimina quel progetto. Lascia che xcode ricostruisca nuovamente i dati derivati ​​risolva il mio problema.


1

Ho affrontato un problema simile in XCode4.5 e mentre lavoravo alla mia applicazione XCode si è improvvisamente arrestato in modo anomalo.

Dopo aver cercato per ore, ho scoperto che uno dei miei file nella mia applicazione è stato eliminato quando xcode si è bloccato.

Ho ripristinato il file dal Cestino e il problema è stato risolto.


1

Stavo programmando un'applicazione per Mac OS X senza codeigning . Quando ho abilitato il sandboxing nella sezione "Entitlement", la firma del codice si è attivata automaticamente e non sono riuscito a creare una nuova build.

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.