FacebookCore не может связаться из-за ошибок битового кода FBSDKCoreKit - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь использовать Facebook SDK в Swift . Он будет компилироваться и запускаться в симуляторе и локально на моем устройстве. Однако попытка архивировать или встроить конфигурацию выпуска не удалась.

ld: bitcode bundle could not be generated because '/.../DerivedData/FacebookSwift-xyz/Build/Products/Release-iphoneos/FBSDKCoreKit.framework/FBSDKCoreKit' 
    was built without full bitcode. All frameworks and dylibs for bitcode must be 
    generated from Xcode Archive or Install build file '/.../DerivedData/FacebookSwift-xyz/Build/Products/Release-iphoneos/FBSDKCoreKit.framework/FBSDKCoreKit' 
    for architecture arm64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

Как воспроизвести

Загрузите или клонируйте Facebook SDK в проекте Swift , отредактируйте схему FacebookCore для создания конфигурации выпуска.

Запустите Карфаген, чтобы снять зависимости, facebook-ios-sdk и др.

imageFacebookCore scheme to build the Release config">

Сборка проекта теперь выдаст ошибку; bitcode bundle could not be generated because '.../FBSDKCoreKit' was built without full bitcode

Настройки проекта

  • Для цели FBSDKCoreKit в подпроекте FBSDKCoreKit "Enable Bitcode" установлено на "YES".
  • Цель FacebookCore также имеет "Включить битовый код", установленный на "ДА".
  • Цель FacebookCore имеет 2 зависимости цели; Болты и FBSDKCoreKit, оба являются версиями динамического фреймворка.

Исследование

Я попытался построить схему FBSDKCoreKit-Dynamic (в конфигурации выпуска), и это успешно. Результирующий Framework имеет битовый код (насколько я могу судить), который работает: otool -l "/path/to/framework-binary" | grep -c __LLVM возвращает 4.

Выполнение file в двоичном коде возвращает:

/.../FBSDKCoreKit.framework/FBSDKCoreKit: Mach-O universal binary with 2 architectures: [arm_v7:Mach-O dynamically linked shared library arm_v7] [arm64:Mach-O 64-bit dynamically linked shared library arm64]
/.../FBSDKCoreKit.framework/FBSDKCoreKit (for architecture armv7):  Mach-O dynamically linked shared library arm_v7
/.../Release-iphoneos/FBSDKCoreKit.framework/FBSDKCoreKit (for architecture arm64): Mach-O 64-bit dynamically linked shared library arm64

Инструменты и т. Д.

  • Xcode 9.4.1
  • facebook-sdk-swift - версия 0,31
  • facebook-ios-sdk (Objective-C) - версия 4.34
  • Карфаген v0.30.1
  • Цель развертывания; iOS 8.0 для фреймворков Facebook
  • Базовый SDK: iOS 11.4 (Latest iOS)
  • LLVM v9.0

1 Ответ

0 голосов
/ 24 июля 2018

Это было проблемой в течение долгого времени, я помню, что занимался этим несколько месяцев назад. Ваша проблема заключается, скорее всего, в целевой версии ОС (8.0). В FBSDKCoreKit флаг битового кода включен с iOS11.0. Вы можете попробовать отключить битовый код для главной цели, чтобы она могла скомпилироваться. (Или увеличьте целевую версию ОС до 11, но я полагаю, что это не вариант)

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