Подтвердить что ты не робот

Xcode 8 beta 4: сбой сборки: "Следующие двоичные файлы используют несовместимые версии Swift:"

С новым Xcode 8 beta 4 мы начали испытывать следующую ошибку во время фазы сборки CopySwiftLibs:

Effective srcDirs: {(

    <DVTFilePath:0x7f865961e970:'/Volumes/Data/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator'>,

    <DVTFilePath:0x7f8657d02b20:'/Volumes/Data/Xcode-beta.app/Contents/Developer/Toolchains/Swift_2.3.xctoolchain/usr/lib/swift/iphonesimulator'>

)}

error: Следующие двоичные файлы используют несовместимые версии Swift:

/Users/пользователь/Проекты/git/iphone-swift-1/DerivedData/myApp/Build/Products/Debug-iphonesimulator/myApp.app/myApp

/Users/пользователь/Проекты/git/iphone-swift-1/myApp/myAppApi.framework/myAppApi

myAppApi - это подпроект в рабочей области, который содержит некоторый общий код (он использует Alamofire).

Одно замечание: первоначально мы преобразовали проект из Swift 2.2 в Swift 2.3, а затем вручную обновили до 3.0.

Кто-нибудь знает, что может вызвать эту ошибку?

Спасибо!

4b9b3361

Ответ 1

У меня была та же проблема, но мне удалось исправить ее:

  • Очистите проект.
  • Закрыть проект и выйти из Xcode.
  • Очистить полученные данные.
  • Откройте проект снова, и он там, все красиво и работает.

Я сделал это на Xcode 8 с помощью Swift 3.

Ответ 2

Вы также можете получить эту проблему, если у вас сценарий кода вашего контейнера - Swift 2.3, и вы создаете новое расширение в Xcode 8.

Чтобы решить описанный выше сценарий...

Примечание.. Весь код должен быть в той же быстрой (совместимой) версии для компиляции без сбоев.

Как говорится, один из способов решения этой проблемы - придерживаться Swift 2.3, а затем установить для своей цели расширения Использовать устаревшую версию языка Swift в "Да".

Вы можете найти эту опцию, когда Xcode 8 открыт следующим образом:

  • Выберите корень проекта приложения в Навигаторе проектов (с левой стороны)
  • С правой стороны выберите расширение в разделе TARGETS раздел
  • Как только расширение будет выбрано, перейдите на вкладку Настройки сборки
  • Прокрутите вниз и найдите Использовать устаревшую версию языка Swift и установите ее в Да из раскрывающегося меню.
  • Теперь вы можете создать проект

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

Ответ 3

Прежде чем что-либо делать...

(Если вы можете использовать Xcode 8.0-совместимый с вашим проектом)

По умолчанию ваш проект установлен на Xcode 3.2-совместимый

  • Выберите проект приложения в Навигаторе (с левой стороны)
  • Выберите Документ проекта в панели Утилиты (на правая сторона)
  • Изменить Формат проекта на Xcode 8.0-совместимый

Попробуйте создать свой проект.

Если это не сработает, попробуйте другие предлагаемые решения.

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

Рекомендация: Перед отладкой существующего проекта. Закройте проект и запишите копию файла проекта, если вы не создали репозиторий Git при создании своего проекта.

Ответ 4

Я исправил это, удалив встроенные двоичные файлы в проекте. Для этого:

  • Откройте рабочую область/проект в Xcode.
  • Перейдите к фактическому файлу проекта (с лентой General, Capabilities и т.д.).
  • Перейдите в раздел Общие > Встраиваемые двоичные файлы, удалите, выбирая те, которые вам не нужны, а затем нажмите знак минуса.

Примечание 1: Вам не нужно удалять их из раздела "Связанные рамки и библиотеки" (они должны быть автоматически удалены при удалении из "Встроенных двоичных файлов" ).

Примечание 2: У меня много зависимостей, и я использую CocoaPods. У меня ничего нет в "Встроенных бинарных файлах" и только "Pods_ [YourApplicationName].framework" в разделе "Связанные рамки и библиотеки".

Ответ 5

У меня были разные библиотеки, интегрированные через carthage. Однако во время процесса я переключил некоторые из них на cocoapods и забыл удалить старый .frameworks файл из целевой цели проекта.

Удаление их разрешило ошибку сборки.

Ответ 6

У меня просто была такая же проблема после обновления Xcode до 9.3. Я исправил проблему, просто очистив папку сборки. Вы можете сделать это с помощью Command-Option-Shift-K или в меню параметров "Продукт" → "Очистить" (см. Скриншот)

You can clean the build folder with Command-Option-Shift-K or in the option menu "Product" -> "Clean"

Ответ 7

У меня такая же проблема. Моим решением было переименовать myApp -directory в myAppmyApp, а затем я снова запустил приложение. Было создано новое приложение myApp -directory, и приложение снова отлично заработало на моем iPhone.

Разница в вашей ситуации может заключаться в следующем: имя моего приложения, скажем, "myApp" в каталоге "DerivedData", было связано с myApp: "-"

Может быть, это поможет вам.

Ответ 8

Вам нужно переключить все зависимости на swift 3. В вашем случае Alamofire необходимо переключить на swift 3 branch

Ответ 9

У меня было такое же сообщение об ошибке после добавления версии фреймворка Swift 3.

Моя цель framework search path по-прежнему была настроена так, чтобы найти версию с быстрым 2 и быстрым 3 той же структуры, поэтому мой проект застрял в быстрой версии 2.3.

Для меня решение заключалось в том, чтобы удалить прежнюю структуру из моего каталога проекта и удалить ссылку на папку из framework search path.

Ответ 10

Итак, я просто опубликую решение, которое я нашел до сих пор после отладки часа.

Так как Xcode 9, это можно отследить в журнале компилятора.

Если вы прокрутите страницу вниз до конца журнала компилятора, вы обнаружите, что эта проблема вызвана сбоем проверки типов.

введите описание изображения здесь

Ответ 11

Только что это всплыло после обновления до Xcode 10.2... один из моих модулей использует Swift. Исправить было:

pod repo update
rm -rf Pods
pod install