J'ai un framework (dans ce cas c'est RxSwift) que j'ai compilé en utilisant Xcode 11.0 dans le RxSwift.framework
package de style traditionnel
Cela a bien été importé dans Xcode 11.0 et 11.1 n'a jamais eu de problème avec
Aujourd'hui, lors de la sortie d'Apple de Xcode 11.2, j'ai mis à niveau et je reçois l'erreur:
Le module compilé avec Swift 5.1 ne peut pas être importé par le compilateur Swift 5.1.2
Je suis habitué à accélérer les décalages du compilateur, et je suis conscient que je peux simplement recompiler RxSwift à l'aide de Xcode 11.2 et continuer, mais la fonctionnalité principale de Swift 5.1 était la stabilité du module .
J'avais l'impression que maintenant que nous avons la stabilité des modules, les frameworks n'auront plus besoin d'être recompilés avec chaque nouvelle version de Xcode, mais ce n'est clairement pas le cas.
Si quelqu'un peut expliquer ce qui se passe ici, je l'apprécierais beaucoup. Xcode 11.2 présente-t-il un bogue? ou avais-je en quelque sorte besoin de lui dire que je voulais la stabilité du module lorsque j'ai initialement compilé avec Xcode 11.0?
Réponses:
OK, il s'avère que si vous regardez la vidéo de la WWDC, ils l'expliquent: https://developer.apple.com/videos/play/wwdc2019/416/
Vous devez définir l' option Build Libraries for Distribution sur Yes dans les paramètres de construction de votre framework, sinon le compilateur rapide ne génère pas les
.swiftinterface
fichiers nécessaires qui seront la clé pour que les futurs compilateurs puissent charger votre ancienne bibliothèque.Cela se termine dans votre fichier project.pbxproj en tant que:
Après avoir défini cet indicateur, un framework que j'ai compilé à l'aide de Xcode 11.0 (swift 5.1) a pu être utilisé par Xcode 11.2 (swift 5.1.2) et tout semble fonctionner correctement.
J'espère que cette question / réponse servira de référence utile pour tous ceux qui n'ont pas regardé toutes les vidéos de la WWDC
Si l'erreur persiste, accédez à Product > Clean Build Folder and Build again.
la source
carthage
assez intelligent pour récupérer cela dans mon fichier .pbxproj , ou comme @MihaiFratu le dit ci-dessus, tous les développeurs de framework tiers doivent-ils le définir eux-mêmes dans leurs projets de framework?J'ai eu la même erreur lors de l'importation de bibliothèques tierces. Je l'ai corrigé en utilisant des chaînes d'outils dans Xcode et en prenant la sortie le 19 septembre 2019 d'ici https://swift.org/download/#releases . Après cela, j'ai dû réimporter mes bibliothèques et cela a fonctionné.
la source
Vous pouvez utiliser Carthage pour ajouter le framework RxSwift.
Fondamentalement, Carthage vous offre un package de style RxSwift.framework traditionnel similaire .
Alors essayez
carthage update --no-use-binaries
.la source
Cela a fait disparaître mon erreur de compilation.
carthage bootstrap --platform ios
brew bundle
pod repo update
la source
brew bundle
? Qu'est ce que ça fait?