Модуль, скомпилированный с Swift 4.2.1, не может быть импортирован компилятором Swift 5.0 - PullRequest
29 голосов
/ 26 марта 2019

Я пытаюсь реализовать интеграцию стороннего приложения в проект согласно инструкции https://github.com/Paytm-Payments/Paytm_iOS_App_Kit/tree/master/Swift/BitCodeDisabled/PaytmNativeSDK

Я вижу следующую ошибку в сборке

Модуль, скомпилированный с Swift 4.2.1не может быть импортирован компилятором Swift 5.0

Я пробовал набор инструментов https://medium.com/xcblog/switching-swift-versions-inside-xcode-using-toolchains-755b28831c43 Ошибка изменяется на Причина: Несовместимая версия библиотеки: PaytmNativeSDK требует версию 1.0.0 или новее, но libswiftCore.dylibпредоставляет версию 0.0.0

Как настроить XCode или библиотеку, чтобы она работала.Производитель не может обновить библиотеку Swift 5.0 и сделать ее доступной для POD.

Ответы [ 6 ]

11 голосов
/ 26 марта 2019

Для пользователей Carthage: После обновления до Xcode 10.2 я столкнулся с той же проблемой с каркасом, который я импортировал с помощью Carthage.

Я решил это путем перестройки фреймворка:

carthage update --no-use-binaries --platform iOS
3 голосов
/ 27 марта 2019

Правильное решение - скачать Xcode 10.1 и подождать, пока Apple исправит ошибку.

Не тратьте время на исправление сторонней ошибки.


Проблема моего проекта в том, что мы используем Alamofire, который не удалось обновить в Карфагене.

2 голосов
/ 05 апреля 2019

Я хотел использовать Swift 4.2 (который Xcode 10.2 все еще должен поддерживать, я установил его в версии Swift Language), но он все равно дал мне ошибку о компиляторе Swift 5.0.Поэтому после попытки очистить все, например, папку сборки, производные данные и прочее, я пришел к выводу, что это не работает на Xcode 10.2.

Я вернулся к Xcode 10.1, который можно загрузить здесь .Это работает.Поэтому, пока Apple не исправит эту ошибку, я вынужден оставаться на Xcode 10.1.

1 голос
/ 18 мая 2019

Разработчикам фреймворка необходимо предоставить обновление, встроенное в Xcode 10.2.

Объяснение для разработчиков фреймворка:
Даже если вы создали платформу в Xcode 10.2 или с версией по умолчанию, используемой CI, ваши пользователи все равно могут столкнуться с такой ошибкой. Вы должны убедиться, что Xcode 10.2 является вашим инструментом командной строки по умолчанию. Вы можете проверить это в терминале с помощью команды xcodebuild -version. Версия по умолчанию может быть скорректирована в Xcode -> Preferences -> Locations -> Command Line Tools.

1 голос
/ 28 марта 2019

Это произойдет, если у вас есть внешние библиотеки в вашем проекте, которые все еще построены с использованием компилятора 4.2, тогда как новый Xcode пытается построить ваш проект в компиляторе 5.0.

В моем случае у меня было несколько библиотек, импортированных с использованием Carthage,К счастью, библиотеки, которые я использовал, выпустили обновления за последние несколько дней, что делает его совместимым с компиляторами Swift 5.0.Если эти внешние библиотеки не обновили его для поддержки Swift 5.0, возможно, вам пока не повезло.

В пути вы можете столкнуться с небольшим количеством проблем, и вот несколько рекомендаций, чтобы избежать дальнейших проблем.

  1. Полностью удалите папку cartfile.resolved и Carthage
  2. Убедитесь, что вы удалили любую копию библиотек, добавленных в ваш проект ранее.
  3. Удалите встроенные библиотеки и связанные структуры и библиотеки из ваших Targets> Yourapp> General.
  4. Product> Очистите папку сборки
  5. Обновите файл корзины и загрузите новые источники, используякоманда обновления Carthage
  6. Теперь импортируйте библиотеки обратно в ваш проект.

Надеюсь, это сработает.

0 голосов
/ 22 апреля 2019

Моя проблема с Carthage была связана с фазой xcode, которая копирует двоичные файлы в фазе «Carthage Copy-Frameworks».

Я немного отличался от того, что было прокомментировано в https://stackoverflow.com/a/55362536/721929,, потому чтоэто решение также обновляет версии зависимостей в некоторых случаях.

Итак, я только что выполнил «сборку карфагена».Я также включил очистку кеша для Carthage, чтобы исправить возможные ошибки в подзадачах (в моем случае, сбой в git clone с «кодом выхода 1» )

rm -rf ~/Library/Caches/org.carthage.CarthageKit
carthage build --no-use-binaries --platform iOS --verbose
...