IOS-App-Archiv kann nicht in xcode generiert werden

175

Ich habe ein Problem beim Generieren eines iOS-App-Archivs aus einer Anwendung. Die Anwendung kompiliert einwandfrei und funktioniert sogar im Simulator. Jetzt wollte ich einige Ad-hoc-Tests durchführen und kann das iOS-App-Archiv nicht generieren. Wenn ich auf Produkt -> Archiv klicke, wird ein generisches Xcode-Archiv erstellt. Kann mir jemand helfen. Ich sollte erwähnen, dass ich bereits ein iOS App Archiv dieser Anwendung erstellt habe. Die Generierung des iOS-Archivs wurde aus irgendeinem Grund gestoppt. Vielen Dank.

Filip Majernik
quelle
7
Obwohl es um das Generieren von Archiven aus xcode geht, habe ich dieses Problem mit xcodebuild. Die Lösung besteht darin, das Ziel anzugeben:xcodebuild -destination generic/platform=iOS
db42
Danke @ db42, das hat es geschafft!
Fabb
1
Können Sie die Auflösung näher erläutern - wo nehmen Sie die Änderung vor?
Jlo-Google Mail
Wenn Sie unter Projekt> Ziele> Phasen erstellen> Zielabhängigkeiten .xcodeproj-Dateien haben, entfernen Sie diese von dort und erstellen Sie dann Ihr ipa. Für mich geht das. Prost
Kalpesh Panchasara

Antworten:

315

Überprüfen Sie die Build-Einstellungen:

  1. Die Installation überspringen ist NEIN für das Hauptprojektziel
  2. Die Installation überspringen ist JA für Framework-Ziele (Unterprojekte)
  3. In Build-Phasen für Unterprojekte müssen sich Kopierheader in Project und nicht in Public befinden (gilt nicht, wenn eine statische Bibliothek erstellt wird).
  4. Das Installationsverzeichnis unter Bereitstellung ist gültig (/ Anwendungen zum Beispiel).
Alex L.
quelle
2
Dies ist die vollständigste Antwort, die die obigen Teilantworten enthält. Danke Alex L! Ich denke, dies sollte die gewählte Antwort auf diese Frage sein.
Brandon
3
Wie haben Sie das als Meta-Frage herausgefunden? Scheint, als würde ich mich bei all meinen Fragen zum Build auf Stackoverflow verlassen.
Philipkd
4
Wunderschönen! Ich dachte, dies sei ein Problem bei der Bereitstellung von Profilen, aber das hat großartig funktioniert. Unterprojekt war der Mapbox-Zweig von route-me / MapView. Der Header "Kopieren" war der Schlüssel, wie im folgenden Beitrag angegeben. Er befindet sich in den Erstellungsphasen des Unterprojekts.
Carver
7
# 3 hat mein Problem behoben, aber ich musste auch Dateien von Privat nach Projekt verschieben, bevor mein Archiv als iOS App-Archiv erstellt wurde.
Thomas Hajcak
4
Technisch gesehen besteht das Problem nicht darin, dass die Header unter Header kopieren öffentlich sind, sondern dass der Ordnerpfad Build-Einstellungen> Öffentliche Header auf den Standardwert von festgelegt ist /usr/local/include. Wenn Sie eine statische Bibliothek erstellen, müssen die Header öffentlich sein. Daher ist es korrekter, wenn # 3 den Ordnerpfad für öffentliche Header in einen sinnvolleren Pfad ändern soll include/$(TARGET_NAME). @CopperCash vermerkt dies in einer Antwort unten.
Vieh
75

Dies kann passieren, wenn Sie ein Framework / eine Bibliothek hinzugefügt haben. Sie müssen die Ziel-> Build-Einstellungen dieser Bibliothek bearbeiten und die Einstellung "Installation überspringen" auf "Ja" setzen. Wenn Sie erneut archivieren, sollte XCode erneut ein "iOS App Archive" erstellen und kein "generisches Xcode-Archiv".

delany
quelle
aber "Skip Install" ist nicht in xcode 4.4.1 verfügbar, zumindest kann ich skip intall in meinem xcode nicht finden
Mashhadi
2
Gleiches gilt für hinzugefügte Bundles.
Mark Horgan
62

