由于FBSDKCoreKit bitcode错误,FacebookCore无法链接

rjs*_*ing 8 xcode facebook objective-c swift bitcode

我正在尝试在Swift中使用Facebook SDK.它将在模拟器中编译并运行,并在我的设备上本地运行.但是,尝试存档或构建版本配置失败.

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)
Run Code Online (Sandbox Code Playgroud)

如何重现

在Swift项目中下载或克隆Facebook SDK,编辑FacebookCore方案以构建发布配置.

运行迦太基以降低依赖性,facebook-ios-sdk等.

设置<code>bitcode bundle could not be generated because '.../FBSDKCoreKit' was built without full bitcode</code></p>

<h1>项目设置</h1>

<ul>
<li><code>FBSDKCoreKit</code>FBSDKCoreKit子项目中的目标将

  • FacebookCore目标也有"启用位码"设置为"YES".
  • FacebookCore靶具有2间靶的依赖关系; Bolts和FBSDKCoreKit都是动态框架版本.
  • 调查

    我试图构建FBSDKCoreKit-Dynamic方案(在Release配置中)并且成功.生成的框架有bitcode(据我所知),运行: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
    
    Run Code Online (Sandbox Code Playgroud)

    工具等

    • Xcode 9.4.1
    • facebook-sdk-swift 是版本0.31
    • facebook-ios-sdk (Objective-C)是版本4.34
    • 迦太基v0.30.1
    • 部署目标; 用于Facebook框架的iOS 8.0
    • 基础SDK:iOS 11.4(Latest iOS)
    • LLVM v9.0

    And*_* M. 4

    这个问题已经存在很长一段时间了,我记得几个月前对此进行过调查。您的问题很可能在于目标操作系统版本(8.0)。在 FBSDKCoreKit 中,从 iOS11.0 开始启用位码标志。您可以尝试关闭主目标的位码以使其编译。(或者将目标操作系统版本提高到 11,但我认为这不是一个选择)