我正在尝试做的事情:

我正在尝试在xcode11中构建一个cocoapods框架,然后在iOS SDK中使用它。

我尝试了什么:

  • Enable Bitcode设置为yes
  • 在构建框架之前,我分别将Other C flags设置为-fembed-bitcode-fembed-bitcode-marker进行发布和调试。
  • 我还将用户定义的构建设置设置为BITCODE_GENERATION_MODEbitcode,作为marker
  • 为模拟器和设备构建;设置发布的发布方案。
  • 按照this文章使用lipo构建胖框架。

  • 我面临的问题:

    将框架的预发布版本发布到Cocoapods之后,我将其安装在SDK中。设备(发行版)的SDK生成失败,并显示以下消息:
    ld: bitcode bundle could not be generated because '/Users/sourobratasarkar/Library/Developer/Xcode/DerivedData/Beaconstac-dpnhqvwchyqaeyavlbmfsntqlgnn/Build/Products/Release-iphoneos/EddystoneScanner/EddystoneScanner.framework/EddystoneScanner' was built without full bitcode. All frameworks and dylibs for bitcode must be generated from Xcode Archive or Install build file '/Users/sourobratasarkar/Library/Developer/Xcode/DerivedData/Beaconstac-dpnhqvwchyqaeyavlbmfsntqlgnn/Build/Products/Release-iphoneos/EddystoneScanner/EddystoneScanner.framework/EddystoneScanner' for architecture armv7
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    它说该框架是为架构arm7而构建的,没有完整的位代码。

    构建框架时我缺少什么吗?使用lipo -info我可以看到存在arm7体系结构。

    PS:构建成功进行调试(包括设备和模拟器)和发布(模拟器)。

    最佳答案

    事实证明,构建框架的方式没有问题。将以下内容添加到使用框架的SDK的Podfile中可以解决此问题:

    post_install do |installer|
        installer.pods_project.targets.each do |target|
            target.build_configurations.each do |config|
                config.build_settings['BITCODE_GENERATION_MODE'] = 'bitcode'
                config.build_settings['ENABLE_BITCODE'] = 'YES'
            end
        end
    end
    

    10-07 19:14
    查看更多