Zusätzlich zu Skip Install to Yes und falls Sie ein anderes lib / framwork-Projekt in Ihrem App-Projekt geöffnet haben, müssen Sie Header (falls vorhanden) in der Build Phase / Copy Headers von public in project verschieben .

Erstellungsphase Ihres lib / framwork-Ziels

ebtokyo
quelle
3
Ich wollte gerade die Hoffnung verlieren, da Skip Install to Yes für mich nicht funktionierte. Das Kopieren von Headern in Project hat den Trick für mich getan. Vielen Dank!
ksm
10
Um das fehlerhafte Xcode-Teilprojekt besser lokalisieren zu können, können Sie das generische Xcode-Archiv im Finder anzeigen und das Paket durchsuchen. Im .xcarchive sehen Sie die fehlerhaften Header in Products / usr / local / include.
MonsieurDart
1
Warum sollten ein paar Dateien zum Kopieren von Headern in die Öffentlichkeit dies vermasseln?
mskw
mskw, ich denke, wenn das erstellte Artefakt einen oder mehrere öffentliche Header enthält, kann es nicht zu einem "gerätebereitstellbaren" Archiv werden (iOS App Archive, aus dem Sie einen IPA generieren). Es bleibt ein Xcode-Projektarchiv. Danke
ebtokyo
1
Verdammt, danke, das hat für mich funktioniert. Ich frage mich, wie zum Teufel du es
schaffst
45

Ich habe Folgendes getan, damit es für mich funktioniert:

  1. Ich hatte eine statische Bibliothek mit drei20 , ich habe Cocoapods verwendet , um die Dateien in das Hauptprojekt aufzunehmen
  2. folgte der Sprunginstallation für alle anderen Unterprojekte / statischen Bibliotheken und wechselte die Kopierheader wie oben angegeben von öffentlich zu projekt
  3. Am wichtigsten ist: In jeder Bibliothek, die Ihr Projekt verwendet , werden Phasen erstellt -> Dateien kopieren und sichergestellt, dass das Ziel von Absolute pathnach geändert wird products directory. Hinweis: Lesen Sie den folgenden Hinweis, um Ihre Suche einzugrenzen und die Bibliothek zu finden, die diesen Fehler verursacht.

und das war es!

Hinweis: Um eine Vorstellung von den fehlerhaften Dateien zu erhalten, die dazu führen, dass Ihr Archiv eine Archivdatei anstelle einer IPA erstellt, gehen Sie folgendermaßen vor:

  1. Wählen Sie das Archiv aus und klicken Sie auf die Schaltfläche Verteilen.
  2. Wählen Sie die Option "Gebaute Produkte speichern".
  3. Klicken Sie auf Weiter und Speichern.
  4. Durchsuchen Sie das erstellte Verzeichnis im Finder.
  5. Das Unterverzeichnis 'Bibliotheken' identifiziert die Bibliotheken, die Sie benötigen, um die Installation überspringen auf Ja zu setzen.
  6. In einigen Fällen usr/local/includewerden die Header-Dateien des Täters identifiziert, die Sie vom öffentlichen zum Projekt verschieben müssen, oder die Dateien, die Sie vom absoluten Pfad zum Produktverzeichnis ändern müssen (oder sogar die Dateien, die Sie vergessen haben, das Flag "Überspringen installieren" auf "Ja" zu setzen). Dieses Verzeichnis (dh usr / local / include) hängt jedoch von der Struktur Ihres Unterbibliotheksverzeichnisses ab. In vielen Fällen werden alle hier aufgeführten Schritte unter "Dateien kopieren" in Schritt 3 aufgelistet. Wenn Sie sie hier finden, haben Sie eine eindeutige Antwort auf die Ursache Ihres Problems.

Update auf Hinweis: Um das Leben noch einfacher zu machen. Welche Dateien auch immer unter Schritt 4 im obigen Hinweis erscheinen . Suchen Sie einfach bei der globalen Suche nach xcode danach. Sie sollten sofort Ergebnisse für das erhalten, was Sie möchten. Zum Beispiel Dies war der Inhalt meines Ordners (gemäß den Schritten im obigen Hinweis):

Geben Sie hier die Bildbeschreibung ein

Also habe ich es hat sagen könnte , etwas zu tun mit dem Krypto und ssl Bibliotheken .. für sie die Suche:

Geben Sie hier die Bildbeschreibung ein

