小编典典

为 iOS 模拟器构建 Xcode,但在为 iOS 构建的对象文件中链接,用于架构“arm64”

all

我正在尝试在 Xcode 12(测试版 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。

根据 Apple 的文档,在 Xcode 12 中,该设置消失了。架构设置为 $(ARCHS_STANDARD)。我没有在排除架构中设置任何内容。

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


阅读 134

收藏
2022-03-04

共1个答案

小编典典

基本上,您必须从您的项目和 Pod 项目中排除arm64模拟器架构,

  • 为此,导航到项目的 Build Settings 并在 Excluded Architecture 中添加具有值的 Any iOS Simulator SDKarm64 __

在此处输入图像描述

要么

  • 如果您使用的是自定义XCConfig文件,您可以简单地添加这一行来排除模拟器架构。
    EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
    

然后

您必须对 Pod 项目 执行相同的操作,直到所有 Cocoa pod 供应商完成在其 Podspec 中添加以下内容。

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

您可以在 Pod 项目的 Build Settings* 中手动添加 Excluded Architecture ,但使用时会被覆盖。
*pod install

取而代之的是,您可以将此代码段添加到您的Podfile. 每次运行时它都会编写必要的 构建设置pod install

    post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
    config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
  end
end
2022-03-04