Xcode 4: Build fehlgeschlagen, keine Probleme

90

Die App funktioniert gut im Simulator, erstellt und läuft.

Wenn ich mein Gerät anschließe (iPhone 3GS mit iOS 4.3) und auf das iPhone ziele, lautet das Ergebnis "Build fehlgeschlagen" mit "Keine Probleme".

Wenn Sie das Fenster mit den Build-Ergebnissen betrachten, ist alles grün und mit einem Häkchen versehen, einschließlich der Meldung "Build fehlgeschlagen" .

Das Erweitern der Transkripte zeigt keine Fehler.

Ich kann die Möglichkeit eines Signatur- oder Bereitstellungsfehlers nicht ausschließen, aber es hat mir diese Fehler gegeben, ich habe sie ausgebügelt, und jetzt gibt es mir keine Fehler oder Probleme, nur "Build fehlgeschlagen; keine Probleme".

  • Auf welche Weise kann der Build ohne Probleme fehlschlagen?
  • Gibt es eine Möglichkeit, die Build-Ausgabe zu überwachen, um festzustellen, ob der Grund für einen Fehler ohne Probleme gefunden wurde?
  • Wird eine Build-Ausgabe erstellt, die über die Problemliste hinausgeht?
  • Ich sehe im Build-Fenster nicht, wo versucht wird, die App auf mein Gerät zu laden - ist diese Ausgabe woanders?
Adam Davis
quelle
Das passiert mir gerade! So frustrierend!
Tallen11
1
Ich denke, stackoverflow.com/a/28064945/1709587 zeigt normalerweise eine Art Fehlermeldung an. Es ist weitaus nützlicher als die unterschiedlichen Vermutungen in den anderen Antworten und sollte der Ausgangspunkt für jeden sein, der versucht, diese Situation zu debuggen. Würden Sie es akzeptieren, um es an den Anfang der Seite zu bringen?
Mark Amery

Antworten:

76

Ich habe "Build Failed" ohne Fehler im Issue-Navigator erhalten (nur Warnungen). Der Berichtsnavigator zeigte Fehler jedoch korrekt an.

Mercurial
quelle
4
Großartig, das zeigte meine Fehler. Jetzt kann ich aufhören, meine Zeit zu verschwenden und den Fehler tatsächlich beheben :)
Daniel Ryan
Hat meinen Tag gerettet !! Vielen Dank
DZenBot
Ich musste DerivedData bereinigen + BitCode deaktivieren (nur für den Fall).
DevAndArtist
33

Verwenden Sie "Unterstrich" und "Leerzeichen" usw. für die Bundle-ID?

Verwenden Sie bei einem Ihrer Importe .m anstelle von .h? #import "Photo.h"

user674180
quelle
1
Nein, ich verwende weder Leerzeichen noch Unterstriche in meiner Bundle-ID.
Adam Davis
2
Vielen Dank! Für mich war es in Bundle Identifier unterstrichen.
Cocoapriest
Vielen Dank! Mein Bundle-IDetifier war aus irgendeinem Grund leer.
Tallen11
2
Danke dir. Nachdem ich den Unterstrich entfernt hatte, wurde mein Projekt einwandfrei kompiliert. Ich fühle eine seltsame Kombination aus blendender Wut, Erleichterung und Dankbarkeit. WIE KÖNNTE ICH EIN SOLCHER FOLG SEIN, UM EINEN UNTERSTREICH IM PROJEKTNAMEN ZU VERWENDEN?!?
Tina D.
1
BEEINDRUCKEND! Ich hatte auch dieses Problem. Ein unterstrichener. Geändert zu Dash und die Dinge sind in Ordnung. Das ist absolut ABSURD APPLE! Ich liebe iOS. Ich verachte den komplizierten Prozess, mit dem Apple Ihre App auf ein Gerät zum Testen bringt. Wie auch immer, danke für dieses Update!
DA.
21

Das erste, was ich versuchen würde, ist, alles zu reinigen (Menü Produkt / Reinigen) und es erneut zu erstellen. Sie haben es vielleicht schon versucht.

