返回

框架打包时,Xcode 12 报错:“have the same architectures (arm64) and can't be in the same fat output file” 的解决办法

IOS

错误原因:

此错误表明您尝试将具有相同架构(例如 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 文件最初同时包含了 FrameworkAFrameworkB,它们都具有相同的 arm64 架构。通过从 main.m 中删除 FrameworkB,我们消除了重复的文件,从而解决了错误。

结论:

通过遵循这些步骤,您可以解决 Xcode 12 中打包框架时出现的“have the same architectures (arm64) and can't be in the same fat output file”错误。确保您的框架中没有重复的文件,并正确配置架构设置。通过仔细遵循这些步骤,您将能够成功构建和打包您的框架。