Модуль, скомпилированный с помощью Swift 5.1, не может быть импортирован компилятором Swift 5.1.2 - PullRequest
50 голосов
/ 01 ноября 2019

У меня есть фреймворк (в данном случае это 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?

Ответы [ 3 ]

46 голосов
/ 01 ноября 2019

OK, оказывается, если вы смотрите видео WWDC, они объясняют это: https://developer.apple.com/videos/play/wwdc2019/416/

Вам необходимо установить Сборка библиотек для распространения на Да в настройках сборки вашего фреймворка, иначе компилятор swift не сгенерирует необходимые .swiftinterface файлы, которые являются ключом к тому, что будущие компиляторы смогут загрузить вашу старую библиотеку.

Это заканчивается в вашем проекте.pbxprojфайл как:

BUILD_LIBRARY_FOR_DISTRIBUTION = YES;

После установки этого флага, фреймворк, который я скомпилировал с использованием Xcode 11.0 (swift 5.1), смог скомпилироваться с Xcode 11.2 (swift 5.1.2), и все, кажется, работает правильно.

Надеюсь, этот вопрос / ответ послужит полезным справочным материалом для всех, кто не смотрел все видео WWDC

0 голосов
/ 15 ноября 2019

Я начал видеть ту же проблему и обнаружил, что я использовал неправильные инструменты командной строки xcode. Перешел в «Настройки»> «Местоположения» и изменил инструменты командной строки с Xcode 11.1 на 11.2.1. На всякий случай я также очистил каталог производных данных и запустил carthage build.

0 голосов
/ 12 ноября 2019

У меня была такая же ошибка при импорте сторонних библиотек. Я исправил это, используя наборы инструментов в XCode и взяв релиз 19 сентября 2019 года отсюда https://swift.org/download/#releases. После этого мне пришлось повторно импортировать мои библиотеки, и это работало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...