Sie finden die vollständige Build-Ausgabe im Log Navigator (und können sie während des Builds beobachten). Dies ist das Symbol ganz rechts unter den kleinen Symbolen direkt unter den Schaltflächen Ausführen und Erstellen.

Die Build- (und Debug-) Protokolldateien befinden sich im Verzeichnis / Users / you / Library / Developer / XCode / DerviedData / YourProject-abcdefg / Logs / Build (bzw. ../Debug).

Ich glaube nicht, dass es eine Ausgabe für die Installation Ihrer App auf dem Gerät gibt.

Codo
quelle
Ja, Putzen hilft nicht. Ich habe die Build-Ausgabe im Protokollnavigator und das zugehörige Sitzungsprotokoll verwendet und durchgesehen. Die Protokolldateien, auf die Sie verweisen, scheinen binär zu sein, sodass ich anscheinend nur über den Protokollnavigator und das Sitzungsprotokoll darauf zugreifen kann.
Adam Davis
In Bezug auf den Protokollnavigator hatte ich in meinem Fall ein Protokoll, das in der Zukunft lag (da ich das Datum auf dem Computer für die Ausführung einiger Tests auf 1 Tag im Voraus geändert habe). Es scheint, dass xcode das neueste Protokoll verwendet (nach Erstellungsdatum). Um dies zu beheben (in xcode 5), habe ich das abgeleitete Datum für das Projekt gelöscht und xcode neu gestartet, sodass die zukünftigen Protokolle verschwinden und der Issue Navigator die richtigen Warnungen und Fehler anzeigt.
Alex-I
19

Gibt es ein Leerzeichen im Produktnamen Ihres Ziels?

Ich weiß, dass dies in früheren Versionen von Xcode kein Problem war, aber es scheint, dass sie etwas in Xcode 4 kaputt gemacht haben, sodass es nicht mehr funktioniert (ich vermute, es hat etwas mit dem DerivedData-Pfad-Unsinn zu tun). Sie können dem Namen Ihrer App ein Leerzeichen hinzufügen, wie es auf dem Launchpad Ihres iDevice angezeigt wird, indem Sie den CFBundleDisplayNameSchlüssel in Info.plistauf etwas anderes als setzen ${PRODUCT_NAME}.

Damian
quelle
Nein, der App-Name besteht nur aus einem Wort, keinen Sonderzeichen, Leerzeichen oder etwas anderem.
Adam Davis
Das hat es für mich getan. Mann, Apple findet neue Wege, um es Entwicklern zu erschweren, auf ihre Plattform zu wechseln. Wahnsinnsfehler. !!
CF_Maintainer
Sie können auch keinen Unterstrich im Produktnamen haben
afrederick
13

Auf einer der lokalen Cocoa Heads-Mailinglisten wurde ich aufgefordert, ein kleines Standard-Beispielprojekt zu versuchen - etwas, das ich am Anfang hätte tun sollen, um sicherzustellen, dass meine Bereitstellung und Signierung funktionierten. Es wurde ohne Probleme auf meinem Gerät erstellt und ausgeführt, sodass alle Anzeichen auf ein Problem mit meinem Code oder dem Projekt hinweisen.

Ich werde Dinge aus dem vorhandenen Projekt in das neue Beispielprojekt werfen, und wenn es auf ähnliche Weise fehlschlägt, sollte ich in der Lage sein, das Problem auf einen kleineren interessierenden Bereich einzugrenzen.


Ich habe die Hauptfunktionalität der App in ein neues Projekt aufgenommen und sie läuft einwandfrei. Das einzige, was ich diesmal anders gemacht habe, war, dass ich keine universelle Binärdatei eingerichtet habe (iPhone derzeit nur) und alle außer der Hochformatausrichtung deaktiviert habe. Soweit ich das beurteilen kann, ist alles andere gleich. Wenn ich mich jedoch dazu entscheide, es später weiter zu untersuchen, werde ich die Projektdateien unterscheiden und sehen, was sonst noch anders sein könnte.

Die Lösung für mich bestand also darin, ein neues Projekt zu starten und alle Funktionen des alten Projekts in das neue Projekt zu portieren.

Es könnte sein, dass das Neuerstellen des Ziels, wie Paul in einer anderen Antwort vorschlägt, es ebenfalls beheben würde, aber mit einem so einfachen Projekt war es für mich einfach, von Grund auf neu zu starten.

