【问题标题】:xcode 7.1 swift framework app builds but not archivingxcode 7.1 swift 框架应用程序构建但不归档
【发布时间】:2015-11-07 07:53:12
【问题描述】:

我在 Swift 中创建了一个示例框架,xcode 7.1。 然后为 Profiling 发布的版本构建框架。 发布的框架然后添加(嵌入)到 iOS 测试应用程序中。

应用程序构建良好,但在尝试存档时。发生错误,说明 “无法生成位码包,因为 '.../Test/FW.framework/FW' 是在没有完整位码的情况下构建的。位码的所有框架和 dylib 必须从 Xcode 存档或安装架构 arm64 的构建中生成”

Framework 和 app 项目处于默认设置,同时启用 Bitcode。

为了确保框架有位码,框架上的这个命令

“otool -l FW.framework/FW | grep __LLVM”

产量

segname __LLVM

segname __LLVM

segname __LLVM

segname __LLVM

我错过了什么? 我已将两个项目here 包含在内,您可以下载它们并尝试存档。

【问题讨论】:

  • 似乎位码格式不匹配。框架是通过归档导出的吗?
  • 不,只是为 Profiling 构建的,然后在“Release-iphoneos”中找到了 FW.framework 以及一个单独的文件“FW.framework.dSYM”。
  • 如何通过归档导出?当我归档框架时,它说构建成功并且没有任何反应。我是否需要查找存档的框架输出文件
  • 也许也可以为存档作品构建,但要允许将其放入存档中,请将构建设置设置为“跳过安装为 NO”
  • 成功了,谢谢!我为此快疯了。请添加步骤作为答案,我会接受。 (框架项目上的“跳过安装到否”,然后存档,使用保存构建的产品导出,并且该框架输出文件在启用位码的情况下工作)

标签: ios xcode swift


【解决方案1】:

xcode 要求在归档期间生成所有嵌入式框架的位码。

复制 framework/dylib 的发布版本是不够的


归档框架,然后使用框架的归档版本。

要让 xcode 归档框架(通常它只归档应用程序),请将框架目标的构建设置“跳过安装”设置为 NO!

【讨论】:

  • 它可以工作,但还不够...项目现在使用框架成功构建,但是在上传到 iTunesConnect 时我收到一个错误...
  • ` 验证期间出错存档不包含 <0x7f9bea07f750:>
【解决方案2】:

如果您可以构建框架,则可以进行以下操作(例如,如果您使用自己的框架)

这将允许您的框架提供所需的位码。


如果您没有 watchOS 和 Apple TV(根据文档),另一个替代选项可能适用

对于 iOS 应用,位码是默认设置,但可选。如果您提供 bitcode,应用程序包中的所有应用程序和框架都需要包含 位码。对于 watchOS 和 tvOS 应用,需要位码。

此选项要求将 buildSetting 中每个目标的 ENABLE_BITCODE 设置为 NO,但正如预期的那样,这禁止使用位码功能。

更多关于bitcode here

【讨论】:

  • 我认为这个答案也应该得到一些赞誉。使用这种方法,您不必在归档过程中运行框架。
  • 这是一个比公认答案更好的解决方案。仅供未来可能看到此内容的人参考。
  • 这对我有用,构建为存档没有。在 XCode 8.3 上
  • 很好的答案。为我工作,在 XCode 9.0 上没有构建存档。
  • @Bem 我有这个问题:stackoverflow.com/questions/54437778/… 添加 BITCODE_GENERATION_MODE 在这种情况下也有帮助吗?
猜你喜欢
  • 2016-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-29
  • 2015-12-10
  • 1970-01-01
  • 1970-01-01
  • 2018-12-11
相关资源
最近更新 更多