Es scheint, dass Apple diese 10-jährige Verfallsmitteilung für Ziel C überdenken muss: ^) Dies hat mich jetzt bei> 1 Projekt gebissen und bei beiden handelt es sich um binäre Frameworks von Drittanbietern.
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 iOSerstellen Sie Ihre Frameworks mithilfe von Carthage ( ), Cocoapods ( pod updateoder 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 + kund 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.
Ich habe auch abgeleitete Daten gelöscht und das Projekt bereinigt. Ich weiß nicht, ob es für alle notwendig ist, aber hier schien es zu sein. Vielen Dank
Simon
3
Hallo @Zig. Ein Repo, das ich auf Github (mattdonnelly / swifter) verwende, ist bei Swift 4.0, wurde aber offensichtlich mit XCode 9.0 kompiliert, daher tritt dieses Problem auf. Welche Schritte sind erforderlich, um den Cocoapod eines anderen Benutzers auf Github für XCode 9.1 und höher neu zu kompilieren?
Joseph Beuys 'Mutter
1
Gibt es eine Möglichkeit, ein Befehlszeilenprogramm hinzuzufügen? Ich habe nur Xcode 9.3 in meiner Befehlszeilen-Dropdown-Liste. und ich habe auch dieses Problem
Tara Löwenzahn
1
Einige meiner Hülsen sind nicht bereit für Swift 4.2, also musste ich den Stift Swift Language Versionzu Swift 4für diejenigen. Dann hat es funktioniert.
Skofgar
1
Plus 1 für die Verknüpfung zum Bereinigen des Build-Ordners - wusste ich nicht, wie man es ohne weiteres macht.
Matt
25
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 + kbereinigen cmd + option + shift + kund den Ordner zu erstellen und den abgeleiteten Datenordner zu löschen (lediglich in den Papierkorb zu verschieben).
Dies ist in der Tat im Wesentlichen die Lösung. Das gleiche passierte heute (18. April) aufgrund des neuesten schnellen Updates von Apple! :)
Fattie
cmd + option + shift + k ist der Trick nach der Aktualisierung von Karthago. Vielen Dank!
Leonardo Leite
15
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.
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.
Nachdem ich 2 Tage lang jede mögliche Lösung mit Karthago-Update, Bootstrap, schnellen Spracheinstellungen usw. gesucht und ausprobiert hatte, fand ich hier die richtige Antwort :)
memresubasi
7
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 Versionfü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 Versionauf 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 4gleichermaßen gültig sein sollten.
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 Swift5.0.1 cannot be imported by the Swift5.1 compiler
Ich behebe es, indem ich das /PodsVerzeichnis 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 updateoder zu aktualisieren (welches auch immer Sie verwenden), und erstellen Sie das Projekt.
Suchen Sie dann im Finder nach dem Framework. Kopieren theFramework.frameworkSie das Projekt in Ihr Projekt und stellen Sie sicher, dass Sie "Elemente bei Bedarf kopieren". Erstellen Sie das Projekt erneut und es sollte funktionieren.
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
oderpod 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 bereinigencmd + 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:
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.
quelle
Swift Language Version
zuSwift 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:
Und dann hat es für mich funktioniert, das Projekt zu
cmd + shift + k
bereinigencmd + option + shift + k
und den Ordner zu erstellen und den abgeleiteten Datenordner zu löschen (lediglich in den Papierkorb zu verschieben).quelle
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 :)
quelle
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.
quelle
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
Ich habe dann jedes Ziel
Swift Language Version
auf gesetztSwift 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.quelle
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.
quelle
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:Ich behebe es, indem ich das
/Pods
Verzeichnis entferne und ausführepod install
.quelle
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.quelle