'Неверная версия битового кода (Производитель:' 902.0.39.2_0 'Читатель:' 900.0.37_0 ')'

Я использую Xcode 9.0.

Мой файл пакета:

pod 'Alamofire', '~> 4.3'
pod 'SwiftyJSON'
pod 'AlamofireSwiftyJSON'
pod 'KSToastView', '0.5.7'
pod 'SDWebImage', '~> 4.0'
pod 'NVActivityIndicatorView'   
pod 'Firebase/Core'
pod 'Firebase/Messaging'
pod 'CarbonKit'
pod 'SBPickerSelector'
pod 'SwiftyStoreKit'    
pod 'Fabric'
pod 'Crashlytics'
pod 'SAMKeychain', '1.5.2'

Мой журнал ошибок:

ld: не удалось повторно проанализировать объектный файл в пакете битового кода: 'Недопустимая версия битового кода (Производитель:' 902.0.39.2_0 'Читатель:' 900.0.37_0 ')', с использованием версии libLTO 'LLVM версии 9.0.0, (clang-900.0.37 ) 'для архитектуры arm64 clang: error: команда компоновщика завершилась неудачно с кодом выхода 1 (используйте -v, чтобы увидеть вызов)

Я прочитал много статей по этой проблеме, но не могу ее решить. Я сослался на это, и да, здесь отмечается, что я хочу создать архив моего проекта с

configuration = Debug
ENABLE_BITCODE = YES
configuration = Release
ENABLE_BITCODE = YES
completeSettings = some
ENABLE_BITCODE = YES

Какие-либо предложения?


person Himanshu Moradiya    schedule 08.09.2018    source источник


Ответы (6)


Шаги для решения этой проблемы:

  • Настройка сборки
  • Найдите параметр «Включить битовый код» в категории «Параметры сборки».
  • Выберите нет.
person Ashish Singh    schedule 25.10.2018
comment
Очень полезный ответ, спасибо! Я установил для него значение «Нет» и построил архив. Затем обновил мою версию Xcode и снова смог создать архив. - person Lucy; 03.11.2019
comment
Я считаю, что это не настоящее решение, а обходной путь. Вы просто отключили битовый код во всем проекте. - person Yucel Bayram; 09.01.2020
comment
Apple предлагает включить битовый код. Его отключение на самом деле не решает эту проблему. - person Ting Yi Shih; 26.05.2020
comment
Это не ответ. Он просто отключает битовый код. Приложение watchOS и tvOS требует битового кода. - person winner.ktw; 18.06.2021

Это также может произойти, если у вас есть две разные версии Xcode, установленные бок о бок, а затем построенная с помощью той, которая указывает на неправильные инструменты командной строки. У меня возникла эта проблема после установки Xcode 10.1 рядом с (обновленным) Xcode 10.2. Мой Xcode 10.1 указывал на инструменты командной строки Xcode 10.2, поэтому связывание не удалось с недопустимой версией битового кода, как и в вашем случае. Исправление было:

  • Измените инструменты командной строки в настройках Xcode -> Расположение -> Инструменты командной строки:  Предпочтения XCode - ›Местоположения

  • Очистите папку сборки и нажмите «Архив».

Вышеупомянутое также действительно для других версий Xcode.

person Aurimas Petrevicius    schedule 29.03.2019
comment
Установка Bitcode на No не позволяет загружать файл dysm на tesflight, что не является правильным вариантом. Я считаю, что это правильный ответ. - person Leena; 02.12.2019

Это связано с тем, что у вас есть некоторые зависимости в вашем проекте (фреймворках), созданном с использованием более новой версии Xcode.

Вам необходимо обновить версию Xcode или отключить битовый код в своем проекте (Проект ›Настройки сборки› Включить битовый код = NO)

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

person Mourad Brahim    schedule 14.09.2018
comment
Я знаю это, но мой вопрос в том, как создать сборку с параметром Enable Bitcode = YES. - person Himanshu Moradiya; 15.09.2018
comment
Насколько я знаю, вам следует использовать более новую версию Xcode. - person Mourad Brahim; 16.09.2018
comment
это влияет на мой другой старый проект. так что теперь я не делаю этого, спасибо за ваш повтор. - person Himanshu Moradiya; 17.09.2018

Как сказал Ривера, некоторые библиотеки, которые вы используете, ожидают Xcode 10 (возможно, Firebase). Так что обходной путь - понизить версию ваших библиотек. Для меня эти версии хорошо работают с Xcode 9 и включенной опцией bitcode:

  pod 'Firebase/Core', '~> 4.13.0'
  pod 'Fabric', '~> 1.7.0'
  pod 'Crashlytics', '~> 3.9.0'

Возможно, вам также следует выяснить, какую старую версию Firebase / Messaging использовать.

Кстати, это одна из причин, по которой разработчикам следует избегать использования модулей без указания конкретной версии (что приведет к загрузке последних версий модулей). Это также может привести к несовместимости версии с вашим кодом, использующим функции модуля.

person SerhiiK    schedule 16.01.2019

Некоторые библиотеки, которые вы используете, ожидают Xcode 10 (возможно, Firebase). Используйте Xcode 10.

person Rivera    schedule 20.09.2018
comment
да, может быть, но я не хочу обновлять свой Xcode, потому что это так влияет на мой старый проект. - person Himanshu Moradiya; 21.09.2018
comment
Не должно. Обновление Xcode не обновляет вашу версию Swift, формат файлов и не изменяет какие-либо параметры сборки. Просто попробуйте и игнорируйте любые предлагаемые новые настройки. - person Rivera; 21.09.2018

Существует большая вероятность того, что версия Xcode, которая скомпилировала sdk pod, выше, чем та, которую вы используете.

Следующая возможная причина - это битовый код в настройках сборки. Убедитесь, что он включен в целевом объекте вашего приложения и в целевом фреймворке. Если вы добавили vis cocoapods, щелкните проект pods в разделе целей, прокрутите вниз до sdk, который выдает эту ошибку, откройте настройки сборки и проверьте статус битового кода.

В моем случае в основном проекте был отключен битовый код, а в SDK внутри проекта модулей он был включен. Отключил и все заработало.

person abhimuralidharan    schedule 16.10.2020