Xcode 4 + iOS 4.3: "Für den Archivtyp ist kein Packager vorhanden."

76

Ich habe gerade ein Upgrade auf Xcode 4 durchgeführt und versuche, einen Ad-hoc-Build eines früheren Projekts zu erstellen. Immer wenn ich die Option "Archiv" verwende, wird im Organizer-Fenster entweder überhaupt kein Archiv angezeigt, oder es gibt ein Archiv, aber es gibt keine Option, es als .ipa zu verpacken, da für den Archivtyp kein Packager vorhanden ist ".

Hat jemand Ad-hoc-Builds erhalten, die unter Xcode 4 für Projekte funktionieren, die von Xcode 3.2 migriert wurden?

Elver Loho
quelle
ähnliche Frage, aber auch keine Antwort :-( stackoverflow.com/q/5265292/509535
Manni
Versuchen Sie es mit einem sauberen Build und überprüfen Sie zuerst die Dateiberechtigungen im Mac Disk Utility
Sergnsk
Weiß jemand, wie man einen solchen Packager erstellt und hinzufügt?
Rob Agar
Ich hatte keine Probleme, ein Projekt zu verschieben. Ich habe ein Backup des alten Projekts. Ich werde dies überprüfen und Sie wissen lassen. Bearbeiten: Mein altes Projekt wurde als OS-X-Projekt gelesen. Ich musste die Projektdatei bearbeiten und das Build-Ziel ändern. Dies hat mein Problem behoben. Ich bezweifle, dass dies das Problem in Ihrem Fall ist.
Steve McFarlin
Bearbeiten Sie Ihr Schema. Was haben Sie als Build-Konfiguration für die Archivierungsaktion? (Projekt -> Schema bearbeiten -> Archiv)
Steve McFarlin

Antworten:

134

Möglicherweise befinden sich in Ihrem Hauptprojekt einige verknüpfte Projekte (z. B. Bibliotheken). Gehen Sie zu den Build-Einstellungen dieser Projekte und setzen Sie die Einstellung "Installation überspringen" (Bereitstellungskategorie) auf "Ja", belassen Sie jedoch die "Installation überspringen" des Hauptprojekts auf "Nein". Erstellen, archivieren und Sie sollten in der Lage sein, das ipa-Paket auszuwählen.

Lionel Vergé
quelle
In meinem Fall hatte ich auch einen Header eingefügt, der vom Teilprojekt in meinen Quellcode kopiert wurde. Und dann hat es funktioniert.
Mike Bevz
5
+1 Ich kann mir nicht vorstellen, wie viele Stunden ich verloren hätte, wenn Sie diese Antwort nicht gepostet hätten.
Cduhn
+1 hat mich gerettet, danke! Es ist wichtig, dass die Benutzer verstehen, dass dies in der statischen Bibliothek selbst und nicht in Ihrem App-Ziel erfolgen muss. Das hat mich ein bisschen erwischt.
jj0b
4
OK, nur um die Zeit anderer Leute zu sparen, die diesen Beitrag durchforsten. Laut Josh Brown (in einer der Antworten unten) funktioniert das Ändern von "Installation überspringen" nur, wenn Sie ein anderes ganzes Projekt in Ihrem Hauptprojekt haben (dh nicht nur .a-Dateien). Ein zusätzlicher Schritt, den Sie in diesem zusätzlichen Projekt ausführen müssen, ist ... "Gehen Sie in diesem Projekt zu den Erstellungsphasen und verschieben Sie im Abschnitt Kopfzeilen kopieren alle Kopfzeilen aus den Abschnitten Öffentlich und Privat in den Abschnitt Projekt." - In der ursprünglichen Antwort erwähnte er auch das Durchsuchen des Inhalts der .xcarchive-Datei, um zu sehen, was verschoben werden muss
Hlung
DANKE DANKE DANKE!
TheDuncs
25

Vielen Dank, aber ich brauchte 3 Schritte, um das Problem mit meinem Projekt-Framework vollständig zu lösen:

  1. Setzen Sie die Eigenschaft Target Build Settings / "Skip Installation" für jedes Abhängigkeitsprojekt auf "YES"

  2. Deaktivieren Sie für jedes Projekt die Eigenschaft "Installationsverzeichnis" der Zielerstellungseinstellungen

  3. Verschieben Sie für jedes Projekt alle Header aus dem Abschnitt "Phasen erstellen / Einstellungen erstellen / Header kopieren" Öffentlich / Privat in das Projekt

PixelEdn
quelle
3
Schritt 3 hat es für mich getan! Vielen Dank!
Erik
Ich wünschte, ich könnte dich zehnmal positiv bewerten. # 3 hat sich für mich um das Problem gekümmert.
mmc
Großartig, das hilft mir, nachdem ich zwei Schritte hinzugefügt habe: XCode bereinigen und erneut öffnen. Vielen Dank!
Dmitry Shashlov
Schließen Sie sich dem Dank an und sagen Sie den Leuten, dass sie das Installationsverzeichnis des Top-Projekts nicht ändern sollen (sollte $ (LOCAL_APPS_DIR) sein) - Das Archiv wird überhaupt nicht angezeigt
Oded Ben Dov
1
Vielen Dank. Diese privat / öffentlich zu projizierende Sache hat für mich funktioniert.
Sedat Kilinc
9

Ich fand heraus, dass eine Kombination dieser Antworten das Problem löste. Ich habe viel Zeit damit verbracht zu überprüfen, ob Skip Install für alle verknüpften Projekte auf Ja gesetzt war, und es stellte sich heraus, dass dies nur ein Teil des Problems für mich war. Wenn dieses Problem mit Archive auftritt, gehen Sie wie folgt vor:

  1. Suchen Sie das Archiv im Organizer, klicken Sie mit der rechten Maustaste und wählen Sie Im Finder anzeigen.
  2. Klicken Sie im Finder mit der rechten Maustaste auf die .xcarchive-Datei und wählen Sie Paketinhalt anzeigen.
  3. Suchen Sie den Ordner "Produkte" und sehen Sie, was darin enthalten ist. Der Ordner "Produkte" sollte nur einen Anwendungsordner enthalten, und der Ordner "Anwendungen" sollte nur eine iPhone-App (YourProject.app) enthalten.

Wenn Sie in Schritt 3 eine statische Bibliothek (<Einige-Bibliothek> .a) entweder direkt unter Produkte oder in einem Unterordner finden, gehen Sie zu Xcode und wählen Sie das Projekt aus, das die statische Bibliothek erstellt hat (Sie sollten in der Lage sein, festzustellen, welches Projekt es basiert auf dem Namen der statischen Bibliothek). Gehen Sie zu den Build-Einstellungen und wählen Sie das Ziel aus. Setzen Sie dann "Installation überspringen" auf "Ja".

Wenn Sie in Schritt 3 Header-Dateien (<Einiger-Header> .h) entweder direkt unter Produkte oder in einem Unterordner finden, gehen Sie zu Xcode und wählen Sie das Projekt aus, das diese Header enthält. Sie sollten in der Lage sein, das Projekt anhand des Präfixes zu finden, das in den Header-Dateinamen verwendet wird. Wechseln Sie in diesem Projekt zu den Erstellungsphasen, und verschieben Sie im Abschnitt Kopfzeilen kopieren alle Kopfzeilen aus den Abschnitten Öffentlich und Privat in den Abschnitt Projekt.

Vielen Dank an diese Antwort und diese Antwort und diese Antwort, die mir geholfen haben, dieses Problem zu lösen.

Josh Brown
quelle
1
"Gehen Sie in diesem Projekt zu den Erstellungsphasen und verschieben Sie im Abschnitt" Kopfzeilen kopieren "alle Kopfzeilen aus den Abschnitten" Öffentlich "und" Privat "in den Abschnitt" Projekt "." <- das funktioniert! Vielen Dank!
Hlung
5

Hier sind zwei weitere Tipps, die wir bei diesem Problem als nützlich empfunden haben ... keine Antworten, aber sie sparen möglicherweise jemand anderem viel Zeit beim Herumspielen um 8 /.

Wenn Sie statische Bibliotheken verwenden, die NICHT von xcode4 erstellt werden, funktioniert die Problemumgehung "Bereitstellung-> Installation überspringen" für sie nicht. Die Problemumgehung besteht darin, sie NICHT zum Projekt hinzuzufügen und sicherzustellen, dass sich ihre Pfade in den Header- und / oder Bibliothekssuchpfaden in Ihren Build-Einstellungen befinden und die -lblah-Einträge zu den Linker-Flags hinzugefügt werden.

Wenn Sie eine statische Bibliothek als Zielabhängigkeit festgelegt haben (z. B. hatten wir libjson.a wie folgt festgelegt und ich bin mir ziemlich sicher, dass dies die richtige / logische Vorgehensweise ist), können Sie einfach keine .ipa-Bibliothek erstellen egal was. Wir haben mehr als einen ganzen Tag damit verbracht, mit diesem dummen Problem herumzutanzen, und am Ende hat es das Problem gelöst, indem wir es einfach entfernt haben. Persönlich denke ich, dass dies wirklich ein kaputtes Projekt hinterlassen sollte ... aber es funktioniert so meh.

RoBman
quelle
Danke, das hat auch bei mir funktioniert. "Installation überspringen" hatte keine Auswirkung, und schließlich war das Entfernen der Projekt- / Zielabhängigkeit der Bibliothek vom Ziel meines Projekts die Lösung (und stattdessen fügte ich einfach die ".a" -Datei zu den verknüpften Bibliotheken des Projekts hinzu und verknüpfte sie weiterhin mit den Header-Dateien )
André Morujão
3

Um herauszufinden, welches Projekt / welche Bibliothek / welche Komponente Xcode daran hindert, ein ordnungsgemäßes Archiv zu erstellen, gehen Sie folgendermaßen vor:

Suchen Sie das Archiv im Organizer, klicken Sie mit der rechten Maustaste und zeigen Sie es im Finder an. Dies zeigt eine .xcarchive-Datei. Klicken Sie mit der rechten Maustaste und zeigen Sie den Paketinhalt an. Schauen Sie nun in den Ordner Produkte. Höchstwahrscheinlich gibt es mehr als nur einen Anwendungsordner mit einer iPhone-Anwendung.

In meinem Fall gab es eine Ordnerstruktur usr / local / lib, die libOAuthConsumer_iPhone.a enthielt, und als ich in Xcode danach suchte, fand ich tatsächlich ein anderes Projekt, bei dem ich Skip Install nicht auf YES gesetzt habe. Es ist vielleicht nicht für alle so einfach, aber wenn Sie in das Paket schauen, sollten Sie zumindest einen Hinweis darauf erhalten, welche Komponente den Archivierungsprozess durcheinander bringt.

Jens Willy Johannsen
quelle
1

Die Installation überspringen hat bei mir nicht funktioniert. Ich habe dieses Problem gelöst und alle als öffentlich gekennzeichneten Header in das Projekt verschoben. Ich arbeite derzeit in einem Arbeitsbereich mit einer statischen Bibliothek und einem iPad-Projekt. Es scheint, als ob es einen Fehler oder etwas mit xcode gibt, wenn Sie Ihr Produkt mit einem verknüpften Projekt erstellen möchten. Xcode erstellt beide und Organizer zeigt keine Option zum Teilen einer IPA an.

Diego Marafetti
quelle
1

Dies sind Schritte zur Lösung des obigen Problems in xcode 4.2

1: "Zur Installation überspringen" für alle hinzugefügten Bibliotheken des dritten Teils auf JA. "Zur Installation überspringen" für Ihr Projekt auf NEIN. Sie können über die Build-Einstellungen auf "Zur Installation überspringen" zugreifen.

2: Wählen Sie die Bibliotheksüberschriften Ihrer Drittanbieter im linken Navigatorbereich aus.

2.1: Auf der rechten Seite befindet sich das Utililtes-Fenster. Zeigen Sie es mit Ansicht -> Dienstprogramme-> Dienstprogramme ein- / ausblenden (Befehl-Option-0) oder mit der dritten Schaltfläche in der Ansichts-Segmentsteuerung in der Symbolleiste an und verbergen Sie es

2.2: Dateiinspektor auswählen (Befehlsoption-1)

2.3 Wählen Sie Zielmitgliedschaft und ändern Sie die Option von öffentlich oder privat in 'Projekt'

IKKA
quelle