ios - 为 iOS 模拟器构建 Xcode,但链接到为 iOS 构建的目标文件,适用于架构 'arm64'

标签 ios xcode xcode12 xcode12beta5 xcode12beta6

我正在尝试在 Xcode 12(beta 5)中构建一个大型(并且正在使用 Xcode 11!)项目来为 iOS 14 做准备。代码库以前在 Objective-C 中,但现在它包含 Objective-C 和 Swift,并使用 Objective-C 和/或 Swift 的 pod。
我已拉取 CocoaPods 的新测试版支持 Xcode 12(当前为 1.10.0.beta 2)。
Pod 安装成功。当我进行构建时,我在 pod 框架上收到以下错误:

building for iOS Simulator, but linking in object file built for iOS, for architecture arm64


也可能是错误:

Unable to load standard library for target 'arm64-apple-ios11.0'


当我运行时lipo -info在框架上,它有:armv7s armv7 i386 x86_64 arm64。
以前,该项目将有效架构设置为:armv7、armv7s 和 arm64。
根据 Apple 的文档,在 Xcode 12 中,该设置消失了。架构设置为 $(ARCHS_STANDARD)。我没有在排除架构中设置任何内容。
这里可能发生了什么?我还不能用一个更简单的项目来重现这个。

最佳答案

基本上,您必须排除 arm64对于来自您的项目和 Pod 项目的模拟器架构,

  • 为此,请导航至 build设置 并添加任何 iOS 模拟器 SDK 值为 arm64在排除架构内。
    Enter image description here


  • 如果您使用自定义 XCConfig文件,您可以简单地添加这一行来排除模拟器架构。
    EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
    
    那么
    您必须为 做同样的事情 pod 项目直到所有 Cocoa pod 供应商都完成在他们的 中添加以下内容播客规范 .
    s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
    s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }
    
    您可以在 Pod 项目的 中手动添加 Excluded Architecturebuild设置 , 但当你
    使用 pod install .
    取而代之的是,您可以在您的 Podfile 中添加此代码段。 .它将写入必要的 build设置 每次运行 pod install .
    post_install do |installer|
      installer.pods_project.build_configurations.each do |config|
        config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
      end
    end
    
  • 关于ios - 为 iOS 模拟器构建 Xcode,但链接到为 iOS 构建的目标文件,适用于架构 'arm64',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63607158/

    相关文章:

    SwiftUI:多平台 iOS/MacOS 的图像

    ios - AVSpeechSynthesizer 改变声音

    ios9 UIAlertController uitextfield 太小

    ios - XCode 7.3 和 Swift 2.0 十进制键盘,带点 (".") 而不是逗号 (",")

    ios - 使用 pod 时没有生成 xcworkspace

    xcode12 - 升级到 Xcode 12 :ld: building for iOS Simulator, 但在为 iOS 构建的 dylib 中链接后出现问题,架构 arm64

    ios - 无法覆盖 UIViewController 中的 UITableView 委托(delegate)方法

    ios - 在 Xcode 中过滤包含多行字符串的控制台输出

    iphone - 用计数索引对数组进行排序

    swift - “找不到构建输入文件”Swift 4.2、Xcode 10.0