Adam Davis
quelle
Ich hatte auch dieses Problem. Ich hatte vor dem Einrichten meines Zertifikat- / Bereitstellungsprofils ein neues Xcode4-Projekt erstellt, das ohne Probleme fehlerhaft war. Nachdem sie eingerichtet und Xcode neu gestartet wurden, konnte ich ein neues Projekt starten und ohne Probleme ausführen. (Nicht viel Hilfe bei einem bestehenden Projekt, ich weiß.)
Zekel
@zekel Interessant! Ich habe das Projekt auch auf dem Simulator zum Laufen gebracht, bevor ich die Zertifikate und die Bereitstellung durchgeführt habe. Ich stelle mir vor, dass Leute, die ihre Bereitstellung während des Upgrades nicht ablaufen lassen, dieses Problem dann nicht haben würden ...
Adam Davis
7

Ich hatte das gleiche Problem und wie jemand anderes vorschlug, hatte es mit der Bundle-ID zu tun. Ich hatte es kürzlich als Test geändert und ein Sternchen eingefügt. Ich habe das behoben und musste das Ziel reinigen, und dann hat es funktioniert.

Cortis
quelle
Ich hatte auch ein Sternchen und das Entfernen löste mein Problem. Danke, dass du das erwähnt hast.
SteveB
Die Verwendung der Platzhalter-ID (dh com.developername. *) War auch für mich die Ursache des Problems. Das Zurücksetzen auf den Standardnamen com.developername. $ {PRODUCT_NAME: rfc1034identifier} hat das Problem behoben. Ich verwende derzeit Xcode 4.0.2
GnarlyDog
7

Dies geschah mir nach dem Löschen eines nicht verwendeten Ziels. Es scheint, dass Xcode ein Leerzeichen in den CFBundleIdentifier meines verbleibenden Ziels (com.company.etc) eingefügt hat. Ich musste Info.plist mit einem externen Texteditor bearbeiten, um es zu entfernen, und dann funktionierte es einwandfrei.

AbePralle
quelle
das ist mir auch passiert. Unter Ziele, Zusammenfassung, Kennung habe ich am Anfang ein Leerzeichen entfernt. Meine Güte Apfel. Wie viele Fallstricke können Sie erstellen?
Fregas
Bundle Identifier war mein Problem. Dies befindet sich in der Datei Info.plist.
Bentford
7

Ich habe nur mit dem Hinzufügen mehrerer Projekte in einem Arbeitsbereich gespielt und dieses Problem festgestellt. Ich habe eine einfache Bibliothek in einem der Projekte und ich habe ein iOS-Fenster-basiertes Ziel hinzugefügt, um es zu testen. Ich habe das erste Ziel gelöscht, das ich dafür gemacht habe, um es umzubenennen. Nachdem ich dies gelesen hatte, habe ich versucht , xcuserdata aus dem .xcodeproj-Paket zu entfernen, und das hat mein Problem behoben. Ich hoffe das hilft jemand anderem. Ausführen von Xcode 4.1 unter OS X 10.7.1.

Andrew
quelle
7

Nachdem ich all diese Antworten durchgesehen hatte, hatte ich genau das gleiche Problem, aber etwas anderes löste es für mich.

Das Problem:

Die Erstellung ist nach dem Refactoring ohne Probleme fehlgeschlagen. (Eine Klasse wurde mit Bearbeiten -> Refactor -> Umbenennen umbenannt.)

Die dümmste Lösung aller Zeiten:

Gehen Sie zu Refactor (benennen Sie um) etwas anderes (-_- "). Danach war der Fehler, dass Xcode nicht alle entsprechenden Dateien umbenennen konnte und keine Fehler zeigte. Nach einem anderen Refactor wurden die Fehler des vorherigen Refactors angezeigt .

Mazyod
quelle
das ist es ! Ich habe eine Eigenschaft manuell umbenannt und das hat das Problem verursacht. Vielen Dank
Laszlo
6

Ich hatte das gleiche Problem. Ich habe versucht, das Problem zu beheben. Ein xcode ist abgestürzt. Ich habe es wieder geöffnet und es hat gut funktioniert. Vielleicht hatte ich Glück oder so? Wie auch immer, es ist mir egal, was daran falsch war, solange es jetzt funktioniert

Porter
quelle
6

Wenn Sie die Bundle-ID geändert und das Projekt bereinigt haben, es aber auch nicht funktioniert hat, versuchen Sie, das Verzeichnis / Users / YOUR_USERNAME / Library / Developer / Xcode / DerivedData zu leeren.

Für mich geht das.

Kenial
quelle
6

Für mich ist der Build fehlgeschlagen, ohne dass Fehler im Issue Navigator angezeigt wurden. Im Protokollnavigator konnte ich in dieser Erstellungssitzung jedoch den Fehler sehen. In meinem Fall war der Fehler eine nicht deklarierte Konstante. Ich habe die erforderliche Header-Datei importiert und das Problem wurde behoben. Ich bin nicht sicher, warum dieser Fehler nicht im Issue Navigator angezeigt wurde.

Ich habe versucht, dieses Verhalten zu reproduzieren, indem ich den Namen einer anderen Variablen absichtlich geändert habe. Dieses Mal wurde der Fehler im Issue Navigator angezeigt. Daher bin ich mir immer noch nicht sicher, warum der frühere Fehler nicht im Issue Navigator angezeigt wird.

Hoffe das hilft.

Sreejit
quelle
6

Die oben genannten Lösungen funktionieren bei mir nicht.

Meine Lösung besteht darin, das Projekt in einen anderen Ordner zu verschieben.

Die Erstellungsfehler werden dann wie gewohnt angezeigt.

Alex
quelle
4

Haben Sie Ihren Build-Ordner bereinigt? Gehen Sie zum Menü Produkt, halten Sie die Wahltaste gedrückt und wählen Sie "Build-Ordner bereinigen ...".

Jon Reid
quelle
Dies hat die Ergebnisse nicht verändert.
Adam Davis
Ergebnis keine Änderungen
Jayprakash Dubey
4

Ich weiß, was das Problem ist: In Info.plist -> Bundle Identifier: Sie können '_' nicht verwenden. Beispielsweise ist com.mycompany.My_app nicht gültig, com.mycompany.My-app jedoch OK.

Rubycon
quelle
3

Ich hatte genau das gleiche Problem beim Versuch, ein vorhandenes Projekt in xcode 4 zu kompilieren, und hatte fast die Mühe, das Projekt neu zu erstellen.

Bei einem letzten Versuch habe ich jedoch die Datei info.plist durch eine neu erstellte Datei ersetzt, die die zusätzlichen Tags für "Dokumenttypen", "URL-Typen", "Exportierte Typ-UTIs" und "Importierte Typ-UTIs" enthielt.

Dies schien zu funktionieren und war eine überraschend einfache Lösung für mein Projekt.

user696455
quelle
3

Dies ist mir mit meinem UnitTest-Ziel passiert. Arbeitete und hörte dann auf. Ich hatte vergessen, dass ich gerade eine .h / .m im Dateisystem gelöscht und nicht aus der Projektdatei entfernt hatte, aber XCode hat sie nicht gemeldet.

Ich habe es herausgefunden, indem ich das Projekt in der Befehlszeile ausgeführt habe, was mir den Fehler gemeldet hat:

/usr/bin/xcodebuild -target "UnitTest"

Führen Sie dies in dem Ordner aus, in dem Sie Ihre Projektdatei haben, und ersetzen Sie UnitTest durch Ihr Ziel - oder übergeben Sie einfach kein Ziel, um das Standardziel zu erstellen.

Bandejapaisa
quelle
3

Ich hatte auch dieses Problem, aber die Ursache war eine andere:

Ich habe einen Arbeitsbereich mit einem Projekt. In diesem Projekt verwende ich ein Framework, das durch Hinzufügen des Xcode-Projekts zu meinem Projekt enthalten ist. Ich habe die Header-Datei des Frameworks in meinen Präfix-Header (.pch) importiert. Das war dumm.

Die Lösung bestand darin, den #import der Framework-Header-Datei aus meiner Präfix-Header-Datei zu entfernen und nur bei Bedarf hinzuzufügen.

CodeStage
quelle
3

Gleiches Problem hier beim Bauen für Gerät. Build fehlgeschlagen, aber mein Protokoll enthält nur grüne Häkchen. Das Bereinigen / Löschen des Build-Ordners behebt das Problem nicht. Ich habe an anderer Stelle gelesen, dass jemand dieses Problem durch Löschen und Neuerstellen des Ziels gelöst hat, aber ich habe in XCode 4 noch nicht vollständig herausgefunden, wie das geht.


Meine vorübergehende Lösung bestand darin, XCode 3.2.6 mit iOS 4.3 herunterzuladen und zu installieren. Ich habe nicht bemerkt, dass Apple auch eine Version von XCode 3 veröffentlicht hat, die iOS 4.3 enthält, sodass Sie das Upgrade auf XCode 4 verschieben können. Ich habe bei Apple einen Fehlerbericht über das Problem "Build Failed" eingereicht.


udpate von Apple:

Wenn wir dieses Projekt erstellen - wenn auch auf einer Post-Xcode 4.0-Version - sehen wir im Schritt ProcessProductPackaging im Erstellungsprotokoll Folgendes:

(null): Fehler: CFBundleIdentifier 'com.yourcompany.Magic_Carpet' enthält das unzulässige Zeichen '_' ungültige Bundle-ID 'com.yourcompany.Magic_Carpet'

Der ProcessProductPackaging-Code wurde vor kurzem überarbeitet, sodass wir den Verdacht haben, dass er in Xcode 4.0 nicht ordnungsgemäß fehlerfrei war. Schauen Sie sich das Transkript Ihres eigenen Builds an. Wenn ja, wird dies wahrscheinlich in einer zukünftigen Version von Xcode behoben (wir können keine weiteren Kommentare abgeben, bis ein Fix veröffentlicht wurde).

Ich habe von einem Unterstrich zu einem Bindestrich gewechselt und das Problem wurde behoben.

Paul Slocum
quelle
2

Das Gleiche ist mir gerade mit einer anderen Ursache passiert.

Ich habe get-task-allow aus meiner Datei Entitlements.plist entfernt und eine leere Liste hinterlassen. In den Build-Einstellungen wurde weiterhin die Datei Entitlements.plist als meine Entitlements-Datei angegeben. Ich habe mich für die Ausführung mit meinen Ad-Hoc-Build-Einstellungen auf einem iOS-Gerät mit angeschlossenem iPhone entschieden und das in diesem Fehler beschriebene Verhalten festgestellt. Das Hinzufügen von get-task-allow back hat das Problem behoben.

Colin
quelle
2

Es scheint, dass es viele mögliche Ursachen für dieses Problem gibt. Meins stellte sich als das heraus

Mein Ziel war es, ein nicht vorhandenes Bereitstellungsprofil zu verwenden.

Ich habe mein Projekt so eingestellt, dass es ein neues Profil verwendet, und das alte gelöscht. Es wurde nicht erkannt, dass das Ziel über eine eigene Einstellung für das Bereitstellungsprofil verfügt, die immer noch auf das alte (jetzt gelöschte) Profil festgelegt ist.

CharlieMezak
quelle
2

Nur um eine weitere Antwort hinzuzufügen, nachdem ich ALLE oben genannten erfolglos ausprobiert hatte: Ich musste das MacBook neu starten, nicht nur XCode schließen, und das funktionierte für mich. Am Ende zeigte XCode einige Fehler in den Localizable.strings an, die zuvor nicht angezeigt wurden.

hoffentlich hilft das

sonxurxo
quelle
Ich habe etwas Ähnliches bekommen, Xcode 5.0.2: In einem meiner Localizable.strings ist ein Syntaxfehler aufgetreten, den Xcode beim Erstellen nicht angezeigt hat.
Bart van Kuik
2

Ich lösche alle Leerzeichen in Projektschemata in xcschemes und dies behebt dieses Problem. F *** ing Apple :( AppCode ROCKS!

Bimawa
quelle
1

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

Der UTI-Zeichensatz Ein einheitlicher Typbezeichner ist eine Unicode-Zeichenfolge, die normalerweise Zeichen im ASCII-Zeichensatz enthält. Es ist jedoch nur eine Teilmenge der ASCII-Zeichen zulässig. Sie können das römische Alphabet in Groß- und Kleinbuchstaben (A - Z, a - z), die Ziffern 0 bis 9, den Punkt („.“) Und den Bindestrich („-“) verwenden. Diese Einschränkung basiert auf DNS-Namensbeschränkungen, die in RFC 1035 festgelegt sind.

Einheitliche Typkennungen können auch Unicode-Zeichen enthalten, die größer als U + 007F sind.

Wichtig: Jedes unzulässige Zeichen in einer UTI-Zeichenfolge, z. B. Unterstrich ("_"), Doppelpunkt (":") oder Leerzeichen (""), führt dazu, dass die Zeichenfolge als ungültige UTI abgelehnt wird. Auf der API-Ebene wird für ungültige UTIs kein Fehler generiert.

sfjava
quelle
1

Ich hatte kein Problem mit dem Namen des Bundles, daher funktionierten Lösungsvorschläge für mich nicht. Schließlich habe ich das Vorzeichen "Nicht codieren" für den Build festgelegt, dann das Projekt geschlossen, die Bereitstellung im Organizer entfernt, die neue Bereitstellung heruntergeladen und zum Organizer hinzugefügt und sie dann für den Build festgelegt. Es funktionierte.

Engeor
quelle
1

Dies ist keine technische Antwort, sondern eine "Benutzerfehler" -Antwort, die wahrscheinlich nicht auf Ihre Situation zutrifft. Es ist mir passiert und meine Suche hat mich vergeblich zu diesen Fragen und Antworten geführt - bis ich meinen Fehler bemerkte. Ich hatte im Issue Navigator einen Filter eingestellt, der mit nichts übereinstimmte, was als Problem gemeldet wurde. Als ich den Filter löschte, wurden die Probleme angezeigt.

Beachten Sie, dass die Symptome dieselben waren, nach denen Sie gefragt haben, und ich habe keine Ahnung, wann ich diesen Filter eingestellt habe (er muss von den anderen Navigationsansichten geerbt werden), da ich keine Filterung in der Auswahlliste benötigt hätte.

Mobibob
quelle
1

Ich hatte gerade ein ähnliches Problem. Es konnte nirgendwo ein Fehler gefunden werden. Alle meine Bereitstellungsprofile gelöscht und neue hinzugefügt.

Dann habe ich versucht, eine andere Test-App auf meinem Gerät zu erstellen, und ich habe folgende Fehlermeldung erhalten:

Code Sign-Fehler: Die Zertifikatidentität 'iPhone Developer: xxxxxx' wird mehrmals im Schlüsselbund angezeigt. Für das Codesign-Tool muss nur eines vorhanden sein.

Also ging ich in den Schlüsselbund, fand ein paar abgelaufene Zertifikate mit demselben Namen und löschte sie, und das war der Trick.

Ziemlich zufällig, aber wenn Sie versuchen, wie ich eine andere App auf dem Gerät zu erstellen, haben Sie möglicherweise das Glück, wie ich eine Fehlermeldung zu erhalten, um das Problem zu diagnostizieren.

Mestevie
quelle
1

Gehen Sie in xcode zu Organizer. Löschen Sie das Projekt auf der Registerkarte Projekt. Lassen Sie xcode die abgeleiteten Daten erneut erstellen, um mein Problem zu beheben.

AccBLue
quelle
1

Ich hatte ein ähnliches Problem in XCode4.5 und während der Arbeit an meiner Anwendung stürzte XCode plötzlich ab.

Nachdem ich stundenlang gesucht hatte, stellte ich fest, dass eine meiner Dateien in meiner Anwendung gelöscht wurde, als xcode abstürzte.

Ich habe die Datei aus dem Papierkorb wiederhergestellt und das Problem wurde behoben.

Niks
quelle
1

Ich habe eine Mac OS X-Anwendung ohne Codesignierung programmiert . Wenn ich Sandboxing im Abschnitt "Berechtigung" aktiviert habe, wurde die Codesignierung automatisch aktiviert und ich konnte keinen neuen Build erstellen.

Thomas Johannesmeyer
quelle