hat mir klar gemacht, dass ich vergessen habe, die überspringende Installation auf Ja zu setzen.

Abbood
quelle
Toller Hinweis! Ich hatte einige Framework-Header in "Privat" geändert. Aus irgendeinem Grund wurden sie dadurch kopiert ./usr/local/include.
Ben Mosher
1
Es ist immer eine Freude, @BenMosher helfen zu können :)
Abbood
1
Die beste Antwort, die ich bekommen habe. Danke für den Tipp, hat mir den Tag gerettet. !
neywen
Auf jeden Fall hat mich die Antwort, nach der ich gesucht habe - das Speichern von Build-Produkten - auf die genaue Ursache des Problems hingewiesen.
Dennis L
Diese ausführliche Antwort mit "Save Built Products" ist sehr hilfreich - @abbood, vielen Dank an Sie. Ich hoffe, ich kann eines Tages den Gefallen erwidern.
Scott Corscadden
21

Wenn Sie das Archiv exportieren, öffnen Sie es und sehen Sie /urs/local/includeunter Produkte, versuchen Sie diesen Vorschlag :

In jedem Pod unter Packaging, Private Headers Folder Pathund Public Headers Folder Pathist auf /usr/local/include. Wenn ich sie lösche, bekomme ich ein gültiges Archiv.

Geben Sie hier die Bildbeschreibung ein

Arbeitete für mich nach dem Upgrade meiner React Native-App auf 0.11.0Xcode 7und CocoaPods 0.39.0.beta.4.

Josh Habdas
quelle
1
Ich kann bestätigen, dass dies funktioniert! Solange Sie daran denken, sowohl private als auch öffentliche Headerpfade zu löschen. Es ist auch ziemlich einfach, wenn Sie nur alle Pods auswählen, nach dem Header-Pfad suchen und dann alle gleichzeitig löschen.
Dids
1
Ich kann auch bestätigen, dass dies funktioniert, mir viel Zeit gespart hat. Dies geschah, als ich meine Pods auf die Version 0.39.0.beta aktualisierte
Bryan P
Genial. Arbeitete für mich :) Ich hatte seit anderthalb Tagen Probleme. Danke, danke, danke :) :) :)
Srikanth
Ich denke, dies ist die, die für mich Xcode 7.0 iOS9 funktioniert hat. Ich habe keine Cocoapods, aber das hat das Problem trotzdem behoben. Danke Mann
Geoff H
Außerdem musste ich SKIP_INSTALL in meiner WatchKit-Erweiterung und -App auf Ja setzen, damit dies funktioniert.
Schneemann
12

Wenn Sie CocoaPods sowie WatchKit oder eine Today-Erweiterung verwenden, gibt es im CocoaPods-Repo ein offenes Problem , in dem Ihr Problem erläutert wird.

Die Lösung für mich bestand darin, die Copy Pod ResourcesPhase aus den Zielen WatchKit Extension und Today Extension unter zu entfernen Build Phases. Das Projekt wurde wie erwartet kompiliert und archiviert, sobald ich dies getan habe.

Hoffe das hilft jemandem, das hat mich einen ganzen Tag lang verblüfft!

rebello95
quelle
1
@ Lewis42 könnte immer ein Kopfgeld hinzufügen;)
rebello95
Ich sehe keine Option dazu, eine Abstimmung über deinen Kommentar muss reichen;)
Lewis
@ Lewis42 Sie müssten das Kopfgeld zur Frage hinzufügen und es einer Antwort
zuweisen
@ rebello95, du rocker Typ!
Matt
10

Wenn eine der oben genannten Antworten nicht funktioniert, liegt Ihr Problem wahrscheinlich bei cocoaPods. Das neueste Update hat die 0.38.1Dinge für mich durcheinander gebracht, aber dann habe ich ein Downgrade auf durchgeführt 0.37.1und die Dinge haben sich wieder normalisiert. Verwenden vonXcode 6.3.1

Später bearbeiten: Durch Aktualisieren auf 0.38.2wird dies ebenfalls behoben. Weitere Informationen zu diesem Problem finden Sie hier: Cocoapods 0.38.1 konnte kein gültiges Archiv erstellen

