wake-up-neo.net

Mit Swift 4.1.2 kompiliertes Modul kann vom Swift 4.2-Compiler nicht importiert werden

Kurzgeschichte: Xcode 10 ist auf Swift 4 eingestellt, verwendet jedoch Swift 4.2.

Lange Geschichte: Unser Projekt ist noch nicht bereit für Swift 4.2, da unsere abhängigen Frameworks noch nicht Swift 4.2 sind. Aber ich möchte zumindest Xcode 10 verwenden.

  • Ich habe Xcode 9.4.1 und Xcode 10 installiert.
  • Ich habe Command Line Tools zur Verwendung von Xcode 9.4.1 eingestellt:

 enter image description here

  • In Xcode 10 habe ich die Projekteinstellung Swift Language Version auf Swift 4 gesetzt.

 enter image description here

  • Ich habe in der Kommandozeile die Swift-Version der Shell Mit 4.1.2 überprüft:

"Swift --version Apple Swift Version 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)"

  • Ich habe ein Karthago-Update durchgeführt. 
  • Ich habe Xcode 10 beendet und neu gestartet.
  • Ich habe abgeleitete Daten tief gereinigt und gelöscht.
  • Ich baue und bekomme diese Fehlermeldung:

"Mit Swift 4.1.2 kompiliertes Modul kann vom Swift 4.2 Compiler nicht importiert werden: .../App/Carthage/Build/iOS/RealmSwift.framework/Module/RealmSwift.swiftmodule/arm64.swiftmodule"

Für mich bedeutet dies, dass ich meine beabsichtigte Swift-Version (4.1.2) richtig eingestellt habe und Xcode immer noch versucht, die falsche Version von Swift (4.2) zu verwenden.

Hat jemand Vorschläge, wie man das beheben kann? Fehlt mir etwas? Xcode-Fehler?

8
Heliotropix

Ich bin nicht positiv, aber ich schätze, dass dies der Grund ist:

Ich habe Befehlszeilentools zur Verwendung von Xcode 9.4.1 eingestellt

Sie müssen Ihre Swift 4-Abhängigkeiten mit Xcode 10 erneut kompilieren, da Swift nicht ABI-stable ist, d. H. Binärdateien, die mit verschiedenen Compilerversionen kompiliert wurden, nicht kompatibel sind. Sogar Binärdateien für Swift 4.0, die mit verschiedenen Xcode-Versionen kompiliert wurden, sind möglicherweise nicht kompatibel.

Ich habe nicht viel Erfahrung mit Carthage, aber ich schätze, dass Sie Xcode 10 als Befehlszeilenprogramm verwenden sollten, aber Sie müssen eine andere Swift-Sprachversion einstellen, die von Xcode 10 verwendet werden soll. Sie sollte wahrscheinlich in angegeben werden das Projekt (in diesem Fall RealmSwift) oder die Verwendung von Umgebungsvariablen, aber Sie brauchen jemanden, der mit mehr Details zu antworten hat, fürchte ich.

4
FreeNickname

Für die Verwendung von Realm mit Xcode 10 muss der Quellcode erstellt werden. In Terminal schreiben:

git clone --recursive https://github.com/realm/realm-cocoa.git

cd realm-cocoa

sh build.sh ios-Swift

sie können mehrere Swift Toolchains . download url Swift Toolchain-Download verwenden, nachdem Sie einige installiert haben version. starte deinen xcode neu, im xocde menü siehst du die toolchains option.

1
lingyfh

Wenn das Modul mit Cocoapods bezogen wurde, können Sie vom Terminal aus zu Ihrem Poddatei-Verzeichnis navigieren und Folgendes ausführen:

pod install

Dies sollte das Modul für Swift 4.2 neu kompilieren. Es hat für mich funktioniert, hoffe es funktioniert für Sie.

0
Loup G

Ich hatte das gleiche Problem und dann wurde mir klar, dass ich Xcode 10 nicht als meine Xcode ausgewählt hatte. Versuchen:

Sudo xcode-select -s /Applications/Xcode10.app

Wenn Sie zwischen Xcode9 und 10 wechseln, empfehle ich Folgendes: Wenn Sie von 9 auf 10 wechseln, führen Sie mv Carthage Carthage9 aus und erstellen Sie dann Carthage neu. Wenn Sie zurückschalten möchten, verschieben Sie Carthage in Carthage10 und führen Sie mv Carthage9 Carthage aus. Dies erspart Ihnen viel Zeit beim Aufbauen.

0
regina_fallangi