返回
框架打包时,Xcode 12 报错:“have the same architectures (arm64) and can't be in the same fat output file” 的解决办法
IOS
2023-10-28 14:08:51
错误原因:
此错误表明您尝试将具有相同架构(例如 arm64)的两个或多个文件包含在同一个动态库(即框架)中。Xcode 无法将具有相同架构的文件合并到一个二进制文件中,因为这将导致冲突。
解决办法:
要解决此错误,您需要确保您的框架中没有包含具有相同架构的重复文件。有几种方法可以解决此问题:
1. 识别重复文件:
- 检查您的项目,找出哪些文件具有相同的架构。您可以在 Xcode 的“文件检查器”中查看每个文件的架构。
- 如果您有多个目标,请确保每个目标中没有包含相同的文件。
2. 删除重复文件:
- 从框架中删除所有具有相同架构的重复文件。
- 确保只包含每个架构一个文件。
3. 重新构建框架:
- 一旦您删除了重复的文件,请重新构建您的框架。
- Xcode 现在应该能够成功打包您的框架。
4. 检查架构设置:
- 确保您的目标的“构建设置”中的“有效架构”选项正确配置。
- 对于通用框架,应将此选项设置为“armv7、arm64”。
5. 启用 Bitcode:
- 启用 Bitcode 可以帮助 Xcode 创建一个可以在多种设备上运行的通用二进制文件。
- 在 Xcode 的“构建设置”中将“启用 Bitcode”设置为“是”。
示例代码:
以下是使用示例代码的解决方案:
// 错误示例
// main.m
#import "FrameworkA.h"
#import "FrameworkB.h"
// ...
// 解决示例
// main.m
#import "FrameworkA.h"
// ...
在上面的示例中,main.m
文件最初同时包含了 FrameworkA
和 FrameworkB
,它们都具有相同的 arm64 架构。通过从 main.m
中删除 FrameworkB
,我们消除了重复的文件,从而解决了错误。
结论:
通过遵循这些步骤,您可以解决 Xcode 12 中打包框架时出现的“have the same architectures (arm64) and can't be in the same fat output file”错误。确保您的框架中没有重复的文件,并正确配置架构设置。通过仔细遵循这些步骤,您将能够成功构建和打包您的框架。