我正在尝试在Xcode 12(beta 5)中构建一个大型(正在开发Xcode 11!)项目,为iOS 14做准备。代码库以前是Objective-C中的,但现在它同时包含Objective-C和Swift,并使用Objective-C或Swift的pod。

我已经推出了支持Xcode 12的CocoaPods新测试版(目前为1.10.0.beta 2)。

Pod安装成功。当我进行构建时,在pod框架上出现以下错误:

为iOS模拟器构建,但链接到为iOS构建的对象文件中,用于体系结构arm64

以及可能的错误:

无法加载目标“arm64-apple-ios11.0”的标准库

当我在框架上运行lipo-info时,它有:armv7s armv7 i386 x86_64 arm64。

此前,该项目的有效架构设置为:armv7、armv7s和arm64。

在Xcode 12中,根据苹果的文档,该设置将消失。架构设置为$(ARCH_STANDARD)。我在排除的架构中没有任何设置。

这里可能发生了什么?我还没能用一个更简单的项目重现这一点。


当前回答

截至2022年9月19日,所有现有答案都不适用于我。大多数答案建议将arm64从构建设置中排除,完成后,会出现致命错误:找不到模块映射文件

对我有用的是使用Rosseta打开Xcode,

右键单击应用程序文件夹中的Xcode显示简介使用Rosetta检查打开打开Xcode打开的项目清理生成文件夹运行项目

通过使用Rosseta打开Xcode,不需要其他构建设置或配置。

参考文献:

https://medium.com/timeless/starting-react-native-project-in-apple-mac-m1-chip-system-28da0c1f2132https://developer.apple.com/forums/thread/670006

其他回答

在切换到Macbook Pro M1 App Silicon后,我也遇到了同样的错误。对我有效的解决方案:

删除Podfile.lock运行pod安装就是这样。

将行“arm64”(不带引号)添加到路径:Xcode*→ 项目→ 生成设置→ 体系结构→ 排除的架构。

此外,对Pods执行同样的操作。在这两种情况下,对于调试和发布字段。

或者详细地说。。。

这里提到的使用Xcode 12部署到模拟器时的错误也是影响我的一个因素。只需右键单击我的每个项目并在finder中显示,在Atom中打开.xcodeproj,然后通过.pbxproj并删除所有VALIDARCHS设置。这就是它对我起作用的原因。

我尝试了其他一些建议(不包括arm64,仅构建活动体系结构),这些建议似乎让我的构建更进一步,但最终让我陷入了另一个错误。首先检查VALIDARCH设置可能是最好的。

我也遇到了通过迦太基安装的特定库的相同问题。对于那些正在使用迦太基的人来说,由于迦太基并没有现成的Xcode 12,本文档将指导您找到一种适用于大多数情况的解决方法。很快,Carthage构建了胖框架,这意味着该框架包含所有受支持架构的二进制文件。在引入Apple Silicon之前,它都工作得很好,但现在出现了冲突,因为存在重复的架构(arm64用于设备,arm64用于模拟器)。这意味着迦太基无法将特定于架构的框架链接到单个胖框架。

你可以按照这里的说明操作。迦太基XCODE 12

然后配置迦太基。在构建设置中将arm64置于“排除的体系结构”中。

尝试使用模拟器运行项目。模拟器应运行无任何错误。

这是唯一对我有用的东西:

将此添加到调试(非发布)版本:

// Speed up non-production builds by building only for the currently selected architecture
ONLY_ACTIVE_ARCH = YES

// For unknown reasons we need this to be able to compile for simulators in Apple Silicon macOS without Rosetta
VALID_ARCHS = arm64 armv7 arm64-ios-simulator

并删除所有配置(调试和发布)的EXCLUDED_ARCHS设置的所有自定义实例,包括臭名昭著的EXCLUDE D_ARCHS[sdk=iphonesimulator*]=arm64 one。

这些是我在进行这些更改后进行的测试,所有测试都通过了,在原生Apple Silicon上(Xcode没有Rosetta模式):

Debug Staging Release
Build & Run on Device
Build & Run on Simulator
Archive
Validated against App Store Connect N/A N/A

在xxx.framework podspec文件中,添加以下配置。避免使用包含arm64模拟器架构的pod包。

s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }