2013-06-01 10 views
7

Ich habe iOS-Apps seit> 2 Jahren gebaut und dieses Problem nie aufgetreten. Ich versuche eine App für die Beta-Distribution zu archivieren. Der Build ist erfolgreich, aber am Ende des Prozesses meldet Xcode "Archiv abgebrochen".Archiv in Xcode 4.5 - Keine Fehler, aber Build abgebrochen

enter image description here

Die Build-Protokolle zeigen keine Warnungen oder Fehler jeglicher Art.

enter image description here

Manchmal durch die Reinigung/Reinigungsbuildordner/abgeleiteten Daten Abwischen, kann ich das Archiv bekommen, um erfolgreich zu sein, aber es scheint es kein Muster zu sein. Ist jemand auf dieses Problem gestoßen? Ich habe in diesem Fall gar nichts zu tun, was eine Fehlermeldung angeht.

+1

Niemals gesehen oder gehört. Sie tun das Richtige, indem Sie das Projekt säubern usw. Versuchen Sie, Ihren xcode neu zu installieren, da es möglicherweise ein Problem mit dem xcode gibt. Ich weiß, es ist ein Schmerz, dies zu tun, aber es könnte das Problem ein für allemal loswerden. Aber das ist der letzte Ausweg. –

+0

Hast du das jemals funktioniert? Ich habe genau das gleiche Problem. Verwendet Ihr Projekt Cocoapoden? Ich frage mich, ob das mein Problem ist. Es gibt keinen anderen Anhaltspunkt, was falsch ist :( – ConfusedNoob

+0

Ich dachte über Xcode neu zu installieren. Ich denke, ich werde es versuchen müssen. Ich CocoaPods tun, aber ich habe CocoaPods an mehreren Projekten in der Vergangenheit mit absolut keine Probleme verwendet . –

Antwort

31

Haben Sie ein benutzerdefiniertes Run Script, das die Version mit agvtool stößt? Ich fand, dass dies genau dieses Verhalten verursacht. Fast 100% Fehler beim Archivieren und häufiger Fehler beim Erstellen. Durch das Entfernen wurde das Problem für mich behoben.

+2

Wow, das war es. ich war mein Build # mit einem benutzerdefinierten Skript ausführen Bumping AVGTool verwenden. Super Fang! der Mörder war, dass es keine Rückmeldung in den Protokollen ist es, Ihnen zu sagen, was die Build wird aufgehoben wird. Danke für die Antwort! –

+0

aaaaahhhhhhhhhhh dieses kostet mich Stunden. nach Automatisierung baut und ipa-Pakete und alle fancy stuff, die avgtool das Skript tötete. THX !!! –

12

Zuerst: +1 auf ConfusedNoobs Antwort, denn das war das Problem (was mich zu zahlreichen Experimenten und schließlich zu dieser Lösung führte.) Wenn meine Antwort Ihnen hilft, +1 auch, weil sein Hinweis riesig war!

(Auch meine andere Antwort sehen, unten, dass umgeht agvtool ganz. Ich schließlich siedelten-in zu verwenden, dass in allen meinen Projekten.)

Ich habe ein bisschen mit ihm wurde durcheinander und das einzige, was Ich habe herausgefunden, dass es zuverlässig funktioniert, es zu lösen, indem man agvtool als eine Voraktion in dem/den geeigneten Schema (n) verwendet, und nicht als ein Laufskript in den Aufbauphasen.

  • CMD-SHIFT-Komma Schemata bearbeiten (XCode 6.x)
  • Twiddle-open je nachdem, welche Regelung Sie dies wollen. Ich habe es auf Run und Archive gemacht, aber ich brauche es wahrscheinlich nur auf Archiv.
  • Wählen Sie das Symbol "+" und "New run script action"
  • Fügen Sie Ihr Agvtool-Skript hinzu. Wenn Sie sich interessieren, ist mein:

    cd ${PROJECT_DIR} ; xcrun agvtool next-version -all 
    

(HINWEIS: Pre-Aktionen laufen nicht natürlich in ${PROJECT_DIR}, so dass Sie cd haben.)

Schließen & speichern und das ist es .

Das Problem ist, dass agvtool die Projektdatei ändert (unnötig, da alle Build-Nummern, die uns interessieren, woanders sind), und das Ändern der Projektdatei bewirkt, dass der Build abbricht.

+1 auf die Frage auch - Cripes, das war ein harter!

+0

„cd $ {project_dir}“ gut! – Luke

+2

ich nichts dagegen, aber wenn hinzugefügt als Pre-Action-Skript in 'Archive' Schema, es scheint mit der aktuellen Version" archiviert "und erhöht dann (dasselbe Ergebnis als Post-Aktion) in Xcode 7. –

+1

Auch ich bemerkte, ich hatte t o Machen Sie es als Post-Aktion, um die Abbruchwarnung zu verhindern, wenn Tests ausgeführt werden, und wählen Sie 'Build-Einstellungen bereitstellen von 'und mein Framework aus. – Gujamin

1

Eine andere Technik besteht darin, agvtool insgesamt zu überspringen. Fügen Sie dieses Laufzeitskript am Ende Ihrer Erstellungsphasen (nach dem Kopieren von Bundle-Ressourcen) hinzu.

)
  • Wählen Sie ein Projekt

Select your project

  • Select Phasen bauen und +

Select build phases and +

  • Hinzufügen eine neue Run Script Phase

Add new run-script phase

  • Geben Sie das Skript

Enter the script

Das Skript für einfaches Kopieren/Einfügen:

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE") 
buildNumber=$(($buildNumber + 1)) 
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE" 

Stellen Sie sicher, Ihr Skript nach die Kopie Bündel Phasen Ihres Build läuft

1

Für mich ist die carthage update BUILD-Phase das Problem verursacht wurde.

Überprüfen Sie auch, wenn Sie andere Build-Phasen mit Skripten, die Dateien oder Code ändern.

Verwandte Themen