Skip to content

M1 芯片Xcode编译IOS出错-React Native on Apple Silicon M1

背景说明

近期更换了MBP14,项目上需要编译IOS(react native项目),在使用真机进行测试没有任何问题,在进行模拟器运行的时候无法正确编译,故不能在模拟器上运行。

问题说明

React Native项目因为使用了极光推送。
运行编译的时候报错信息如下:

 The linked library 'libPods.a' is missing one or more architectures required by this target: x86_64.

问题分析

首先可以确定的是xcode 编译运行ios应该是没有任何问题,因为M1也是arm架构,而ios也是arm架构。
但是报错是因为一个链接库需要x86_64架构。
在M1之前都是X86架构运行ios模拟器,在编译的时候默认会转译到x86模式进行编译,而现在m1不支持x86指令,故出错误。
问题核心应该是设置对应的编译平台,不使用默认的配置。

问题解决

  1. 简单的方法是使用Rosetta.
    操作步骤如下:

    1. 删除相应数据: /Users/<username>/Library/Developer/Xcode/DerivedData
    2. xcode右键->显示简介->勾选Rosetta。
    或者:
    1. 执行 softwareupdate --install-rosetta
  2. 修改相关参数
    1. 修改项目配置->Build Settings-> Excluded Architecture->Relese/Debug-> Any iOS Simulator SDK 设置值 arm64;
    2. 修改Pod配置->Build Settings-> Excluded Architecture->Relese/Debug-> Any iOS Simulator SDK 设置值 arm64;
    3. 修改podfile文件。
      post_install do |installer|
      installer.pods_project.build_configurations.each do |config|
      config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
      end
      end
    4. 重建构建pod
      rm -rf ~/Library/Developer/Xcode/DerivedData/
      pod deintegrate
      pod instsall
      pod update
发表评论

电子邮件地址不会被公开。 必填项已用*标注