Модуль, скомпилированный с Swift 4.0, не может быть импортирован в Swift 4.0.1
Однако я перекомпилировал фреймворк, используя тот же Xcode, и он все еще дает мне эту ошибку.
- Базовый SDK iOS 11.1 для обоих
- Swift Language Version Swift 4.0 для обоих
- Не использовать Pods/Carthage
Я надеюсь, что кто-то может знать
Ответы
Ответ 1
Обновить:
Для версий выпуска Xcode:
Эта ошибка (и аналогичные ошибки, связанные со Swift 4.1, 4.2 и т.д.) Будут возникать при открытии проекта с Xcode 9.1, 9.2, 9.3, 9.4, 10 и т.д., В котором используются интегрированные среды, созданные с помощью более ранних инструментов Xcode.
Чтобы решить эту проблему, обновите и перестройте свои фреймворки, используя Carthage (carthage update --platform iOS
), Cocoapods (pod update
pod install
или pod install
) или вручную, с помощью новых обновленных инструментов Xcode. Инструменты должны обновляться автоматически при обновлении XCode, но если нет, вы можете выполнить шаги, описанные ниже в оригинальном ответе.
Вам также может понадобиться очистить ваш проект cmd + shift + k
и, возможно, вашу папку сборки cmd + option + shift + k
чтобы Xcode не использовал сборки из кэшированных фреймворков.
В некоторых случаях вам также может понадобиться удалить папку с производными данными (это легко найти, перейдя в "Настройки XCode" → "Местоположения" → "Папка производных данных" (спасибо Stunner).
Для бета-версий Xcode:
Смотрите оригинальный ответ ниже, а затем следуйте инструкциям выше.
Оригинальный ответ:
Вероятно, у вас все еще установлены инструменты xcodebuild для Xcode 9.0, который собирается с Swift 4.0 и несовместим с Xcode 9.1 beta Swift 4.0.1.
Проверьте в терминале, используя команду:
xcodebuild -version
Или просто зайдите в настройки Xcode → Locations и проверьте/измените инструменты командной строки на Xcode 9.1. Вы должны быть установлены тогда.
Ответ 2
Моя проблема была связана с тем, что внешняя структура не была скомпилирована для Swift 4.0.2. Я добавил этот файл через Карфаген, поэтому запустил:
carthage update --platform iOS
А затем очистка проекта cmd + shift + k
и сборка папки cmd + option + shift + k
и удаление папки с производными данными (также просто перемещение ее в мусорную корзину) помогли мне.
Ответ 3
Установите XCode Toolchain определенной версии XCode, которая работала для вас отсюда.
Набор инструментов Xcode включает в себя копию компилятора, lldb и других связанных инструментов, необходимых для обеспечения целостного опыта разработки для работы в определенной версии Swift.
Откройте "Настройки XCode", перейдите к "Компоненты"> "Наборы инструментов" и выберите установленный набор инструментов Swift.
Это позволит вам скомпилировать и запустить приложение на данный момент.
Ответ 4
В моем случае я скачал бета-версию xCode 11 для тестирования SwiftUI. Когда я запускаю свой проект, я получаю "Модуль, скомпилированный с помощью Swift 5.1, не может быть импортирован компилятором Swift 5.0.1:...".
Чтобы решить эту проблему. я изменил инструмент командной строки xCode на новый инструмент строки комментариев xCode 11. После этого вы можете создать новый проект xcode с SwiftUI.
Xcode → Настройки → Местоположение → Инструмент командной строки XCode
![Xcode Commend Line Tool]()
Надеюсь, это поможет кому-то, кто захочет протестировать с новым freamework :)
Ответ 5
Я решил эту проблему с бета-версией Xcode 10, которая добавляет Swift 4.2. Моя проблема не была связана с Карфагеном или каких-либо внешних зависимостей.
Перейдите к YourTarget > Build Settings > Swift Language Version
для всех ваших целей XCode.
У меня все было настроено на Swift 4
.
После добавления фазы сборки файлов копирования я начал получать сообщение об ошибке
: 0: ошибка: модуль, скомпилированный с использованием Swift 4.1.2, не может быть импортирован компилятором Swift 4.2: /Users/user/Library/Developer/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyAppbu MyAppExtension.build/Objects-normal/x86_64/MyClass~partial.swiftmodule
Сбой команды MergeSwiftModule с ненулевым кодом выхода
Затем я установил для каждой целевой Swift Language Version
Swift 4.2
, что устранило ошибку.
Я не уверен, почему ошибка произошла, во-первых, поскольку все цели, установленные в Swift 4
должны быть одинаково действительны.
Ответ 6
В моем случае (Xcode 9.2):
Я пошел в Preferences > Locations > Derived Data
XCode Preferences > Locations > Derived Data
Затем я удалил данные, сделал чистую сборку и все было в порядке.
Ответ 7
В моем случае я использовал CocoaPods с плагином cocoapods-binary
для предварительной сборки библиотек в двоичные файлы. После того, как я обновил Xcode с 10 до 11, Xcode выдает мне эту ошибку:
Module compiled with Swift 5.0.1 cannot be imported by the Swift 5.1 compiler
Я исправил это, удалив каталог /Pods
и запустив pod install
.