首页 > 解决方案 > 构建具有通过 podspec 集成的外部依赖项的通用 (FAT) iOS 框架时的位码问题

问题描述

我的目标是构建一个可以在 iOS 设备和模拟器中使用的通用框架。我希望能够使用 cocoapods 分发这个框架,我也能够成功地做到这一点。

我的框架有一些外部依赖项,主要的是AWSLambda,我包含在我的 podspec 中,这似乎给了我这个问题。

我能够通过手动将框架拖入测试项目或通过可可豆荚安装它来构建我的框架并将其嵌入到测试项目中。在这两种情况下,在设备或模拟器上运行项目都没有问题,一切正常。

但是,当我尝试存档测试项目以将其提交给 TestFlight 时,该过程失败,关键警告是FrameworkName was built without full bitcode.

一个流行的解决方案是将启用位码设置为否,但是我认为这不是该项目的正确解决方案,至少因为我正在构建一个将集成到其他项目并要求客户端应用程序禁用位码的框架似乎不是正确的方法。如果它是一个个人应用程序,我可能会采取这条路线。

所以为了解决这个问题,我从stackoverflow那里得到了一些帮助,这就是我尝试的 这个stackoverflow首先回答

  1. 在框架项目的Build Settings中设置为Other C Flags-fembed-bitcode

  2. 在框架目标的构建设置中添加一个用户定义的标志,其值为BITCODE_GENERATION_MODEbitcode

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

我尝试过在这里重复了类似的答案。

这是我尝试过的另一个答案,该人建议将 Skips Install 设置为 No 并存档框架而不是构建框架。

在尝试独立或组合使用此功能时,我的框架的构建仍然失败,但这一次它不是指我的框架,而是指我的 pod 依赖项 AWSLambda

将此添加到 podfile似乎解决了构建框架的问题,但是我再次面临要求用户将其包含到他们的 podfile 中的挑战,这对我来说并不专业,或者我可能是错的?

我想知道当涉及到依赖项的此类错误时我的选择是什么,有什么办法可以克服这个问题吗?

我不确定这些东西是否可以添加到 podspec 中来克服这些挑战。

我可能不得不在某个地方做出妥协,但如果能就如何解决这个问题获得一些建议会很好。

谢谢

标签: iosxcodecocoapodsbitcodexcframework

解决方案


推荐阅读