Ich codiere derzeit in Swift und habe einen Fehler:
Kein solches Modul Social
Aber ich verstehe nicht, weil sich das Modul in meinem Projekt befindet, das in "Verknüpfte Frameworks und Bibliotheken" und in "Eingebettete Binärdateien" deklariert ist.
Das Framework befindet sich in Objective-C, daher habe ich einen Bridge-Header dafür geschrieben.
Wie kann ich Xcode das Framework erkennen lassen?
#import "Social/Social.h"
platform :ios, '10.0'
. Das war eine Lösung.Antworten:
Ich bin nicht sicher, warum dies passiert, aber eine Möglichkeit, Ihr Problem zu lösen, besteht darin, in Ihre Build-Einstellungen zu gehen und die Framework-Suchpfade für einen Ordner zu definieren, der die betreffenden Frameworks enthält. Wenn sich die Frameworks in Ihrem Projektverzeichnis befinden, setzen Sie einfach den Framework-Suchpfad auf
$(SRCROOT)
und setzen Sie ihn auf rekursiv.quelle
Project Build Settings
statt tunTarget Build Settings
.Falls es Freitagnachmittag oder jederzeit nach 1 Uhr morgens ist:
Das Öffnen
xcodeproj
stattxcworkspace
verursacht einen Fehler wie diesen ...quelle
Stellen Sie sicher, dass die Benennung Ihrer Konfigurationen in den Unterprojekten mit der des "übergeordneten" Projekts übereinstimmt. Wenn die Konfigurationsnamen nicht genau übereinstimmen (Groß- und Kleinschreibung beachten), bricht Xcode den Archivierungsvorgang ab und zeigt den Fehler "Kein solches Modul ..." an.
Das heißt, wenn Sie ein "übergeordnetes" Projekt mit einer Konfiguration namens "AppStore" haben, müssen Sie sicherstellen, dass alle Teilprojekte auch diesen Konfigurationsnamen haben.
Siehe meine angehängten Screenshots.
quelle
Debug
undDistribution
und sein übergeordnetes Projekt versuchte zu bauenRelease
. Die Lösung bestand darin, eine KopieDistribution
im untergeordneten Projekt zu erstellen und diese Kopie umzubenennenRelease
.Ich bin mir nicht ganz sicher, warum die Antwort von Martin R in den Kommentaren zur Frage so ignoriert wird:
Stellen Sie sicher, dass Sie versucht haben , den Import des Frameworks einfach zu überspringen, da es bereits mit dem Bridging-Header hinzugefügt wurde .
Hoffe das hilft
quelle
Ich hatte das gleiche Problem mit Cocoapods und Swift . Die folgenden Zeilen im Podfile sind mir nicht aufgefallen:
Also musste ich es nur ändern in:
... aaund es hat funktioniert :)
quelle
Bitte vergleichen Sie diesen Screenshot mit Ihrer Build-Einstellung. Es kann diese Arbeit. Gehen Sie zum Framework-Suchpfad:
quelle
Ich hatte auch dieses Problem. Die Lösung für mich war, dass die Archivierungsschemata zwischen den beiden Projekten nicht übereinstimmten. Ich habe einen xcworkspace mit einem Framework-Projekt und einem App-Projekt. Das Problem war, dass ich im Archivierungsschema für meine App eine andere Build-Konfiguration verwendete als das Framework für das Archivierungsschema. Ich habe beide Build-Konfigurationen auf Release gesetzt, wodurch das Problem behoben wurde.
quelle
Die folgenden Schritte haben bei mir funktioniert.
"pod update"
in Terminal.xcworkspace
und erneut erstellen.quelle
pod install
es funktioniert hat.In meinem Fall stellte ich nach vielen Versuchen, herauszufinden, was ich beim Importieren eines Frameworks falsch gemacht hatte, schließlich fest, dass das Framework selbst das Problem war. Wenn Sie Ihr Framework nicht von einer vertrauenswürdigen Quelle beziehen, sollten Sie das Framework überprüfen und sicherstellen, dass es einen Modulordner mit einer darin enthaltenen Datei module.modulemap enthält. Wenn module.modulemap nicht vorhanden ist, wird der Fehler "Kein solches Modul 'MyFramework'" angezeigt.
Wenn im Ordner "Module" der Ordner "MyFramework.swiftmodule" fehlt, wird das Framework gefunden, aber Xcode kennt den Inhalt nicht, sodass Sie unterschiedliche Fehler erhalten.
quelle
Angenommen, das Framework ist wirklich vorhanden und im Pfad usw. Löschen Sie das Verzeichnis ~ / Library / Developer / Xcode / DerivedData / ModuleCache (und bereinigen Sie das Projekt und löschen Sie die projektspezifisch abgeleiteten Daten für ein gutes Maß).
Wenn Sie die Standardbereinigung durchführen, wird das ModuleCache-Verzeichnis nicht neu erstellt.
quelle
Was für mich funktioniert hat, ist diese Lösung für eine andere Frage. Schließen von Xcode und erneutes Öffnen des Projekts als Arbeitsbereich.
Gehen Sie zu Ihrem Projektordner und öffnen Sie die
.xcodeworkspace
Datei.Sobald Sie den Arbeitsbereich (anstelle des Projekts) geöffnet haben, sollten Pods im Projektnavigator als Projekt der obersten Ebene angezeigt werden.
quelle
Stellen Sie sicher, dass
Find implicit Dependencies
in Build-Optionen in Schema aktiviert ist!quelle
Ich habe vor ein paar Tagen auch den gleichen Fehler festgestellt. So habe ich das Problem gelöst:
Der Fehler lautet "Modul nicht gefunden"
Gehen Sie zu Project Build Settings:
Erstellen Sie eine neue Bridging-Header-Datei: z. B. TestProject-Bridging-Header.h und fügen Sie sie unter Swift Compiler → Objective-C Generated Interface Header Name ein (siehe Abbildung oben).
Das ist alles.
quelle
Ok, das gleiche Problem wurde für mich gelöst, indem der abgeleitete Datenspeicherort relativ zum Arbeitsbereichsverzeichnis festgelegt wurde, anstatt ihn als Standard beizubehalten. Gehen Sie zu den Einstellungen in xcode. Gehen Sie in den Einstellungen zur Registerkarte "Standorte" und setzen Sie "Abgeleitete Daten" auf "Relativ". Ich hoffe es hilft.
quelle
Ich bekam den gleichen Fehler für
Dann bemerkte ich jedoch, dass ich dem Hauptzielbereich keinen Pod hinzufügte, sondern nur Test- und TestUI-Ziele in Podfile hinzufügte.
Mit dem Befehl
Für ein xcode swift-Projekt wird das folgende Podfile generiert
Stellen Sie also sicher, dass Sie Pods zu jedem geeigneten Platzhalter hinzufügen.
quelle
Wenn Sie für eine Plattform wie tvOS bauen, stellen Sie sicher, dass Sie einen Apple TV-Simulator (dh einen passenden Simulator) ausgewählt haben.
Das Erstellen einer tvOS-App mit einem ausgewählten iOS-Simulator gab mir genau diesen Fehler. Verbrachte den größten Teil einer Stunde damit, nach allen möglichen Build-Problemen zu suchen ... doh.
quelle
In meinem Fall wurde die App IPHONEOS_DEPLOYMENT_TARGET auf 9.3 gesetzt, während sie in meinem neu erstellten Framework auf 10.2 gesetzt wurde
Der Resolver für implizite Abhängigkeiten hat mein neues Framework ignoriert, da die Anforderungen der Zielplattform höher sind als die Anforderungen der App.
Nach dem Anpassen des iOS-Bereitstellungsziels für das Framework an mein Anwendungsbereitstellungsziel wurde das Framework erfolgreich kompiliert und verknüpft.
quelle
Ich habe den gleichen Fehler erhalten, als ich einige Frameworks mit hinzugefügt habe
Cocoapods
. Wenn wir in unserem Projekt Pods verwenden, sollten wirxcodeworkspace
stattdessen Pods verwendenxcodeproject
. Um das Projekt über xcodebuild auszuführen, habe ich-workspace <workspacename>
Parameter imxcodebuild
Befehl hinzugefügt und es hat perfekt funktioniert.quelle
Ich fand, dass das
Import Paths
in derBuild Settings
für ein benutzerdefiniertes (MySQL) Modul falsch war. Nachdem ich das in die richtige Richtung gezeigt hatte, war die Nachricht verschwunden.quelle
find
wenn Sie es nicht wissen.Ich habe das mit behoben
Ziele -> Allgemein -> Verknüpfte Frameworks und Bibliotheken
Fügen Sie das Framework hinzu, das sich oben im
Workspace
Ordner befinden soll. Schmerzen im Arsch.quelle
Ich habe gerade meinen Cocoapod gelöscht. Dann habe ich eine Pod-Installation durchgeführt, um sie zu entfernen. Dann habe ich es einfach wieder in mein Podfile eingefügt und neu installiert. Das hat funktioniert. Nicht sicher warum.
quelle
Ich hatte bereits Pods installiert. Das Erstellen funktionierte problemlos, als ich eine Anwendung auf meinem Gerät erstellte, aber das Archiv funktionierte nicht. Ich renne einfach:
Es wurden keine neuen Pods installiert, nur die .xcodeproj-Datei wurde neu generiert und das Archiv begann zu funktionieren
quelle
In Xcode 10.1 bestand die Lösung für mich darin, das Build-System in den Arbeitsbereichseinstellungen im Menü Datei zu ändern . Es ist standardmäßig auf New Build System eingestellt , hat dies in Legacy Build System geändert und das hat den Trick gemacht.
quelle
Es gibt mehrere mögliche Fehlkonfigurationen, für die das Problem auftreten kann:
.xcworkspace
jedoch nicht.xcodeproj
. Stellen Sie außerdem sicher, dass Sie zuerst erstellt haben,Social
bevor Sie erstellenTriviaApp
.TriviaApp
Bereitstellungsziel festgelegt ist,9.0
muss auch dasSocial
Bereitstellungsziel festgelegt werden9.0
.TriviaApp
) und Ihr verwendetes Framework (Social
) dieselben Konfigurationen haben. dh Wenn Ihr Projekt drei Konfigurationen hat,Debug
,Release
,ReleasePremium
als der Sozial Rahmen müssen auch drei Konfigurationen habenDebug
,Release
,ReleasePremium
. Stellen Sie außerdem sicher, dass die Archivkonfiguration fürTriviaApp
und gleich istSocial
. Wenn also dasTriviaApp
Archivierungsschema Ihres Archivierungsschemas festgelegt ist,ReleasePremium
muss auch dasSocial
Archivierungsschema Ihres Archivierungsschemas festgelegt werdenReleasePremium
.Social
in jede.swift
Datei importieren müssen , wenn diese bereits in der Datei hinzugefügt wurdeBridging-Header.h
.#use_frameworks!
inuse_frameworks!
von IhnenPodfile
. Manchmal funktioniert die Neuinstallation des Pods, wennSocial
eine Abhängigkeit von Pods besteht.quelle
Wenn Sie Karthago verwenden, bleiben die Frameworks in der Gebäudeumgebung normalerweise erhalten
$(PROJECT_DIR)/Carthage/Build/iOS
Wenn Sie
carthage update --platform ios --no-build
die Dateien im Build-Ordner ausführen (um Zeit zu sparen), werden sie nicht neu erstellt, und die Module stehen XCode nicht zur Verfügung.In meinem Fall bin ich gelaufen
carthage update --platform ios
, dann wurde mein Problem gelöst.quelle
In Allgemein => Verknüpfte Frameworks und Bibliotheken habe ich meine hinzugefügt
./Pods/Pods.xcodeproj
und es hat den Trick gemachtquelle
Für mich wurde Build Active Architecture Only für die ausgewählte Konfiguration auf Ja gesetzt. Das hat den Trick gemacht:
Wählen Sie im linken Projektnavigator "Pods" aus.> Wählen Sie "Build Settings"> Build Active Architecture Only to No
quelle
Wenn alle oben genannten Methoden bei Ihnen nicht wie in meinem Fall funktioniert haben. Am Vortag gab es kein Problem, aber am nächsten Morgen hatte ich den gleichen Fehler. Ich habe gerade die Frameworks durch Entfernen von Referenzen entfernt und sie erneut hinzugefügt. Ich weiß, das klingt vielleicht albern, aber voila, es hat funktioniert.
quelle
Ich hatte ein ähnliches Problem beim Laden von FacebookSDK. Ich habe ~ / Documents / FacebookSDK (Suche, wo sich Ihre Frameworks befinden) zu den Framework-Suchpfaden in den Build-Einstellungen hinzugefügt. Danach konnte ich das FBSDKShareKit-Modul importieren
quelle
Für das, was es wert ist (ich bin neu in diesem Bereich mit Xcode 7.2 / Swift 2), aber ich habe festgestellt, dass Sie automatisch Zugriff darauf haben, wenn Sie nur die .swift-Datei aus der Bibliothek im Projektverzeichnis haben und die using-Anweisung nicht benötigen.
Beispiel: Ich verwende SwiftyJSON und nur die Datei SwiftyJSON.swift im Projekt zu haben, war alles, was ich brauchte. Die
using
Anweisung gab mir tatsächlich den Fehler "Kein solches Modul" und das Herausnehmen löste ihn auf, und es funktioniert einwandfrei.quelle