Ehmad Zubair
quelle
3
Ich habe auf aktualisiert 0.38.2und habe immer noch Probleme. Bist du auf Xcode 7?
Porter Hoskins
@PorterHoskins Ich habe dieses Problem gerade geschrieben, da Xcode 7 KEIN gültiges Archiv aus demselben Projekt erstellt, das ein gültiges Archiv in Xcode 6 erstellt . Ich verwende Cocoa Pods 0.38.2, wenn ich Xcode 6 verwende, ist alles in Ordnung, aber mit Xcode 7 wird das Archiv nicht korrekt erstellt. Haben Sie Ihre Ordnerstruktur überprüft, um festzustellen, ob sich im Paket eine .appex-Datei außerhalb Ihrer .app befindet?
Eisbär
Ich habe einen Rahmen bei /Library/Frameworks. Ich denke, es könnte etwas damit zu tun haben, dass Googles Kakaofrüchte nicht als dynamisches Framework erstellt werden. Es klingt ähnlich wie github.com/CocoaPods/CocoaPods/issues/3889
Porter Hoskins
3
Ich habe für alle Pod-Header in Build-Phasen / Header aus der Öffentlichkeit in den Projektabschnitt verschoben, und es hat funktioniert. Das Problem könnte also tatsächlich bei CocoaPods liegen.
Denis Kutlubaev
7

Obwohl ich Xcode5 verwende und es für mich sortiert habe, war das Bearbeiten des Build-Schemas - das Ausprobieren aller oben genannten Vorschläge, die zutreffend waren, hat in meinem Fall nicht geholfen.

Ich hatte zwei Ziele, sagen wir "App" und "App FREE". Meine Probleme mit dem generischen Archiv sind aufgetreten, als ich versucht habe, die KOSTENLOSE Version zu archivieren, die ich nach der "normalen" Version der App hinzugefügt habe. In meinem Fall, als ich das Schema in der Symbolleiste auswählte und Schema bearbeiten auswählte ... sah ich, dass der Abschnitt Erstellen zwei Ziele hatte, nämlich App und App FREE.

Ich habe alle Spalten für App deaktiviert, nur die Spalten von App FREE aktiviert gelassen und auf OK geklickt. Wenn ich das nächste Mal Produkt> Archiv gewählt habe, habe ich meine App KOSTENLOS anstelle eines generischen Archivs erhalten. :) :)

Stephen Watson
quelle
7

Wenn Sie nur ein einziges Projekt haben, ist diese Lösung möglicherweise hilfreich. Dieses Problem war aufgetreten, als ich das Ziel dupliziert habe. Als Ergebnis ließ ich zwei Ziele parallel bauen. Dies verursachte das Problem. Das generische IOS-Archiv wurde erstellt.

Um die gebaute Parallele auszuschalten, gehen Sie zu

  • Schemata verwalten,
  • Schema bearbeiten,
  • Bauen,
  • Entfernen Sie das andere Ziel.
roman777
quelle
5

Ich hatte dieses Problem nach dem Update auf iOS 9 und Xcode 7. Die Lösung von Josh H funktionierte für mich:

In jedem Pod wird unter Packaging, Private Headers Folder Path und Public Headers Folder Path auf / usr / local / include festgelegt. Wenn ich sie lösche, bekomme ich ein gültiges Archiv.

Ich habe auch ein Post-Installationsskript für mein Podfile erstellt, um dies automatisch zu tun!

    post_install do |installer_representation|
        installer_representation.pods_project.targets.each do |target|
            target.build_configurations.each do |config|
                config.build_settings['PUBLIC_HEADERS_FOLDER_PATH'] = [""];
                config.build_settings['PRIVATE_HEADERS_FOLDER_PATH'] = [""];
            end
        end
    end

Fügen Sie es einfach unten in Ihr Podfile ein und führen Sie es aus pod install

julianwyz
quelle
5

Ich habe mehrere Projekte in meinem Arbeitsbereich (GTL, Pods und mein Hauptprojekt) und dies hat für mich funktioniert:

Wählen Sie das Projekt aus, es gibt zwei Typen, das Projekt und die Ziele .

Für Projekte, die nicht Ihr Hauptziel sind GTLoder PODS:

Projekte:

Skip Install = NO
Installation Directory = /Applications
// For pods
Private Headers Folder Path = ""
Public Headers Folder Path = ""

Ziele:

