美文网首页
for architecture arm64

for architecture arm64

作者: ttdiOS | 来源:发表于2023-10-07 11:07 被阅读0次

    Xcode12,13,14 在使用模拟器(Simulator)时编译错误的解决方法

    就是说在真机上可以运行 模拟器上运行失败报出: for architecture arm64

    Showing All Messages

    In /Users/mac/Desktop/adancing/eredar/eredar/Pods/APBToygerFacade/APBToygerFacade.framework/APBToygerFacade(APBToygerGuideTask.o), building for iOS Simulator, but linking in object file built for iOS, file '/Users/mac/Desktop/adancing/eredar/eredar/Pods/APBToygerFacade/APBToygerFacade.framework/APBToygerFacade' for architecture arm64

    Showing All Messages

    Linker command failed with exit code 1 (use -v to see invocation)

    解决方法:

    1、Xcode11 项目中模拟器会编译为x86_64,但Xcode12的模拟器基于苹果Apple Silicon architecture执行,需要编译为arm64运行在模拟器上。许多第三方库(如Firebase,AFNetworking等)并未提供Xcode12版本的更新支持,导致报错。

    2、Xcode12 开始移除编译设置(Bulid Settings)中的 Valid Architectures的宏定义。当项目使用Xcode12打开时候,会在User-Defines(项目的Bulid Settings里面)中自动生成VALID_ARCHS宏定义。如果旧项目存在于此冲突的宏定义,会导致编译失败。

    如何修复?

    第一步:添加 arm64 到 simulator architecture 中。主项目和pod项目都需要。

    在主项目和pod项目的PROJECT的Build Settings中,搜索Excluded Architecture ,添加 Any iOS Simulator SDK,value填入 arm64

    注意:在pod项目的build setting是cocopod自动生成的,本次修改在下次更新第三方库时候会被覆盖,可以添加脚本在Podfile中,防止每次安装和更新都需要手动修改。

    post_install do |installer|

      installer.pods_project.build_configurations.each do |config|

        config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"

      end

    end

    第二步:在主项目和pod项目的PROJECT的Build Settings中,删除VALID_ARCHS(整个删除,不能只删除value留下Key)

    ————————————————

    可以参考这里:

    原文链接:https://blog.csdn.net/babylv1/article/details/109395657

    相关文章

      网友评论

          本文标题:for architecture arm64

          本文链接:https://www.haomeiwen.com/subject/pwrkbdtx.html