存档时编译框架会提供位码错误

时间:2019-01-07 21:24:22

标签: ios objective-c swift cocoa ios-frameworks

已经苦苦挣扎了几天...基本上,我已经构建了一个已编译的发布框架,并与cocoaPods一起分发了它。问题在于,然后将此框架应用程序存档会出现以下错误:

ld: bitcode bundle could not be generated because '/.../testingPodsAcrossversions/Pods/Pod/Pod.framework/Pod' was built without full bitcode. All frameworks and dylibs for bitcode must be generated from Xcode Archive or Install build file '/.../testingPodsAcrossversions/Pods/Pod/Pod.framework/Pod' for architecture arm64

我做了这些事情:

搜索“启用位码”设置,并将其设置为“调试”和“释放”模式。

搜索位码设置。在调试和发布模式下添加-fembed-bitcode,也可以在调试和发布模式中添加-fembed-bitcode-marker -fembed-bitcode处于“释放”模式。

在“用户定义”设置下添加BITCODE_GENERATION_MODE ,然后为“调试”和“发布”模式添加位代码,或者您可以在“调试”和“发布”模式中添加位标记。

我只需要发行版本,所以我没有构建通用框架,只是发行版本...我真的想解决这个问题,因为这对我来说是一场噩梦。

2 个答案:

答案 0 :(得分:1)

如果您使用的是Pod,请尝试将其添加到Podfile(它为我解决了相同的问题):

getAcceptedTransferMode()

答案 1 :(得分:0)

详细信息

  • Xcode版本11.3.1(11C504)

解决方案

在podfile的末尾添加以下代码

def enable_bitcode_in(config)
  cflags = config.build_settings['OTHER_CFLAGS'] || ['$(inherited)']
  if config.name == 'Release'
    cflags << '-fembed-bitcode'
    config.build_settings['BITCODE_GENERATION_MODE'] = 'bitcode'
  else # 'Debug'
    cflags << '-fembed-bitcode-marker'
    config.build_settings['BITCODE_GENERATION_MODE'] = 'marker'
  end
  config.build_settings['OTHER_CFLAGS'] = cflags
end

def enable_bitcode_for(targets)
  targets.each do |target|
    target.build_configurations.each do |config|
      enable_bitcode_in(config)
    end
  end
end

post_install do |installer|
  enable_bitcode_for(installer.pods_project.targets)
end