Skip Install = YES
Installation Directory = /Applications
// For pods
Private Headers Folder Path = ""
Public Headers Folder Path = ""

Für das Hauptprojekt (das normalerweise den gleichen Namen wie Ihr Produktname hat):

Projekte:

Skip Install = NO
Installation Directory = /Applications

Ziele:

Skip Install = NO
Installation Directory = /Applications

Überprüfen Sie das ios-Bereitstellungsziel für jedes Projekt und jedes Ziel, um sicherzustellen, dass alle identisch sind.

Bryan P.
quelle
Vielen Dank für die schrittweise Erklärung. Das hat mir wirklich geholfen, mein Problem zu lösen.
Arslan
4

Ich hatte dieses Problem. In meinem Fall wurde dies dadurch verursacht, dass ein Mac-App-Ziel als Abhängigkeit von der iOS-App beibehalten wurde.

Der Grund dafür war, dass die Mac-App ein Tool war, mit dem einige Daten für die iOS-App generiert wurden, die dann im Bundle enthalten waren.

Ich musste diese Abhängigkeit entfernen und das Tool separat erstellen, bevor ich die iOS-App selbst erstellen konnte.

Tomas Andrle
quelle
Bibliotheken wie lippd enthalten sowohl ios- als auch osx-Ziele. Ich habe vergessen, das osx-Ziel zu entfernen ... doh
james_alvarez
4

In meinem Szenario erhielt ich das fehlerhafte "Generic Archive" erst, nachdem ich begonnen hatte, Swift-Code in mein überwiegend Objective-C-Projekt aufzunehmen. Nach vielen SwiftSupportFehlern bei der Fehlerbehebung und Überprüfung der Archivdatei, die Xcode ausspuckte, stellte ich fest, dass sich der Ordner (mit den erforderlichen Dylibs für die Swift-Laufzeit) an einer anderen Stelle in meinem Archiv befand als in einem brandneuen Vanilla-Projekt-App-Archiv von Vanilla .

Ich habe die Installation DirectoryBuild-Einstellung gefunden und festgestellt, dass sie in meinem Projekt auf einen benutzerdefinierten Pfad festgelegt wurde. Ich habe es einfach gelöscht (auf den generischen Wert von gesetzt /Applications) und beim nächsten Build -> Archive habe ich wie erwartet gearbeitet und mir ein richtiges iOS App Archive gegeben.

TL; DR:Installation Directory Stellen Sie sicher , dass Ihre Build-Einstellung auf den Standardwert eingestellt ist /Applications, wenn Sie Swift-Code in Ihre App aufnehmen, insbesondere wenn Sie mit einer älteren Projektdatei beginnen, die möglicherweise unerwartete Legacy-Build-Einstellungen enthält.

Ryan Dorshorst
quelle
3

Lassen Sie dies hier, um andere von derselben Reise zu retten.

Ich musste dieselbe Erstellungsphase für Copy Pod-Ressourcen auch von einem statischen Bibliotheksziel in meinem Arbeitsbereich entfernen.

Michael
quelle
Nachdem ich viele der oben genannten Dinge ausprobiert hatte, funktionierte dies für mich (Xcode 7)
Humphriesj
2

Ergänzung zu Alex Ls Antwort.

Punkt 3. Ändern Sie 'Build Settings' -> 'Public Header Folder Path' in 'include / xxx'.

CopperCash
quelle
Dies ist korrekter als die Nummer 3 oben. Ihre Header müssen öffentlich sein, wenn Sie eine statische Bibliothek
erstellen
2

Wenn Ihnen keiner der oben genannten Punkte geholfen hat ... nach langer Zeit .......

Ich habe den Wert in der Info.plist für die Bundle-Version gelöscht, weil ich mit Bundle Version Short 1.0 zufrieden war. Schlecht. Tu das nicht.

* Hinweis: Ich habe dies tatsächlich getan, indem ich es in der rechten Benutzeroberfläche bearbeitet habe, ohne zu bemerken, dass ein leerer Schlüssel in die Datei Info.plist eingefügt wird. Ich denke, das macht es ungültig. Mein Bundle wurde während der Archivierung als anderes Element angezeigt und hatte kein Symbol. Ich konnte es nirgendwo hochladen.

