Ich habe einen Rahmen (in diesem Fall seinen RxSwift) , die ich zusammengestellt habe mit Xcode 11.0 in den traditionellen RxSwift.framework
Stil - Paket
Dies importierte gut in Xcode 11.0 und auch 11.1 hatte nie Probleme damit
Heute, nach der Veröffentlichung von Xcode 11.2 durch Apple, habe ich ein Upgrade durchgeführt und es wird der folgende Fehler angezeigt:
Mit Swift 5.1 kompiliertes Modul kann vom Swift 5.1.2-Compiler nicht importiert werden
Ich bin es gewohnt, dass Compiler nicht übereinstimmen, und ich bin mir bewusst, dass ich RxSwift einfach mit Xcode 11.2 neu kompilieren und weitermachen kann, aber die Hauptfunktion von Swift 5.1 war die Modulstabilität .
Ich hatte den Eindruck, dass Frameworks jetzt, da wir über Modulstabilität verfügen, nicht mehr bei jeder neuen Xcode-Version neu kompiliert werden müssen, aber dies ist eindeutig nicht der Fall.
Wenn jemand erklären kann, was hier los ist, würde ich es sehr schätzen. Zeigt Xcode 11.2 einen Fehler? oder musste ich irgendwie sagen, dass ich Modulstabilität wollte, als ich ursprünglich mit Xcode 11.0 kompiliert habe?
Antworten:
OK, es stellt sich heraus, wenn Sie das WWDC-Video ansehen, erklären sie es: https://developer.apple.com/videos/play/wwdc2019/416/
Sie müssen die Option " Bibliotheken für die Verteilung erstellen" in den Build-Einstellungen Ihres Frameworks auf " Ja" setzen. Andernfalls generiert der schnelle Compiler nicht die erforderlichen
.swiftinterface
Dateien, die der Schlüssel für zukünftige Compiler sind, die Ihre alte Bibliothek laden können.Dies endet in Ihrer project.pbxproj-Datei als:
Nach dem Setzen dieses Flags konnte ein mit Xcode 11.0 (swift 5.1) kompiliertes Framework von Xcode 11.2 (swift 5.1.2) verwendet werden und alles scheint korrekt zu funktionieren.
Hoffentlich dient diese Frage / Antwort als nützliche Referenz für alle, die nicht alle WWDC-Videos gesehen haben
Wenn der Fehler weiterhin besteht, gehen Sie zu Produkt > Build-Ordner bereinigen und erneut erstellen .
quelle
carthage
klug genug, dies aus meiner .pbxproj- Datei zu übernehmen, oder müssen, wie @MihaiFratu oben sagt, alle Framework-Entwickler von Drittanbietern dies selbst in ihren Framework-Projekten festlegen?Ich hatte den gleichen Fehler beim Importieren von Bibliotheken von Drittanbietern. Ich habe es mithilfe von Toolchains in Xcode behoben und die Veröffentlichung vom 19. September 2019 von hier https://swift.org/download/#releases übernommen . Danach musste ich meine Bibliotheken erneut importieren und es funktionierte.
quelle
Sie können Karthago verwenden, um das RxSwift-Framework hinzuzufügen.
Grundsätzlich bietet Ihnen Karthago ein ähnliches traditionelles RxSwift.framework-Stilpaket .
Dann versuchen Sie es
carthage update --no-use-binaries
.quelle
Dadurch verschwand mein Compilerfehler.
carthage bootstrap --platform ios
brew bundle
pod repo update
quelle
brew bundle
? was tut es?