Ich habe ein iOS-Projekt mit CocoaPods. Alles funktionierte reibungslos, bis ein anderer Entwickler anfing, an demselben Projekt zu arbeiten. Er hat einige Änderungen vorgenommen (nur an Code, soweit ich weiß) und einen neuen Zweig im Repo erstellt. Ich habe seinen Zweig ausgecheckt und versucht, ihn zu erstellen, erhalte jedoch eine Fehlermeldung: Die Datei ASLogger / ASLogger.h wurde nicht gefunden.
Auch wenn ich das gesamte Projekt lösche und eine neue Kopie erstelle und 'pods install' verwende. Der Build-Fehler ist immer noch vorhanden. Haben Sie eine Idee, wo das Problem liegen kann? Wenn Sie weitere Informationen benötigen, fragen Sie einfach.
Antworten:
Aktualisieren
Stellen Sie sicher, dass in Ihren
Podfile
Includeslink_with
für Ziele eine Konfigurationsdatei fehlt. Cocoapods legt ansonsten standardmäßig nur das erste Ziel fest . z.B------ Update beenden
Hinweis: Bitte beachten Sie, dass Sie die folgenden Schritte unter Projekt-> Info-> Konfigurationen ausführen müssen.
Ich hatte ähnliche Symptome und stellte fest, dass die
pods.xcconfig
Datei nicht in der spezifischen Datei enthalten war, dietarget
ich erstellen wollte. Einige der anderen Lösungsvorschläge funktionierten für mich, aber dieser schien einen Teil des zugrunde liegenden Problems anzusprechen.Die einfache Lösung bestand darin, die Konfigurationsdatei für die Ziele zu ändern, für die kein Satz festgelegt wurde.
quelle
link_with
Angabe meines anderen Ziels hat für mich funktioniert. Danke vielmals. Ich habe gerade einige Stunden damit verbracht.link_with
wird in Cocoapods 1.0 oder höher nicht unterstützt.Aktualisieren
Ich habe dies seit meiner ursprünglichen Antwort aktualisiert, die die Ablehnung erhalten hat, also hoffe ich, dass dies hilft. Und wenn ja, wird es hoffentlich meine Stimme zurückbekommen.
Wenn die Header nicht importiert werden, liegt wahrscheinlich ein Konflikt in der
HEADER_SEARCH_PATHS
. Versuchen Sie$(inherited)
, den Header-Suchpfaden in Ihren Build-Einstellungen hinzuzufügen , um sicherzustellen, dass alle in der .xcconfig-Datei enthaltenen Suchpfade von Ihren CocoaPods abgerufen werden.Dies sollte bei Konflikten helfen und Ihre Quelle korrekt importieren.
quelle
1.Überprüfen
2.Überprüfen Sie den Importstil (KEY POINT), falls Sie
podfile
diesen festgelegt habenuse_frameworks!
Bei Ihnen
File-Bridging-Header.h
sollte der Formatierer dies mögen#import "MBProgressHUD.h"
sonst sollte unten sein
#import <MBProgressHUD.h>
3.Das muss Arbeit sein! Vertrau mir
quelle
Header-Dateien, du wirst der Tod von mir sein ...
Endlich funktionierte es durch Hinzufügen (einschließlich Anführungszeichen)
zum Eintrag User Header Search Paths und aktivieren Sie 'rekursiv'.
quelle
$(inherited)
(funktionierte nicht), aber das Hinzufügen funktionierte für mich.Ich habe festgestellt, dass
${PODS_HEADERS_SEARCH_PATHS}
es fehlt und es nicht in meinem Entwicklungs-Git-Zweig definiert ist. Deshalb habe ich"$(SRCROOT)/Pods/Headers/"
für Header-Suchpfade mit rekursiv hinzugefügtDas ist für mich in Ordnung
quelle
$(SRCROOT)/Pods/Headers
Beide anderen Antworten haben hier nicht geholfen. Ich habe 2 andere Probleme gefunden, die das Problem beheben könnten:
Die Projekt-> Info-> Konfigurationen im Xcode-Projekt (Ihr Projekt) sollten für Debug, Release (und was auch immer Sie haben) auf 'Pods' gesetzt sein. Siehe "Header nicht gefunden - Suchpfade nicht enthalten"
Möglicherweise müssen Sie das Ziel mit dem Befehl link_with verknüpfen. Siehe "Header im Projekt" Statische Bibliothek "können nicht gefunden werden"
BEARBEITEN Sie können einen Symlink folgendermaßen überprüfen: Erstellen Sie eine Textdatei mit dem Namen 'check' ohne Erweiterung. Kopieren Sie diese Zeilen hinein:
Gehen Sie dann zum Terminal, wechseln Sie in den Ordner, in dem sich Ihre Prüfdatei befindet, und geben Sie ein
quelle
Folgendes hat bei mir funktioniert:
Gehen Sie zur Registerkarte Ziel> "Build-Einstellungen" und suchen Sie die Einstellung "User Header Search Paths".
Setzen Sie dies auf "$ (BUILT_PRODUCTS_DIR)" und aktivieren Sie das Kontrollkästchen "Rekursiv".
Jetzt durchsucht das erstellte Ziel das freigegebene Erstellungsverzeichnis des Arbeitsbereichs, um die verknüpfbaren Header-Dateien zu finden.
====
AKTUALISIEREN
Ich hatte kürzlich ein ähnliches (wenn auch etwas anderes) Problem. Es stellte sich heraus, dass Xcode die Pods nicht finden konnte, weil ich die
.xcodeproj
Datei und nicht die.xcworkspace
Datei geöffnet hatte . Könnte anderen in Zukunft helfen.quelle
pod install
und dem erneuten Öffnen.Wenn keines der oben genannten
use_frameworks!
Verfahren für Sie funktioniert hat und Sie diesen Fehler finden, weil Sie gerade in Ihrem Podfile zu gewechselt haben, lesen Sie weiter:Ich habe alle oben genannten Lösungen und vieles mehr ausprobiert, bevor ich erfuhr, dass es in meinem speziellen Fall überhaupt nicht um Suchkopfpfade geht. Wenn Sie
use_frameworks!
in Ihr Podfile wechseln, müssen Sie keine Frameworks mehr in Ihren Bridging-Header aufnehmen, und tatsächlich wird Xcode den sehr wenig hilfreichen Fehler "Header kann nicht gefunden werden" auslösen.Sie müssen
import Module
lediglich alle Importe aus Ihrer Bridging-Header-Datei entfernen und stattdessen den Swift nach Bedarf in Ihren einzelnen Swift-Dateien verwenden, genau wie Sie es für Swift-Frameworks tun würden.UND wenn Sie einen der Framework-Header in Ihren Obj-C-Klassen verwenden (in meinem Fall haben wir eine Convenience-Klasse, die das FBSDK verwendet), müssen Sie ihn von einem lokalen in einen globalen Import ändern (dies bedeutet eine Änderung
#import "Module.h"
in#import <Module/Module.h>
, die automatisch vervollständigt werden sollte für Sie, wenn Sie anfangen, den Framework-Namen einzugeben. In meinem Fall war es<AFNetworking/AFHTTPRequestOperationManager.h>
).Bearbeiten: Ich habe seitdem gelernt, dass beim Ausführen
@import Module
die Umbrella-Datei verwendet wird, was noch sicherer ist.quelle
Haben Sie versucht, den Cocoapods-Stil zu importieren?
Die Informationen auf der Website sind nicht wirklich klar, ich habe eine Pull-Anfrage eingereicht:
https://github.com/CocoaPods/cocoapods.org/pull/34
Update: Sie haben meine Anfrage gezogen :)
quelle
Das Wiki gibt Ratschläge zur Lösung dieses Problems:
quelle
$(PROJECT_DIR)/Pods/Headers/Public/xxx/ios/xxx.h
gibt es einen zusätzlichenios
Ordner ...Ich war der einzige Entwickler im Team, bei dem das gleiche Problem auftrat. Es funktionierte perfekt für alle, sodass mir klar wurde, dass es meine Umgebung sein musste. Ich habe ein
git clone
Projekt desselben in einem anderen Verzeichnis ausprobiert und es wurde perfekt kompiliert. Dann wurde mir klar, dass es sich um Xcode-Caching für meinen Projektpfad handeln musste. "Irgendwo" ist der DerivedData-Ordner. Entfernen Sie ihn einfach und erstellen Sie einen sauberen Build Ihres Projekt, es hat bei mir funktioniert.Sie können den Pfad abrufen und den Ordner sogar im Finder öffnen, indem Sie zu:
Xcode -> Einstellungen -> Standorte -> ** DerivedData
quelle
Ich werde die folgenden Dinge in meinen Build-Einstellungen aktualisieren und habe keine Fehler erhalten. Um dies zu überprüfen, müssen Sie Ihre Cocoapods aktualisieren.
Build-Einstellungen
Nur Architektur erstellen
Suchpfad
quelle
Wenn Sie nach einer " Pod-Installation " oder einem " Pod-Update " Fehler beim Erstellen hatten , wurde möglicherweise einer Ihrer Pods mit XCode 6.3 erstellt, während Sie noch eine frühere Version verwenden.
In meinem Fall musste ich mein OSX von Mavericks auf Yosemite aktualisieren, um Xcode 6.3 zu haben und das Problem zu lösen
quelle
Für mich lag das Problem im Wert anderer Linker-Flags. Aus irgendeinem Grund hatte ich keine Zitate in Flaggen wie
-l"xml2"
-l"Pods-MBProgressHUD"
.quelle
Other Linker Flags
fand ich zwei Einträge:-|Localytics
und|-PodsLocalytics
. Ich habe diese entfernt und konnte sie dann kompilieren.Ich musste die Zip von Git Hub herunterladen und die fehlenden Dateien in den Finder unter den entsprechenden Pfaden in Pod / ... ziehen.
quelle
Für mich hat es funktioniert, das Pods-Projekt auszuwählen, das Zielframework mit dem fehlenden Header im Zielverzeichnis des Pod-Projekts zu finden und auszuwählen und "Nur aktive Architektur erstellen" in den Build-Einstellungen des Ziels unter "Architekturen" auf "Nein" zu setzen.
quelle
Ich habe das gleiche Problem, aber die oben genannten Lösungen können nicht funktionieren. Ich habe es dadurch behoben:
Und dann funktioniert es.
quelle
Für mich war das iOS-Bereitstellungsziel für mein Pods-Projekt niedriger als für mein Projekt. Nachdem ich es mit meinem Projekt identisch gemacht hatte, konnte es die Header-Datei finden.
quelle
Ich war auf dem GM-Seed von Xcode 5.0 und konnte keine dieser Antworten zum Laufen bringen. Ich habe jede einzelne Antwort auf SO bei mehreren verschiedenen Fragen zu Header-Importen mit Cocoapods ausprobiert.
ENDLICH habe ich eine Lösung gefunden, die für mich funktioniert hat : Ich habe über den Mac AppStore (der über dem GM-Seed installiert ist) auf Xcode 5.0 aktualisiert und jetzt funktionieren die Header-Importe wie erwartet.
Ich hatte auch noch eine Beta-Version von Xcode 5 auf meinem System und habe diese ebenfalls gelöscht. Vielleicht war es eine Kombination der beiden Dinge, aber hoffentlich hilft dies jemand anderem.
quelle
Dies war die Antwort für mich, ich habe Cocoapods aktualisiert und ich denke, das hat dazu geführt, dass die PODS_HEADERS_SEARCH_PATHS verschwunden sind. Meine Lösung war ähnlich, aber ich habe "$ (PODS_ROOT) / Headers" - Andrew Aitken verwendet
Vielen Dank für diese Antwort. Es fiel mir schwer, nach Wegen zu suchen, um mein Problem zu beheben. Vielen Dank.
quelle
Keine der Antworten hat mir geholfen (ich hatte meine Pods mit allen Zielen verknüpft, Konfigurationen richtig eingerichtet, Suchpfade "$ (geerbt)" richtig eingestellt usw.).
Das Problem verschwand von selbst, nachdem ich Cocoapods mit dem Standardbefehl install / update auf die neueste Debug-Version aktualisiert hatte:
oder:
(wenn sudo während der Installation verwendet wurde).
Es muss ein Cocoapods-Bug gewesen sein.
quelle
Eine einfache Problemumgehung ist: 1. Löschen Sie den Pods-Ordner und die Podfile.lock-Datei. Löschen Sie jedoch nicht Podfile 2. Führen Sie den folgenden Befehl in Ihrem Projektstammordner aus:
quelle
Hier ist ein weiterer Grund: Alle Header-Pfade schienen in Ordnung zu sein, aber wir hatten immer noch einen Fehler in der vorkompilierten (.pch) Datei, die versuchte, einen Pod-Header zu lesen
(dh #import <CocoaLumberjack / CocoaLumberjack.h>).
Als ich mir die Roh-Build-Ausgabe ansah, bemerkte ich schließlich, dass der Fehler unser Watch OS-Erweiterungsziel beschädigte, nicht das Hauptziel, das wir erstellten, da wir auch die vorkompilierte .pch-Headerdatei in die Watch OS-Ziele importierten und dies fehlschlug Dort. Stellen Sie sicher, dass Ihre zugehörigen Watch OS-Zieleinstellungen nicht versuchen, die .pch-Datei zu importieren (insbesondere, wenn Sie diesen Import wie ich aus der Master-Zieleinstellung festlegen!).
quelle
Ich habe festgestellt, dass das direkte Einfügen der Bibliothek als Pod-Installation dynamischen Bibliotheken hilft. Zum Beispiel für Firebase:
Oder für ASLogger:
Das Ändern oder Hardcodieren
HEADER_SEARCH_PATHS
hat mir nicht geholfen. Sollte der Fehler jemals wieder auftreten, ist dies nicht erforderlichrm -rf node_modules
die Pod-Datei usw. weder gelöscht noch gelöscht werden. Ich fand es nützlich, den Cache zu leeren.Für React-Native renne ich
Für Xcode entferne ich Ordner in
~/Library/Developer/Xcode/DerivedData
quelle
Ich denke, eine ultimative Lösung ist es, zu gehen
Build settings -> Search Path -> User Header Search Paths
, Ihren Bibliothekspfad finden und ihn in einem Finder durchzugehen. Stellen Sie sicher, dass alle Pfade einschließlich Ihres Importpfads vorhanden sind.Für mich war mein Weg kürzer als in einem Tutorial. Im Tutorial war es so etwas wie
#import <SDK/path/to/sdk/File.h>
, aber es stellt sich heraus, dass es gerecht ist#import <SDK/File.h>
quelle
Ich habe hier andere Lösung gearbeitet,
quelle
Versuchen Sie, diese Zeile für Ihr Ziel zu kommentieren
Oder Sie können auf meine andere Antwort verweisen, die Unit-Testing-Ziel zu xcode hinzugefügt hat - fehlgeschlagener Import des Bridging-Headers wird nicht verschwinden
quelle
Ich habe dieses Problem für Xcode 8.2.1 durch Drag & Drop-Framework gelöst, das ich verwenden möchte.
quelle