У меня есть фреймворк (в данном случае это RxSwift), который я скомпилировал с использованием Xcode 11.0 в традиционный RxSwift.framework
пакет стилей
Это нормально импортируется в Xcode 11.0, а также 11.1 никогда не было проблем с ним
Сегодня, после выпуска Apple Xcode 11.2, я обновился, и мне сообщают об ошибке:
Модуль, скомпилированный с помощью Swift 5.1, не может быть импортирован компилятором Swift 5.1.2
Я привык быстро компилировать несоответствия компиляторов и знаю, что могу просто перекомпилировать RxSwift с использованием Xcode 11.2 и продолжить, но главной особенностью Swift 5.1 была стабильность модуля .
У меня сложилось впечатление, что теперь, когда у нас есть стабильность модуля, фреймворкам не нужно будет перекомпилироваться с каждым новым выпуском XCode, но это явно не так.
Если кто-нибудь может объяснить, что здесь происходит, я был бы очень признателен. Xcode 11.2 показывает ошибку? или мне как-то нужно было сказать, что я хотел стабильности модуля при первоначальной компиляции с Xcode 11.0?
Ответы:
Хорошо, оказывается, если вы смотрите видео WWDC, они объясняют это: https://developer.apple.com/videos/play/wwdc2019/416/
Вам необходимо установить для параметра « Сборка библиотек для распространения» значение « Да» в настройках сборки вашего фреймворка, иначе быстрый компилятор не сгенерирует необходимые
.swiftinterface
файлы, которые будут ключом к тому, чтобы будущие компиляторы могли загружать вашу старую библиотеку.Это заканчивается в вашем файле project.pbxproj как:
После установки этого флага платформа, которую я скомпилировал с использованием Xcode 11.0 (swift 5.1), могла использоваться Xcode 11.2 (swift 5.1.2), и все, кажется, работает правильно.
Надеюсь, этот вопрос / ответ послужит полезным справочным материалом для всех, кто не смотрел все видео WWDC.
Если ошибка не устранена, перейдите в Product > Clean Build Folder и выполните Build снова.
источник
carthage
Достаточно ли умен, чтобы взять это из моего файла .pbxproj , или, как говорит @MihaiFratu выше, все сторонние разработчики фреймворка должны сами устанавливать это в своих проектах фреймворков?У меня была такая же ошибка при импорте сторонних библиотек. Я исправил это, используя наборы инструментов в XCode и взяв релиз 19 сентября 2019 года здесь https://swift.org/download/#releases . После этого мне пришлось повторно импортировать мои библиотеки, и это работало.
источник
Вы можете использовать Carthage для добавления фреймворка RxSwift.
По сути, Carthage предоставляет вам аналогичный традиционный пакет в стиле RxSwift.framework .
Тогда попробуй
carthage update --no-use-binaries
.источник
Это заставило мою ошибку компилятора исчезнуть.
carthage bootstrap --platform ios
brew bundle
pod repo update
источник
brew bundle
? Что это делает?