Beim Archivieren eines Projekts ist ein Fehler aufgetreten. Das ist meine Umgebung.
- Mac OS Lion
- Xcode 4.3.1
- iOS SDK 5.1
Das Projektbereitstellungsziel lautet:
IPHONEOS_DEPLOYMENT_TARGET 3.2
Der Fehler zeigt:
ld: library not found for -lPods
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Ich denke, Pods sind CocoaPods, mit denen ich XCode-Projektabhängigkeiten verwaltet habe. https://github.com/CocoaPods/CocoaPods
Das ist mein Podfile
platform :ios
dependency 'libPusher', '1.1'
Ich bin nicht sicher, was der Fehler bedeutet?
Antworten:
Öffnen Sie den Arbeitsbereich (der von CocoaPods generiert wurde) anstelle von xcodeproj?
quelle
Podfile
die Plattform wie folgt an :platform :ios, :deployment_target => "3.2"
. Das sollte es beim nächsten Start richtig konfigurierenpod install
..xcworkspace
Datei öffnen , nicht die.xcodeproj
. Auf diese Weise kennt Xcode zusätzlich zu Ihrem Projekt das Projekt imPods/
Verzeichnis und weiß, wie es erstellt wirdlibPods.a
..xcodeproj
die.xcworkspace
Datei geöffnet haben, müssen Sie sie schließen, bevor Sie die Datei öffnen .Ich habe die App und die Testziele im Podfile mithilfe von getrennt
Dies führte zu zwei neuen Produkten libPods-App.a und libPods-AppTests.a , die das vorherige Produkt libPods.a überflüssig machten . Ich musste dieses Produkt aus dem Abschnitt Link Binary With Libraries der Build Phases- Konfiguration beider Ziele entfernen .
quelle
Ich bin heute auf ein ähnliches Problem gestoßen.
Preview
zusammen mit der vorhandenenDebug
und erstelltRelease
Beim Kompilieren dieser neuen
Preview
Konfiguration kann der Compiler keine Verbindung zu Pods herstellen und mir folgende Meldung geben:Die Lösung:
Was ich tun musste, war zu rennen
erneut und damit Cocoapods für die neue
Preview
Konfiguration konfigurieren. Es hat mein Projekt, den Arbeitsbereich und die Projektdatei des Pod aktualisiert und das Problem ist verschwundenquelle
Stellen Sie sicher, dass Sie öffnen
.xcworkspace
, nicht.xcodeproj
quelle
Keine Lösung hat für mich funktioniert, das ist wirklich unerträglich, es gibt eine Datei
libpods.a
(die rot gefärbt war) Ich habe sie entfernt und alles funktioniert gut! Prost auf mich;)quelle
Ich hatte meine Pod-Listen in
Podfile
verschiedene Ziele unterteilt:Und lief ein
pod install
Dadurch wurde eine neue Bibliothek erstellt,
libPods-ABC.a
auf die meine Binärdatei verlinken musste. Der Fehler war jedoch, dass die vorherige Bibliothek nicht gelöscht wurde, dlibPods.a
. H.Lösung: Entfernen Sie die Bibliothek
libPods.a
ausBuild Phases
derLink Binary With Libraries
.quelle
Ich hatte eine alte libPod.a-Datei angegeben (wahrscheinlich verursacht durch das Ändern von Zielen).
Projekteinstellungen -> Phasen erstellen -> Binär mit Bibliotheken verknüpfen
Normalerweise enthalten Cocoapods nur eine Bibliothek wie
libPods-target.a
oderlibPods.a
. Ich habe es gelöst, indem ich das Duplikat entfernt habe.quelle
Pods.debug
auf geändertPods-MyApp.debug
, so dass ich jetzt nur noch brauchelibPods-MyApp.a
(es gab ein "verblasstes" Symbol für das altelibPods.a
),wenn Sie auf Cocoapods v25 / Xcode 5 auf Probleme damit stoßen
Das Pods Xcode-Projekt setzt jetzt die Build-Einstellung ONLY_ACTIVE_ARCH in der Debug-Konfiguration auf YES. Sie müssen dasselbe für Ihr Projekt / Ziel festlegen, sonst schlägt der Build fehl.
https://github.com/CocoaPods/CocoaPods/wiki/FAQ#running-into-build-failures-after-migrating-to-xcode-5-and-cocoapods-0250
UPDATE Stellen Sie sicher, dass Sie die neuesten Edelsteine / Cocoapods haben
Sie möchten das Projekt mit Pod Install neu erstellen, um das Projekt neu zu erstellen.
quelle
Wenn sich Xcode beim Verknüpfen beschwert, z. B. Bibliothek für -lPods nicht gefunden, werden die impliziten Abhängigkeiten nicht erkannt.
Gehen Sie zu Produkt> Schema bearbeiten. Klicken Sie auf Erstellen. Fügen Sie die statische Pods-Bibliothek hinzu und stellen Sie sicher, dass sie ganz oben in der Liste steht. Bereinigen und erneut erstellen. Wenn dies nicht funktioniert, überprüfen Sie, ob die Quelle für die Spezifikation, die Sie einschließen möchten, angegeben wurde aus Github gezogen. Schauen Sie dazu in / Pods / nach. Wenn es leer ist (sollte es nicht sein), überprüfen Sie, ob die ~ / .cocoapods / master //. Podspec die richtige Git-Hub-URL enthält. Wenn dies immer noch nicht funktioniert, überprüfen Sie die Einstellungen für Ihre XCode-Erstellungsorte. Gehen Sie zu Einstellungen -> Speicherorte -> Abgeleitete Daten -> Erweitert und setzen Sie den Build-Speicherort auf "Relativ zum Arbeitsbereich".
http://docs.cocoapods.org/guides/getting_started.html
quelle
Ich hatte das gleiche Problem, als ich die Poddatei bearbeitete und das Ziel hinzufügte, das ich zuvor ohne Ziel verwendet hatte.
Podfile
Nachdem ich mich umgesehen hatte, stellte ich fest, dass im Abschnitt Zieleigenschaften >> Registerkarte Allgemein >> Verknüpfte Frameworks und Bibliotheken die neuen libPods-xxxx.a und die alten libPods.a vorhanden waren
Ich habe gerade libPods.a entfernt und alles hat gut funktioniert.
quelle
Das Wiki von CocoaPods auf GitHub hat die Antwort direkt in den FAQ :
Product > Edit Scheme
Build
<Project Dir>/Pods/<Name of spec you are trying to include>
. Wenn es leer ist (sollte es nicht sein), stellen Sie sicher, dass das~/.cocoapods/master/<spec>/<spec>.podspec
die richtige Github-URL enthält.Preferences -> Locations -> Derived Data -> Advanced
und setzen Sie den Build-Speicherort auf "Relativ zum Arbeitsbereich".quelle
Ich habe das Projekt von "Partners" in "NBSelector" umbenannt.
Nach dem Umbenennen des Projekts wurde der Fehler "Bibliothek für libPods-Partner nicht gefunden" angezeigt. Xcode hat versucht, eine Verknüpfung zu einer alten Partners.a-Datei herzustellen. Entfernen Sie es einfach, wenn Sie podInstalled nach dem Umbenennen haben.
quelle
Die Verwendung von ONLY_ACTIVE_ARCH = NO in allen Pods hat das Problem für mich gelöst. Um dies dauerhaft zu machen, habe ich meinem Podfile einen post_install-Hook hinzugefügt:
pod install
und du bist fertig.quelle
Haben Sie "Distribution" oder eine ähnliche Konfiguration erstellt, um Ad-Hoc- und App Store-Archive zu erstellen? Wie viele andere folgte ich den Empfehlungen von Apple und nannte die "Release" -Konfiguration "Distribution" und legte unterschiedliche Signaturregeln fest. Nun, vielleicht war das eine Empfehlung, bevor sie Schemata und die Option "Verteilen" in Organizer einführten, jedenfalls hatte ich sie gerade von früher.
Dann hatte ich das gleiche Problem mit Pods. Beim Debuggen hat alles gut funktioniert, aber die Archivierung ist mit einem Linkfehler fehlgeschlagen. Nachdem ich dies und das versucht hatte, änderte ich die Archivkonfiguration meines ursprünglichen Projekts von "Distribution" in "Release" und der Linkfehler war verschwunden.
Das Archiv wurde jedoch nicht in Organizer angezeigt, obwohl ich es im Dateisystem finden konnte, aber es hatte die Größe 0.
Der letzte Schritt, um all dies zu beheben, bestand darin, die Einstellung "Installation überspringen" für die 'Release'-Konfiguration auf "NEIN" zu ändern. Beachten Sie, dass Sie dies nur für Ihr Hauptprojekt tun müssen, nicht jedoch für das Pods-Projekt. Lassen Sie das Pods-Projekt besser unverändert, da es jedes Mal generiert wird, wenn Sie die Pod-Installation ausführen.
Update Ich habe gerade eine Antwort von CocoaPods-Entwicklern erhalten. Es scheint für mich nicht zu funktionieren, da ich die Pods-Konfiguration richtig eingestellt hatte. Aber es könnte jemand anderem helfen.
quelle
In meinem Fall bestand das Problem darin, dass der Speicherort für abgeleitete Daten von Xcode auf die Option "Legacy" gesetzt wurde. Das CocoaPods-Ziel (libPods.a) wurde korrekt erstellt, aber Xcode suchte an der falschen Stelle danach.
Durch Umschalten auf "Einzigartig" (Standardeinstellung) wurde das Problem behoben. Sie können dies tun, indem Sie zu Einstellungen> Standorte gehen und auf die Schaltfläche Erweitert ... klicken.
quelle
Nur das Hinzufügen der "Bibliothekssuchpfade" (in den Build-Einstellungen von 'MyProject') zu "Pods / build / Debug-iphonesimulator" funktionierte für mich (bei Verwendung des Simulators).
Habe es von hier bekommen: https://github.com/CocoaPods/CocoaPods/issues/121#issuecomment-5452473
quelle
Wenn Sie für iOS7 und Xcode5 archivieren und diese Fehler erhalten haben, klicken Sie bitte auf diesen Link. Es scheint, als würde Apple eine Architektur fallen lassen, für die Kakaofrüchte https://github.com/CocoaPods/CocoaPods/pull/1352 benötigt werden
quelle
Ich habe festgestellt, dass durch Auswahl von "Implizite Abhängigkeiten suchen" (unter Produkt- / Bearbeitungsschema) dieses Problem behoben wird, anstatt Pods als Ziel hinzufügen zu müssen.
quelle
Ich habe hier jede Antwort durchgesehen, aber für mich war es wahnsinnig einfach ... Gehen Sie zu Ziel -> Phasen erstellen, entfernen Sie libPods-YourProject.a und fügen Sie es erneut mit dem "+" hinzu. Mach dir keine Sorgen, dass die Bibliothek rot ist, es ist in Ordnung.
quelle
Ich habe nach dem Update der Cocoapods die alte Cocoapod-Version verwendet. Es wird empfohlen, meinen installierten Pod wegen eines größeren Updates zu aktualisieren, da ich nach langer Zeit ein Update durchführe. Ich aktualisiere es und neue Version Pods wurde gut aktualisiert. Aber danach habe ich den Fehler wie bekommen
library not found for -lPods-xxxprojectName-xxxxxpodName
Nachdem ich so viele Lösungen ausprobiert hatte, die als Antwort auf diese Frage gegeben wurden, funktionierte nichts davon für mich. Dann ging ich zu meiner Projekteinstellung und stellte fest, dass der Pfad der Pods geändert wurde
Other Linker Flag
Überprüfen Sie Ihren
Manage Schemes
Pod-Namen und vergleichen Sie ihn inOther Linker Flag
. Ändern Sie ihn, wenn er nicht ähnlich istAlter Pod Pfad war
-l"lPods-xxxprojectName-xxxxxpodName"
Aber neue Pods waren nur
xxxxxpodName
so, dass ich durchOther Linker Flag
neue wie unten ersetzt habeIn Pod-Pfad geändert
-l"xxxxxpodName"
und es hat funktioniert.Ich kenne den perfekten Grund dafür nicht, könnte aber jemandem helfen.
quelle
Ich habe den Arbeitsbereich geöffnet, aber den gleichen Fehler erhalten.
Aktive Architektur erstellen Nur auf JA setzen
löse mein Problem.
quelle
Lösen Sie es, indem Sie die folgenden Schritte ausführen:
quelle
In meinem Fall wurde
pod install
das Problem nach dem Erstellen von Verteilungs- und Freigabeschemata behoben.quelle
Ich habe das gleiche Problem bei der Archivierung für die Übermittlung. Die Diskussion zu diesem Thema finden Sie hier: https://github.com/CocoaPods/CocoaPods/issues/155
Zusammenfassend funktionieren zwei Methoden für mich:
- platform :ios, :deployment_target => "5.0"
quelle
Verwenden von Xcode 5 mit iOS 7
Das habe ich getan, nachdem ich eine Stunde lang feststeckte. Entfernen Sie ARM64 aus der Build-Einstellung> Gültige Architektur.
ADDED: Auch für meinen Fall wurde kein Datenort abgeleitet. Ich habe Unique für den Build-Standort ausgewählt.
quelle
Wenn Sie iOS7 und Xcode 5 verwenden, gehen Sie wie folgt vor:
quelle
Ich habe JEDE Antwort in diesem Thread ohne Erfolg versucht. Schließlich wurde mein Problem behoben, indem der "Pfad für Build-Produkte vor der Konfiguration" in meinem Zielprojekt mit dem Wert im Pods-Projekt abgeglichen wurde. Es stellte sich heraus, dass sie an zwei verschiedenen Ausgabestellen gebaut wurden. Keiner der anderen Vorschläge in diesem Thread war für mich relevant. Wäre großartig, wenn XCode eine nützliche Fehlerbeschreibung geben würde (z. B. WARUM es die lib nicht verwenden kann - Datei nicht gefunden, keine passende Architektur gefunden usw.).
quelle
In diesem Problem: Wenn Sie den Pod bereits in Ihrem System installiert und aktualisiert haben, kann Ihr Xcode die Pods-Bibliothek nicht finden. Um dieses Problem zu beheben, überprüfen Sie bitte, ob folgende Ursachen auftreten können:
quelle
Versuchen
link_with 'YouTarget1', 'YouTarget2' ...
Mein Projekt hat funktioniert, die Ziele wurden plötzlich nicht mehr kompiliert. Dann fügte "link_with" hinzu und kehrte zum Normalzustand zurück.
Anscheinend verbindet es sich jetzt nur mit dem ersten Ziel, heißt es in dem Link:
http://guides.cocoapods.org/syntax/podfile.html#link_with
quelle
Wenn dieses Problem weiterhin auftritt, versuchen Sie Folgendes:
Hat die Arbeit für mich gemacht, hoffe das hilft dir.
quelle