【问题标题】:Bitcode bundle could not be generated (while archiving) because Static Framework (.framework) was built without full bitcode无法生成位码包(存档时),因为静态框架 (.framework) 是在没有完整位码的情况下构建的
【发布时间】:2018-12-11 13:13:48
【问题描述】:

我们正在尝试在我们的静态框架中完全启用 Bitcode,但是当我们能够在模拟器或设备上构建它时,当框架与其集成时,我们在归档应用程序时收到以下错误。

ld: bitcode bundle could not be generated because '.framework/p-iOS(PTFWOperationPrepareTransaction.o)' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build file '.framework/p-iOS' for architecture armv7

我们已通过otool -l Versions/A/p-iOS | grep __bitcode 验证了 Bitcode 状态,并且似乎已正确启用 .

以下是我们在框架端对 bitcode 的项目设置,

以下是我们在应用端对 bitcode 的项目设置,

一个谦虚的请求: 请查看上面屏幕截图中的设置,因为我们已经检查了 SO 上的所有相关查询,因此请不要将它们作为参考。

另外,我们已经尝试Static Libraries, Frameworks, and Bitcode 来修复我们的问题。

提前致谢。

【问题讨论】:

标签: ios xcode xcode9 ios-frameworks bitcode


【解决方案1】:

我构建的框架也有这个问题。 这对我有用:

  1. 在框架projectBuild Settings中将Other C Flags设置为-fembed-bitcode

  2. 在框架targetBuild Settings中添加一个名为BITCODE_GENERATION_MODE的用户定义标志,其值为bitcode

    李>
  3. 在框架项目和目标中,Enable Bitcode应该设置在Yes

【讨论】:

    【解决方案2】:

    这个问题困扰了我很长时间,和你一样,我做了我能做的一切,但仍然没有用。最后我发现这是我在Podfile做的一个愚蠢的配置:

    target 'MySDK' do
      project 'Src/MySDK.xcodeproj'
    end
    target 'Demo' do
      project 'Demo/Demo.xcodeproj'
    
      pod 'MySDK', :path => $spec_path
    end
    

    由于我的 SDK 没有任何依赖项,所以我添加了这样一个目标来自动将我的 SDK 项目添加到由 cocoapods 创建的工作区中。

    因此,即使此目标没有任何依赖关系,此操作也会在我的 SDK 中创建 libPods-MySDK.a 并将其添加到 Build Phases - Link Binary With Libraries 中。

    这会导致与您相同的问题。

    解决方法很简单,删除podfiles中的空target,删除无效的PodsFrameworks目录,删除Build Phases中的pod相关配置。

    【讨论】:

      猜你喜欢
      • 2021-01-18
      • 1970-01-01
      • 2019-10-12
      • 2021-08-13
      • 2020-09-01
      • 1970-01-01
      • 2021-01-15
      • 2016-10-23
      • 1970-01-01
      相关资源
      最近更新 更多