Also hier ist meine Prozedur. Ich erstelle eine neue Podfile
im Projektverzeichnis und füge Folgendes hinzu
platform :ios, '9.0'
use_frameworks!
target 'CPod' do
pod 'AFNetworking', '~> 2.5'
pod 'ORStackView', '~> 2.0'
pod 'SwiftyJSON', '~> 2.1'
end
Ich feuere pod install
ab, und alles läuft gut, öffne die xcworkspace
. Ich gehe dann zu ViewController.Swift
und wenn ich versuche, einen Pod zu importieren, bekomme ich No such module 'SwiftyJSON'
, wenn ich import SwiftyJSON
machen würde. Irgendwelche Ideen?
BEARBEITEN: SwiftyJSON ist ein auf Swift basierendes Modul, nicht Obj-C
Versuchen Sie, das Framework Pods
zu Ihrem Build-Schema hinzuzufügen und das Framework zu erstellen. Nachdem Sie es erstellt haben, erstellen/führen Sie Ihr Projekt aus.
Schritte:
Sie müssen die Projekt-.xcworkspace-Datei (nicht .xcodeproj) nach der Installation der Pod-Datei erneut öffnen.
Glückliche Kodierung :)
Sie können auch versuchen, Pods erneut zu installieren:
pod deintegrate
und dann
pod install
Dies hat dieses Problem für mich behoben
Drücken Sie Befehlstaste + Wahltaste + Umschalttaste + K und dann Ausführen Ihrer App. Sie sehen eine Magie.
Oder drücken Sie im Menü -> Produkt die Wahltaste auf Ihrer Tastatur. Daraufhin wird Clean Build Folder angezeigt.
Es sieht komisch aus, wie Xcode diese Dinge mit uns machen konnte, aber dasselbe passierte für mich, als ich eine Swift-Bibliothek mit Pod benutzte und nach zu viel Mühe mit Clean Build Folder endete.
Versuchen Sie es mit pod update nach dem pod install-Befehl, der das Problem mit kein solches Modul ..__ löst. Ich habe es gerade versucht und es funktioniert gut.
Vielen Dank. Ratneshwar
Nicht sicher, ob dies für andere noch hilfreich wäre. In meinem Fall war es jedoch ein dummer Fehler, Abhängigkeiten aus der .podspec-Datei nicht zu referenzieren.
Wir haben eine Anwendung mit mehreren internen Bibliotheken, und diese Bibliotheken haben auch Abhängigkeiten voneinander - die wir in den Pod-Dateien berücksichtigt haben ... aber NICHT in den Podspecs.
Also, obwohl unsere Pod-Dateien hatten:
Anwendung/Poddatei
# Development Pods
pod 'ConsumingLibrary ', :path => '../ios-consuming-lib'
pod 'DependentLibrary1', :path => '../ios-library-one'
pod 'CommonCoreLibrary', :path => '../ios-common-core-lib'
Verbraucherbibliothek/Poddatei
# Development Pods
pod 'DependentLibrary1', :path => '../ios-library-one'
pod 'CommonCoreLibrary', :path => '../ios-common-core-lib'
Muss auch in den .podspecs aufgerufen werden:
Verbraucherbibliothek/Verbraucherbibliothek.podspec
# TODO
# Add here any resources to be exported.
s.dependency 'DependentLibrary1', '~> 0.1.0-RC'
DependentLibrary1/DependentLibrary1.podspec
# TODO
# Add here any resources to be exported.
s.dependency 'CommonCoreLibrary', '~> 0.1.0-RC'
Ich glaube, ich habe etwa zwei Stunden damit verbracht, herauszufinden, warum ich ConsumingLibrary erstellen und Tests ausführen konnte, aber sobald ich die App erstellt habe, waren alle drei Bibliotheken verbraucht.
Kein solches Modul 'DependentLibrary1'
Wie @ jakub-truhlář schrieb, ist das Hauptproblem die fehlende module.modulemap -Datei, da einige Swift- und Objective-C-Bibliotheken gemischt wurden. Statt diese Dateien jedoch manuell zu erstellen, ist es besser, die abgeleiteten Daten und zu reinigen Bauen Sie Ihr Projekt auf. Wenn das Projekt erfolgreich erstellt wurde, übergeben Sie die Dateien module.modulemap an Ihr Repository, um einen Verlust dieser Dateien zu vermeiden, z. B. den aktuellen Zweig zu ändern.
In einem von mir entwickelten Swift-Framework stand ich vor demselben Problem. Das Framework hatte eine Abhängigkeit vom Git-Projekt und das Framework selbst wurde als Pod zu meinem Hauptprojekt hinzugefügt. Idealerweise wurde die Abhängigkeit auch in podspec file und Podfile angegeben.
Beim Zugriff durch mein Hauptprojekt war ich nicht mit dem Problem konfrontiert, aber als ich das eigenständige Framework öffnete, wurde der Fehler "Kein solches Modul" ausgegeben.
Die Hauptursache ist, dass die Basiskonfigurationen mit dem Pfad festgelegt sind, der auf mein Hauptprojekt und nicht auf das Framework selbst zeigt, da ich podinstall zuerst in meinem Hauptprojekt und dann im Rahmenprojekt ausgeführt habe.
ZB: In der Projektdatei war es wie 0091AB0C861D71C94ADD7240/* Pods-myframework.release.xcconfig */= {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-myframework.release.xcconfig"; path = "../../Apps/MyMainProject/Pods/Target Unterstützungsdateien/Pods-myframework/Pods-myframework.release.xcconfig" ; sourceTree = ""; };
Nachdem Sie den unten genannten Fix ausgeführt haben, wird 4444F5B1B35F066E57F96782/* Pods-myframework.release.xcconfig */= {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-myframework.release.xcconfig"; path = "Pods/Zielunterstützungsdateien/Pods-myframework/Pods-myframework.release.xcconfig" ; sourceTree = ""; };
Um den Fehler zu beheben,
Ich habe alle diese Vorschläge ausprobiert, aber nichts hat für mich funktioniert. Stattdessen hatte es für mich funktioniert, die Schoten zu zerlegen. Anschließend löschen Sie den Pods-Ordner aus der Xcode-Hierarchie und führen die Pod-Installation durch. Plötzlich klappte es. Frag mich nicht warum, denn die meisten dieser Vorschläge sind sowieso verpasst oder getroffen, aber ich freue mich, wenn es auch für jemand anderen funktioniert :)
Ich habe gerade bestimmte Abhängigkeiten im Terminal aktualisiert
Gehen Sie zum Projektordner und führen Sie den folgenden Befehl aus
Pod den Podnamen aktualisieren
Für mich muss ich tun
Pod Update ErreichbarkeitSwift
Kommt manchmal vor, wenn Sie ein obj-c pod in einem Swift - Projekt haben (auch wenn Sie den use_frameworks!
im .podfile
verwenden).
Wenn Sie sicher sind, dass pod installiert ist und Sie noch No solches Modul erhalten, versuchen Sie Folgendes:
Es sollte eine Paketdatei mit dem Suffix .framework vorhanden sein. Erstellen Sie darin einen Ordner Modules. Erstellen Sie in diesem Ordner eine Datei mit dem Namen module.modulemap mit dem Code:
framework module MODULE_NAME_HERE {
umbrella header "MODULE_NAME_HERE.h"
export *
module * { export * }
link framework LINKED_FRAMEWORKS_AND_LIBRARIES_THE_POD_NEEDS_HERE
link framework "AdSupport"
link "c++"
link "z"
}
Rebuild und du solltest in Ordnung sein.
Hatte dieses Problem beim Hinzufügen von CocoaPods zu einem alten Projekt, bei dem bereits zuvor manuell Libs eingefügt wurden. Dies geschah, weil Xcode aufgrund der zuvor in den Einstellungen des Ziels festgelegten Werte nicht in den von CocoaPods generierten Framework Search Path
aufgelöst wurde.
Lösung, die mir geholfen hat:
kopiere den alten Pfad
klicken Sie auf Löschen, um die Framework Search Path
-Einstellungen in der Spalte des Ziels vollständig zu löschen. Der von CocoaPods generierte Pfad würde dort angezeigt
fügen Sie den alten Suchpfad wieder unter dem generierten hinzu (nur erforderlich, wenn noch einige manuell hinzugefügte Frameworks vorhanden sind).
Projekt bereinigen, abgeleitete Daten löschen, erstellen.
Das Ergebnis würde folgendermaßen aussehen (1. Zeile von Xcode hinzugefügt, 2. Zeile von CocoaPods hinzugefügt und 3. Zeile ist manuell):
Stellen Sie sicher, dass Sie den korrekten Frameworknamen importieren, der in .podspec
des Pods definiert ist.
Ich hatte dieses Problem, als ich XCode öffnete und dann den Arbeitsbereich meines Projekts über Datei-> Zuletzt geöffnete ausgewählt habe.
Ich habe festgestellt, dass ich zwei .xcworkspace-Dateien in meinem Dateisystem für denselben Arbeitsbereich/Projekt hatte.
Das Öffnen von XCode durch Doppelklick auf die richtige .xcworkspace-Datei hat den Trick ausgeführt .
Ich habe später den falschen gelöscht.
Das Hinzufügen des Links "c ++" in der Framework-Datei module.modulemap hat für mich funktioniert
Bei mehreren Zielen . Zum Beispiel. Target1, Target2
use_frameworks!
target 'Target1' do
pod 'Fabric'
pod 'Crashlytics'
target 'Target2' do
end
end
Dann führe pod install aus.