Dies führt zu ungültigen Werten in der Info.plist. Wenn es sich nicht um ein gültiges Archiv handelt, versuchen Sie, ein altes Archiv zu entpacken und das aktuelle Archiv zu löschen, und prüfen Sie, ob es beim Neuerstellen des Archivs behoben wird.

ohc192
quelle
1
  1. Gehen Sie zu Build Settings und fügen Sie hinzu

    yourAppName / Resources / dist.plist zu den Code Signing-Berechtigungen

  2. Drücken Sie cmd + B mit iOS - Gerät oder ein Echt Gerät ausgewählt als Build - Ziel

  3. Wenn Sie fertig sind -> scrollen Sie zum Ordner "Produkte" und klicken Sie mit der rechten Maustaste auf yourAppName.app

  4. Wählen Sie "Im Finder anzeigen"

  5. Erstellen Sie einen Ordner mit Name Payload ( Großbuchstabe "P" )

  6. Kopieren Sie IhrenAppName in Ihren Payload-Ordner

  7. Erstellen Sie eine Zip aus Ihrem Payload-Ordner

  8. Benennen Sie die Zip in yourAppName.ipa um

GETAN

LoVo
quelle
1

Nachdem ich so ziemlich alles ausprobiert habe:

  • Sauber, Archiv
  • DerivedData, Archive löschen
  • Starten Sie Xcode neu (ich habe XCode7 verwendet), Archiv
  • Kombinationen von oben ...

Ich bemerkte dann, dass meine Boot-Partition "wenig freien Speicherplatz" hatte ... ungefähr 1 GB oder so. Ich habe neu gestartet und dann ungefähr 18 GB frei bekommen.

Dann öffnete ich Xcode und das Projekt, führte das Archiv durch ... und überraschenderweise (nach einer Stunde des Versuchs, ein Archiv zu erstellen) bekam ich endlich ein nicht generisches Archiv.

Keine Ahnung, ob es sich um ein kostenloses Festplattenproblem handelt, das das Problem behoben hat, oder um einen Neustart des MacOS, mit dem es behoben wurde, aber es hat bei mir funktioniert.

Peter Li
quelle
0

In meinem Fall musste ich sowohl FMDB als auch BlocksKit in statische Bibliotheken verschieben. Zuvor wurden sie als Teilprojekte erstellt. Denken Sie daran, dass Sie mit lipo universelle Bibliotheken erstellen können. Beim Erstellen der Endprodukte wird der Simulatorcode automatisch entfernt.

Maciej Swic
quelle
0

Ein weiterer möglicher Grund dafür ist, dass in "Zielabhängigkeiten" Verweise auf Projekte für eine andere Plattform vorhanden sind. In meinem speziellen Fall arbeitete ich an einem Projekt, das Code für OSX und iOS gemeinsam nutzt. In einem der iOS-Ziele hatte ich versehentlich ein OSX-Ziel als Abhängigkeit hinzugefügt.

miguelSantirso
quelle
0

Um gründlich zu sein, veröffentliche ich meine Lösung.

Beim Versuch, ein Archiv eines iOS-Projekts in Xcode 5.1.1 (5B1008) zu erstellen, trat genau das gleiche Problem auf. Keiner der oben genannten Vorschläge behebt das Problem, und die meisten von ihnen waren irrelevant (ich hatte keine Frameworks hinzugefügt und hatte keine öffentlichen Einträge im Abschnitt "Header kopieren" meiner Build-Phasen).

In meinem Fall bestand die Behebung des Problems darin, einfach mein Projekt zu schließen, alle zuvor erstellten Archive zu löschen, zu Einstellungen> Konten zu wechseln, mein Entwicklerkonto zu entfernen, Xcode zu beenden, neu zu starten, mein Entwicklerkonto erneut hinzuzufügen und den Archivierungsprozess zu starten nochmal. Dies hat mein Problem sofort behoben.

Ade Ward
quelle
0

Noch eine Lösung, da all das bei mir nicht funktioniert hat ...

Änderte das User Header Search Paths(ich nehme an, es Header Search Pathswürde genauso elegant funktionieren) in "$(BUILT_PRODUCTS_DIR)/BlocksKit".

Hintergrund :

In BlockKit haben die Entwickler die Header im Hauptprojekt anders strukturiert als die Struktur bei der Bereitstellung. Sie können also nicht auf die Header im Projekt verweisen und müssen auf die in das Build-Verzeichnis kopierten Header verweisen.

