我正在尝试在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)。我在排除的架构中没有任何设置。

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


当前回答

在我的情况下,它是100%工作的。试试看:

我有一个临时的解决方案。

您只需按照图像进行操作。

双击架构并选择“其他”和“删除所有行”添加两件事arm7s和arm7在iPhone上运行物理设备,而不是模拟器享受

其他回答

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

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

// 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

升级到Xcode 12后,我仍然能够为真正的设备构建,但不能为模拟器构建。Podfile构建仅适用于真实设备。

我在Build Settings(构建设置)>User Defined(用户定义)下删除了VALID_ARCHS,它成功了!在发现这个之前,我先捶了一下脑袋。

将此添加到我的pod文件的末尾修复了错误:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64 i386"
    end
  end
end

在我的例子中,我试图在发布模式下运行watchOS 7模拟器,但iOS 14模拟器处于调试模式。

因此,简单地将两个模拟器置于调试/发布模式就解决了我的问题!

请不要忘记在将arm64添加到排除的体系结构后清理构建文件夹。

您可以通过进入菜单>产品>清理构建文件夹或简单地按Command+Shift+K来完成此操作。