it-swarm.com.de

"Kein solches Modul", wenn ich CocoaPods verwende

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

54
Idris

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:

  1. Schemenmenü> Schemas verwalten> Pods überprüfen> Schließen  manage

     enter image description here

  2. Wählen Sie Pods aus dem Schema-Menü.
  3. Pods erstellen.
  4. Wählen Sie Ihr Projekt aus dem gleichen Menü aus und erstellen/führen Sie es aus.
76
Micah Benn

Sie müssen die Projekt-.xcworkspace-Datei (nicht .xcodeproj) nach der Installation der Pod-Datei erneut öffnen.

  1. Klonen Sie das Repo mit CocoaPods 
  2. Öffnen Sie YourWorkspace/YourApplication.xcworkspace
  3. Wählen Sie die App aus, die Sie ausführen möchten, und fügen Sie SwiftyJSON.framework in eingebetteten Binärdateien für dieses Projekt ein. Klicken Sie auf Ausführen

Glückliche Kodierung :)

15
Asil ARSLAN

Sie können auch versuchen, Pods erneut zu installieren:

pod deintegrate

und dann

pod install

Dies hat dieses Problem für mich behoben

14
Vishal

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.

14
Yash Vyas

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

5

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'

5
LowAmmo

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.

2
samuperry

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,

  1. Projektdatei -> Konfigurationen -> Setzen Sie alle Konfigurationen auf Keine. 
  2. Entfernen Sie den Pods-Ordner und Podfile.lock. 
  3. Führen Sie 'pod install' zuerst im Framework-Projektverzeichnis aus und führen Sie dann im Hauptprojektverzeichnis eine Pod-Installation durch.
1
Arvind Abi

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 :)

0
Andrej Jaššo

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

0
karthikeyan

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:

  • Gehen Sie in Xcode zu Pods
  • Pods
  • Klicken Sie mit der rechten Maustaste auf den betroffenen pod.
  • Im Finder anzeigen

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.

0
Jakub Truhlář

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:

  1. kopiere den alten Pfad

  2. 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

  3. fügen Sie den alten Suchpfad wieder unter dem generierten hinzu (nur erforderlich, wenn noch einige manuell hinzugefügte Frameworks vorhanden sind).

  4. 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):  enter image description here

0
Vitalii

Stellen Sie sicher, dass Sie den korrekten Frameworknamen importieren, der in .podspec des Pods definiert ist.

0
Leo

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.

0
Gerd Castan

Das Hinzufügen des Links "c ++" in der Framework-Datei module.modulemap hat für mich funktioniert

0
user2029995

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.

0
Yogendra Singh
  • sauberes Projekt
  • schließe xcode
  • öffne xcode
  • genießen
0
Ivan