Ich habe das Framework jedoch mit demselben Xcode neu kompiliert und es gibt mir immer noch diesen Fehler.
- Basis-SDK iOS 11.1 für beide
- Swift Language Version Swift 4.0 für beide
- Pods / Karthago nicht benutzen
Ich hoffe, jemand könnte es wissen
Ich habe das Framework jedoch mit demselben Xcode neu kompiliert und es gibt mir immer noch diesen Fehler.
Ich hoffe, jemand könnte es wissen
Antworten:
Aktualisieren:
Für Release-Versionen von Xcode:
Dieser Fehler (und ähnliche Fehler bei Swift 4.1, 4.2 usw.) tritt auf, wenn ein Projekt mit Xcode 9.1, 9.2, 9.3, 9.4, 10 usw. geöffnet wird, das Frameworks verwendet, die mit früheren Xcode-Tools erstellt wurden.
Um das Problem zu beheben, aktualisieren und carthage update --platform iOS
erstellen Sie Ihre Frameworks mithilfe von Carthage ( ), Cocoapods ( pod update
oder pod install
) oder manuell mit den neuen aktualisierten Xcode-Tools neu. Die Tools sollten automatisch aktualisiert werden, wenn Sie Xcode aktualisieren. Andernfalls können Sie die in der ursprünglichen Antwort unten beschriebenen Schritte ausführen.
Möglicherweise müssen Sie auch Ihr Projekt cmd + shift + k
und möglicherweise Ihren Build-Ordner bereinigen cmd + option + shift + k
, damit Xcode keine zwischengespeicherten Framework-Builds verwendet.
In einigen Fällen müssen Sie möglicherweise auch Ihren abgeleiteten Datenordner löschen (leicht zu finden, indem Sie zu Xcode-Einstellungen -> Speicherorte -> Abgeleiteter Datenordner gehen ( Danke Stunner ).
Für Beta-Versionen von Xcode:
Siehe die ursprüngliche Antwort unten und befolgen Sie dann die obigen Schritte.
Ursprüngliche Antwort:
Wahrscheinlich sind Ihre xcodebuild-Tools immer noch auf Xcode 9.0 eingestellt, das mit Swift 4.0 erstellt wird und nicht mit Swift 4.0.1 von Xcode 9.1 Beta kompatibel ist.
Checken Sie das Terminal mit dem folgenden Befehl ein:
xcodebuild -version
Oder gehen Sie einfach zu Xcode-Einstellungen -> Standorte und überprüfen / ändern Sie die Befehlszeilen-Tools in Xcode 9.1. Sie sollten dann eingestellt sein.
Swift Language Version
zu Swift 4
für diejenigen. Dann hat es funktioniert.
Mein Problem war darauf zurückzuführen, dass ein externes Framework für Swift 4.0.2 nicht kompiliert wurde. Ich hatte diese Datei über Karthago hinzugefügt , also läuft:
carthage update --platform iOS
Und dann hat es für mich funktioniert, das Projekt zu cmd + shift + k
bereinigen cmd + option + shift + k
und den Ordner zu erstellen und den abgeleiteten Datenordner zu löschen (lediglich in den Papierkorb zu verschieben).
In meinem Fall habe ich die xCode 11 Beta-Version heruntergeladen, um SwiftUI zu testen. Beim Ausführen meines Projekts wurde der Fehler "Mit Swift 5.1 kompiliertes Modul kann vom Swift 5.0.1-Compiler nicht importiert werden: ..." angezeigt .
Um dieses Problem zu beheben. Ich habe das xCode-Befehlszeilentool in ein neues xCode 11-Kommentarzeilentool geändert. Danach können Sie mit SwiftUI ein neues xcode-Projekt erstellen.
Xcode -> Einstellungen -> Speicherort -> XCode-Befehlszeilen-Tool
Ich hoffe, dies wird jemandem helfen, der mit neuen Freameworks testen möchte :)
Installieren Sie von hier aus die Xcode Toolchain einer bestimmten Xcode-Version, die für Sie funktioniert hat .
Eine Xcode-Toolchain enthält eine Kopie des Compilers, der lldb und anderer verwandter Tools, die erforderlich sind, um eine zusammenhängende Entwicklungserfahrung für die Arbeit in einer bestimmten Version von Swift bereitzustellen.
Öffnen Sie die Xcode-Einstellungen, navigieren Sie zu Komponenten> Toolchains und wählen Sie die installierte Swift-Toolchain aus.
Auf diese Weise können Sie die App vorerst kompilieren und ausführen.
Ich bin auf dieses Problem mit Xcode 10 Beta gestoßen, das Swift 4.2 hinzufügt. Mein Problem hatte nichts mit Karthago oder externen Abhängigkeiten zu tun.
Gehen Sie zu YourTarget > Build Settings > Swift Language Version
für alle Ihre Xcode-Ziele.
Meine waren alle bereit Swift 4
.
Nach dem Hinzufügen einer Erstellungsphase zum Kopieren von Dateien wurde der Fehler angezeigt
: 0: Fehler: Mit Swift 4.1.2 kompiliertes Modul kann vom Swift 4.2-Compiler nicht importiert werden: /Users/user/Library/Developer/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyApp.build/Debug/ MyAppExtension.build/Objects-normal/x86_64/MyClass~partial.swiftmodule
Der Befehl MergeSwiftModule ist mit einem Exit-Code ungleich Null fehlgeschlagen
Ich habe dann jedes Ziel Swift Language Version
auf gesetzt Swift 4.2
, wodurch der Fehler behoben wurde.
Ich bin mir jedoch nicht sicher, warum der Fehler überhaupt aufgetreten ist, da alle Ziele Swift 4
gleichermaßen gültig sein sollten.
Build Settings
In meinem Fall (Xcode 9.2):
Ich ging zu Xcode Preferences > Locations > Derived Data
Ich habe dann die Daten gelöscht und einen sauberen Build durchgeführt und war in Ordnung.
In meinem Fall habe ich CocoaPods mit Plugin verwendet cocoapods-binary
, um Bibliotheken für Binärdateien vorab zu erstellen. Nachdem ich Xcode von 10 auf 11 aktualisiert habe, gibt Xcode folgende Fehlermeldung aus:
Module compiled with Swift 5.0.1 cannot be imported by the Swift 5.1 compiler
Ich behebe es, indem ich das /Pods
Verzeichnis entferne und ausführe pod install
.
In meinem Fall habe ich das Framework mit der Version neu kompiliert, über die es sich beschwert hat.
Um das Karthago neu zu kompilieren, auszuführen pod update
oder zu aktualisieren (welches auch immer Sie verwenden), und erstellen Sie das Projekt.
Suchen Sie dann im Finder nach dem Framework. Kopieren theFramework.framework
Sie das Projekt in Ihr Projekt und stellen Sie sicher, dass Sie "Elemente bei Bedarf kopieren". Erstellen Sie das Projekt erneut und es sollte funktionieren.