ios - 构建具有通过 podspec 集成的外部依赖项的通用 (FAT) iOS 框架时的位码问题
问题描述
我的目标是构建一个可以在 iOS 设备和模拟器中使用的通用框架。我希望能够使用 cocoapods 分发这个框架,我也能够成功地做到这一点。
我的框架有一些外部依赖项,主要的是AWSLambda,我包含在我的 podspec 中,这似乎给了我这个问题。
我能够通过手动将框架拖入测试项目或通过可可豆荚安装它来构建我的框架并将其嵌入到测试项目中。在这两种情况下,在设备或模拟器上运行项目都没有问题,一切正常。
但是,当我尝试存档测试项目以将其提交给 TestFlight 时,该过程失败,关键警告是FrameworkName was built without full bitcode.
一个流行的解决方案是将启用位码设置为否,但是我认为这不是该项目的正确解决方案,至少因为我正在构建一个将集成到其他项目并要求客户端应用程序禁用位码的框架似乎不是正确的方法。如果它是一个个人应用程序,我可能会采取这条路线。
所以为了解决这个问题,我从stackoverflow那里得到了一些帮助,这就是我尝试的 这个stackoverflow首先回答
在框架项目的Build Settings中设置为
Other C Flags
-fembed-bitcode
在框架目标的构建设置中添加一个用户定义的标志,其值为
BITCODE_GENERATION_MODE
bitcode
在框架项目和目标中,
Enable Bitcode
都应该设置在Yes
我尝试过在这里重复了类似的答案。
这是我尝试过的另一个答案,该人建议将 Skips Install 设置为 No 并存档框架而不是构建框架。
在尝试独立或组合使用此功能时,我的框架的构建仍然失败,但这一次它不是指我的框架,而是指我的 pod 依赖项 AWSLambda。
将此添加到 podfile似乎解决了构建框架的问题,但是我再次面临要求用户将其包含到他们的 podfile 中的挑战,这对我来说并不专业,或者我可能是错的?
我想知道当涉及到依赖项的此类错误时我的选择是什么,有什么办法可以克服这个问题吗?
我不确定这些东西是否可以添加到 podspec 中来克服这些挑战。
我可能不得不在某个地方做出妥协,但如果能就如何解决这个问题获得一些建议会很好。
谢谢
解决方案
推荐阅读
- python - Plesk + Python Flask - 在第二个网站上配置代理不起作用
- firebase - 如何在 2 个 vue-native 应用程序之间进行通信
- java - 从 OPC 服务器循环收集数据
- awk - 用字符替换特定列中的空格
- rust - Rust:如何限制 Iterator::next() 的生命周期?
- amazon-web-services - 启用 iam DB 授权的 Neptune 中的全文搜索查询执行问题
- java - 在使用 FileInputStream 对 main 方法使用 Junit 测试时使用 assertThrows
- reactjs - 映射列表时如何显示正确的工具提示文本?
- java - 如何在android 10中通过意图共享图像
- java - 我在java中处理文件时遇到问题