Mazyod
quelle
0

So funktionierte dies für mich in (Xcode 5) Ich hatte 2 Ziele und als ich das Schema bearbeitete, sehen Sie im linken Bereich des Schema-Editors [BUILD, RUN, TEST, PROFILE XXX.APP, ANALYZE, ARCHIVE ] Im Bereich BUILD sehen Sie Ihre Projektziele in einer Liste. Ganz rechts sehen Sie die ARCHIV-Auswahl. Stellen Sie sicher, dass nur ein Ziel für die Archivierung ausgewählt ist.

Ich hatte 2 meiner Ziele in meinem Projekt ausgewählt, ich habe nur das Ziel überprüft, das ich im Produkt haben wollte, und es hat funktioniert!

Dexyjone
quelle
0

Ich habe diesen Fehler behoben, indem ich nur das App-Projekt in XCode geöffnet habe, d. H. Öffnen eines Arbeitsbereichs, der die Anwendung und andere Projekte / Bibliotheken / Frameworks umfasst.

Mit zwei separaten Projekten, einem Framework oder einer gemeinsam genutzten Bibliothek und einer iOS-Anwendung musste ich zwei verschiedene XCode-Fenster öffnen, die jeweils direkt die .xcodeproj- Datei anstelle des gemeinsamen .xcworkspace öffneten, um jedes einzeln zu erstellen.

Als netter Nebeneffekt erstellt XCode nicht mehr jedes Ziel jedes Projekts neu, nachdem ich eine Bereinigung durchgeführt habe , was zu kurzen Erstellungszeiten führt.

Hintergrund: Ich erstelle ein Open Source SDK und eine Demo-iOS-Anwendung. Ich hatte beide in einem einzigen Arbeitsbereich geöffnet. Wenn Sie die Installation "Überspringen" auf den SDK-Zielen auf " JA" setzen , kann niemand ein Archiv erstellen, da es leer ist. Dies war also keine Option. Die Verwendung von Project anstelle von öffentlichen Headern würde dazu führen, dass in einem Archiv die Header-Dateien fehlen, die verteilt werden sollen. Daher war dies auch keine Option.

ofavre
quelle
0

Denn es war, weil ich in einem Arbeitsbereich arbeitete. Das Projekt wurde archiviert, aber nicht im Organizer-Fenster angezeigt. Ich habe den Arbeitsbereich geschlossen und das Projekt selbst geöffnet. Das Archiv wurde im Organizer geöffnet ... hoffe es hilft.

Pierre-Yves Guillemet
quelle
0

In meinem Fall hatte ich ein benutzerdefiniertes Skript, das einige temporäre Dateien kopierte in:

${TARGET_BUILD_DIR}/myTempDir

Das bedeutete, dass ich, nachdem ich das Archiv untersucht hatte, um seinen Inhalt zu überprüfen, direkt neben der .app-Datei einen myTempDir-Ordner fand. Nachdem ich das Skript geändert hatte, um es an anderer Stelle zu speichern, wurden die Dinge sortiert.

Eli
quelle
0

Versuchen Sie, $ (PROJECT_NAME) -Header im Ordnerpfad für öffentliche Header von Framework projet festzulegen. Sie müssen Einstellungen für das Bibliotheksziel erstellen und dann den Ordnerpfad für öffentliche Header als $ (PROJECT_NAME) -Header bearbeiten.

Inco Mob
quelle
0

Bei Verwendung von Xcode 7 mit Cocoapods v.0.38.2 . Versuchen Sie, copy pod resourcesvon Ihrem heutigen Erweiterungsziel zu entfernen .

Geben Sie hier die Bildbeschreibung ein

CoderPug
quelle
0

Dieses Problem trat auf, nachdem ich dem Projekt meiner iOS-App ein OS X-Befehlszeilentool hinzugefügt hatte, und Skip Install wurde für das Ziel des Befehlszeilentools standardmäßig auf NO gesetzt. Da Sie eine OS X-Binärdatei offensichtlich nicht auf einem iOS-Gerät installieren können, wird bei der Archivierung standardmäßig ein generisches Xcode-Archiv verwendet. Das Problem wurde behoben, indem für dieses Ziel die Option "Installation überspringen" auf "JA" gesetzt wurde.

Brian Stewart
quelle