为iOS模拟器构建Xcode,但链接到为iOS和体系结构构建的目标文件中。 [英] Xcode building for iOS Simulator, but linking in an object file built for iOS, for architecture 'arm64'

查看:27
本文介绍了为iOS模拟器构建Xcode,但链接到为iOS和体系结构构建的目标文件中。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试获得一个大的(并在Xcode11上工作!)在Xcode 12(测试版5)中构建项目,为iOS 14做准备。以前的代码库位于Objective-C中,但现在它同时包含了Objective-C和SWIFT,并且还使用了Objective-C和/或SWIFT的Pod。

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

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

为iOS模拟器构建,但链接到为iOS和体系结构ARM构建的目标文件64

可能还有错误:

无法加载目标‘arm64-Apple-ios11.0’的标准库

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

以前,项目将有效体系结构设置为:ARMv7、armv7s和arm64。

根据苹果的文档,在Xcode12中,该设置消失了。架构设置为$(ARCS_STANDARD)。我没有在排除的体系结构中设置任何内容。

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

推荐答案

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

  • 为此,请导航到项目的构建设置,并在排除的体系结构内添加任何iOS模拟器SDK

  • 如果您使用的是自定义XCConfig文件,则只需添加此行即可排除模拟器架构。

    EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
    

    然后

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

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

    您可以在Pod项目的生成设置中手动添加排除的体系结构,但当您 使用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
    

这篇关于为iOS模拟器构建Xcode,但链接到为iOS和体系结构构建的目标文件中。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