Apple Silicon M1 Mac 中的 Xcode 错误“为 iOS 模拟器构建,但在为 iOS 构建的 dylib .. for 架构 arm64”中链接

2024-05-15

我有一个应用程序,可以在物理设备和 iOS 模拟器中使用英特尔处理器的旧 Mac 上编译和运行良好。

同样的应用程序也可以在配备 M1 处理器的较新 Apple Silicon Mac 上编译并正常运行physicaliPhone 设备,but它拒绝为 iOS 模拟器进行编译。

如果没有模拟器支持,调试周转时间会变得非常长,所以我正在尝试解决这个问题。更不用说 Xcode 预览功能也不起作用,这很烦人。

我在没有进行任何更改(但从 Intel Mac 移至 M1 Mac)的情况下遇到的第一个错误如下所示。

为 iOS 模拟器构建,但链接到为 iOS 构建的 dylib,文件 '/Users/andy/workspace/app/Pods/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/WebRTC' 用于架构 arm64

我使用的 Cocoapods 库是 GoogleWebRTC,根据its doc https://cocoapods.org/pods/GoogleWebRTC,应该支持arm64,所以我很困惑为什么会抛出上述错误。正如我之前所说,它在真实设备中编译得很好,我相信它是在 arm64 上运行的。

根据医生的说法..

该 Pod 包含二进制形式的 WebRTC iOS SDK。这是一个动态的 包含armv7、arm64和x86_64切片的库。位码是 不支持。我们当前提供的 API 仅适用于 Objective C。

我在网上搜索了一下它出现 https://stackoverflow.com/questions/63607158/xcode-12-building-for-ios-simulator-but-linking-in-object-file-built-for-ios此问题似乎有 2 个解决方法。

  1. 第一个是添加arm64 to Excluded Architectures
  2. 第二个选项是标记Build Active Architecture Only for Release build.

即使我在运行于arm64架构下的M1 Mac上编译我的应用程序,我也不完全明白上述是否有必要,因为该解决方案似乎仅适用于不支持arm64模拟器的Intel Mac,至于Intel Mac ,模拟器可能在 x86_64 中运行,而不是在 arm64 中运行,因此解决方案 #1 不适用于我的情况。

当我只调整第二个更改时,没有任何真正的变化并且抛出相同的错误。

当我进行这两项更改并尝试构建时,我现在在构建过程中收到以下第二个错误。 (并不是真的100%确定我是否解决了第一个错误/我可能通过调整两个更改除了第一个错误之外还引入了第二个错误)

找不到目标“x86_64-apple-ios-simulator”的模块“Lottie”;找到:arm64、arm64-apple-ios-simulator

我使用的第二个库是洛蒂-ios https://github.com/airbnb/lottie-ios我正在用一个快速的包管理器来解决这个问题。我想发生的事情是因为我排除了arm64在 iOS 模拟器的构建设置中,Xcode 正在尝试运行我的应用程序x86_64。但是,不支持库运行x86_64由于某种原因,并且抛出错误。我对决定库是否可以在 x86_64 或 arm64 上运行的因素没有太多了解,因此我无法深入研究这个问题。

我的弱结论是GoogleWebRTC无法编译以在 iOS 模拟器中运行arm64由于某种原因(不同于its doc https://cocoapods.org/pods/GoogleWebRTC说),并且lottie-ios无法编译以在 iOS 模拟器中运行x86_64。所以在这种情况下我不能同时使用它们。

Q1.我想知道我可以做出什么样的改变来解决这个问题......

当从 Intel Mac 编译时,该应用程序可以在设备和模拟器中完美编译和运行。当从 Apple Silicon Mac 编译时,该应用程序可以在设备中编译并运行良好。只是该应用程序拒绝在 Apple Silicon Mac 的 iOS 模拟器中编译和运行,我似乎无法弄清楚为什么。

Q2。如果没有可用的解决方案,我想首先了解为什么会发生这种情况。

我真的希望不再购买旧的英特尔 Mac 只是为了让东西在模拟器中运行。


回答我自己的问题,希望能帮助其他有类似问题的人。 (直到其他用户添加一个好的答案)

我发现 GoogleWebRTC 实际上需要使用其源代码进行编译x64基于其源代码库。

对于针对 iOS 设备的构建,应将其设置为“arm”或“arm64”,具体取决于设备的架构。对于要在模拟器中运行的构建,应将其设置为“x64”。

https://webrtc.github.io/webrtc-org/native-code/ios/ https://webrtc.github.io/webrtc-org/native-code/ios/

这一定是我收到以下错误的原因。

building for iOS Simulator, but linking in dylib built for iOS, file '/Users/andy/workspace/app/Pods/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/WebRTC' for architecture arm64

如果我错了,请纠正我,但默认情况下,在 Apple M1 芯片中运行的 Xcode 似乎会启动 iOS 模拟器arm拱形类型。由于我的应用程序在 Intel Mac 的模拟器上运行良好,因此我暂时采取了以下解决方法。

  1. 退出 Xcode。
  2. 转到 Finder 并打开应用程序文件夹。
  3. 右键单击 Xcode 应用程序,选择Get Info
  4. 在“Xcode信息窗口”中检查Open using Rosetta.
  5. 打开 Xcode 并尝试再次运行。

这就是我需要做的所有事情,让我的应用程序(它依赖于手臂模拟器尚未完全支持的库)再次工作。 (我相信在 Rosetta 模式下启动 Xcode 也会在 x86 中运行模拟器..?? 这解释了为什么在进行上述更改后一切正常)

许多在线资源(通常在 2020 年 11 月 M1 Mac 发布之前发布)谈论“将 arm64 添加到Excluded Architectures”,但该解决方案似乎仅适用于 Intel Mac,而不适用于 M1 Mac,因为我不需要进行更改即可使事情再次正常运行。

当然,在 Rosetta 模式下运行 Xcode 并不是一个永久的解决方案,并且 Xcode 会减慢一点点,但它是一个临时解决方案,可以在您使用的库之一无法在 arm64 模拟器中运行的情况下继续运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apple Silicon M1 Mac 中的 Xcode 错误“为 iOS 模拟器构建,但在为 iOS 构建的 dylib .. for 架构 arm64”中链接 的相关文章

  • 带闭包的默认属性值使编译器重新编译所有文件

    This source https developer apple com library content documentation Swift Conceptual Swift Programming Language Initiali
  • SwiftUI 列表与右侧的部分索引?

    是否可以有一个在右侧有索引的列表 就像下面 SwiftUI 中的示例一样 我在 SwiftUI 中做了这个 Contacts swift TestCalendar Created by Christopher Riner on 9 11 2
  • 无法构建 Saurik 的 ldid 实用程序

    当我执行此命令 make sh 时 我遇到这些错误 构建用于越狱调整开发的 ldid 实用程序 Bilals Mac ldid billy make sh g arch i386 arch x86 64 arch ppc arch armv
  • ios 用户如何取消 Facebook 登录?

    当用户到达此屏幕时 无法取消 我能做些什么 为了首先获得这个视图 我正在运行 NSMutableDictionary params NSMutableDictionary dictionaryWithObjectsAndKeys vid l
  • iPhone 应用程序中的异步、同步、线程

    我正处于一个应用程序的设计阶段 该应用程序将利用 REST Web 服务 并且在使用异步 同步和线程方面遇到了困境 这是场景 假设您有三个选项可供深入研究 每个选项都有自己的基于 REST 的资源 我可以使用同步请求延迟加载每个请求 但这会
  • 如何在 iOS 9 上可靠地检测是否连接了外部键盘?

    在 iOS 9 之前 确定是否连接外部键盘的最可靠方法是监听UIKeyboardWillShowNotification并使文本字段成为第一响应者 如中所述这个问题 https stackoverflow com questions 289
  • 导入 RNCryptor 后架构 armv7 的未定义符号

    我导入了 RNCryptor 可以在这里找到 https github com rnapier RNCryptor https github com rnapier RNCryptor进入我的应用程序 但是 我在日志中收到了三个错误 Und
  • 更改组织以使用 Xcode 9 在 iTunes Connect 上上传二进制文件

    我在 Xcode9 上配置了多个团队 当我尝试将二进制文件上传到 Xcode 9 上的 iTunes Connect 时 没有更改团队的选项 并且出现以下错误 ERROR ITMS 4088 来自苹果开发者论坛的解决方案 1 正常存档2 窗
  • 在 iOS 上将 NSString 转换为 NSDate 的正确方法?

    我一直在使用此方法将常规 NSString 对象转换为 NSDate 但尝试向 Apple 提交更新 但遭到拒绝 在 iOS 中还有什么其他方法可以做到这一点 NSString date str 2011 08 12T12 20 00Z N
  • UIButton的高亮状态由什么控制事件开始和结束

    我正在创建类似钢琴的视图UIButton作为钢琴键 什么UIControlEvents当按钮获得和失去突出显示状态时 我应该监听以获得回调吗 我试图创建子类UIButton并添加属性观察者highlighted并且运行良好 然而 有时我需要
  • 覆盖层不与 UITableView 一起滚动 - iOS

    我有一个 UITableView 类 它使用以下方法在转到下一个屏幕时调用加载覆盖 问题是这个加载屏幕不随列表滚动 所以如果你滚动一点并单击某些东西 加载屏幕不会显示 因为它位于顶部 如何让加载屏幕始终保持在 UITableView 的顶部
  • Firebase 身份验证问题 - 通过电子邮件地址检查用户是否存在

    我在 Firebase 上创建了一个帐户 它有效 但现在我想阻止人们使用已存在的电子邮件地址创建帐户 这是代码 DatabaseManager shared userExists with email completion weak sel
  • 推送动画,没有阴影和停电

    我有一个简单的iOS NavigationController基于应用程序 二UICollectionViews 相继 如果元素打开 第一个合集 被点击时 第二集 将被打开 非常简单 重要的提示 Both UICollectionViews
  • Apple Watch 预构建操作可更改故事板 customModule 引用

    我目前有一个项目 其中包含同一应用程序的 3 个不同版本 不同的品牌等 该项目运行得很好 从那时起 我添加了 3 个新的 Apple Watch 目标 每个应用程序 版本 1 个 其中 2 个引用 主 Apple Watch 目标中的文件
  • AVAssetExportSession 为零 iPhone 7 - Plus 模拟器

    AVAssetExportSession在 iPhone 6 及以下版本上运行良好 但在 iPhone 7 iPhone 7 Plus 模拟器上运行不佳 Xcode 8 0 这段代码return nil在exportSession中 当在i
  • 根据 iOS 版本使用不同的类实现?

    iOS 11 最近添加了一个我想使用的新功能 但我仍然需要支持旧版本的 iOS 有没有一种方法可以将同一个类编写两次 并让较新版本的 iOS 使用该类的一个版本 而旧版本的 iOS 使用另一个版本 注 最初我用的是if available
  • 在 iPhone 中缝合图片

    我想并排缝合2张png 在Cocoa中 我会使用 NSImage initWithSize 然后只是drawInRect 但是 UIImage 没有 initWithSize 类 我现在该怎么做 Use UIGraphicsBeginIma
  • 水平 UICollectionView 单行布局

    我正在尝试使用以下命令设置简单的水平布局UICollectionView 兜圈子却没有达到预期的结果 所以任何指针或例子将不胜感激 我粘贴经常更改的代码但没有成功可能没什么意义 该图像显示两行 第一行是单个项目 尺寸正确并且在中心正确对齐
  • UIImageJPEGRepresentation 在视网膜显示屏上提供 2x 图像

    我有这段代码 它创建一个图像 然后向其添加一些效果并缩小其大小以使其largeThumbnail UIImage originalImage UIImage imageWithData self originalImage thumbnai
  • PFQueryTableViewController 错误

    我正在遵循在线教程 使用 Parse 作为后端创建照片共享应用程序 我已经运行了两次教程 两次都从头开始创建应用程序 但在同一位置仍然出现相同的错误 我到处寻找解决方案 但仍然没有运气 我正在使用 PFQueryTableViewContr

随机推荐

  • 无法删除数据库 mysql:错误 3664 (HY000)

    我的应用程序中有一个名为X Files 我想要drop它 但每当我运行命令时drop database X Files我收到以下错误 mysql gt drop database X Files ERROR 3664 HY000 Faile
  • 由于继承抽象类而禁用设计器?

    我有一个项目的解决方案 那个项目中有 40 或 50 种形式 我制作了 4 个基本形式 所有其他形式都可以继承 所有 4 个基本表单都继承 System Windows Forms Form 几乎 90 的形式继承了前 2 个基本形式之一
  • 具有继承类型的 Aux 模式推理失败

    我有一个复杂的玩具算法 我希望纯粹在类型级别上表示 根据饮食要求选择当天菜肴的修改 对卷积表示歉意 但我认为我们需要每一层才能达到我想要使用的最终界面 我的代码有一个问题 如果我们表达一个类型约束Aux 模式生成的类型基于另一个泛型类型 它
  • 为什么我的 Pygame 窗口在为对象设置动画时会闪烁?

    所以我的 pygame 窗口不会停止闪烁 我知道只要one项目在snake snakearray 不会闪烁 class for the array class snake snakearray ScreenConfigs width 2 S
  • 如何通过start-stop-daemon正常关闭Spring Boot应用程序[重复]

    这个问题在这里已经有答案了 我们有一个多线程 Spring Boot 应用程序 它作为守护进程在 Linux 机器上运行 当我尝试像这样通过启动停止守护进程停止应用程序时 start stop daemon stop quiet retry
  • py2neo 引发完成(自我)错误

    使用 py2neo 时 我在尝试附加事务时收到以下错误 statement MERGE a Person name actorName n MERGE b Series title actorsFields 3 year actorsFie
  • 可以在 pystan 或 pymc3 中使用样本权重吗?

    如果我观察到的数据集具有权重 例如跟踪多重性 是否可以将其提供给 pystan 或 pymc3 类似于函数签名 http mc stan org rstanarm reference stan glm html http mc stan o
  • 在 Firefox Add-on SDK 扩展中的“onInstalled”上执行脚本

    我对 Mozilla 扩展开发非常陌生 即使我刚刚知道扩展和附加开发是不同的 我对我在 MDN Mozilla 开发者网络 上看到的内容非常困惑 我想在安装我的附加组件后立即执行脚本 content script js 以便用户不需要重新启
  • 连接到远程 DB2 时出现“操作超时。ERRORCODE=-4499,SQLSTATE=08001”

    我正在尝试使用 IBM Type 4 JDBC 驱动程序连接到远程 DB2 这是我的配置 Server Windows 7 专业版 DB2 LUW V10 5 DB2 SVCENAME 50000 TCP IP 进行通信 Client 操作
  • Hibernate 在使用序列时生成负 id 值

    我有一个具有以下定义的类 Id SequenceGenerator name SEQ ACE WORKERS QUEUE STATS ID sequenceName SEQ ACE WORKERS QUEUE STATS ID alloca
  • 重写规则无法正确过滤推荐垃圾邮件(不再)

    我已将以下重写规则添加到我的 web config 中 它运作良好 阻止了所有提到的推荐垃圾邮件网站 然而今天我突然发现social buttons com出现在我的谷歌分析中 我在下面定义的规则怎么可能做到这一点
  • Flutter 中的 Android 许可证

    4 天前一切正常 我进行了更新 许可证停止通过 我到目前为止所做的事情 检查了工具过时的东西 gt 不起作用 flutter doctor android licenses gt 不起作用 sdkmanager licenses gt 不起
  • 如何从 javascript 终止会话

    很多时候我们使用会话变量来存储页面中的数据 当用户从一个页面跳转到另一个页面时 我需要一种方法来终止 JavaScript 的会话 是否可以 如果是的话请指导我 提前致谢 您需要告诉服务器终止会话变量 从 javascript 执行此操作的
  • 列出运行时从开放泛型类型创建的封闭类型

    当我列出当前 AppDomain 中的所有类型时 我会看到带有通用占位符的通用类型 但是 如果我使用类型实例化泛型类型 然后列出 appDomain 中的所有类型 则我看不到新创建的封闭类型 在下面的示例中 输出仅为 Foo 1 T 我正在
  • refname 不明确且拉取失败

    我运行了以下命令 因为我想将生产分支移回而不必先签出 git branch f production HEAD 1 现在 当我检查生产时 我收到以下警告 warning refname production is ambiguous 然后我
  • 关于在字典中查找所有有效单词的算法问题

    给定一个字典 只是一个字符串列表 您收到来自外部来源的未知数量的信件 给定字母串 您将如何列出您可以通过这些字母的任意组合组成的所有有效单词 来自字典 因此 如果您收到 applead 你应该找到apple bad pad lead等 我知
  • 设置 Apache POI 的路径

    我想创建 Excel 文件并使用 java 程序在该文件中写入数据 That is here http www techbrainwave com p 554我在 java 文件所在的位置提取了 Apache POI 并将该路径包含在路径变
  • 引用重载,与单独的值传递 + std::move 相比?

    似乎有关 C 0x 右值的主要建议是向类中添加移动构造函数和移动运算符 直到编译器默认实现它们 但如果您使用 VC10 等待是一种失败的策略 因为自动生成可能要到 VC10 SP1 才会出现 或者在最坏的情况下 直到 VC11 等待这一切的
  • 如何在 NSDate 变量中仅设置时间?

    我有 NSDate 变量 只想更改时间 不应更改日期 是否可以 例如 用户在 DatePicker 日期中选择日期间隔 如果是开始日期 我想将时间设置为 00 00 00 如果是结束日期 我将时间设置为 23 59 59 感谢你的帮助 问候
  • Apple Silicon M1 Mac 中的 Xcode 错误“为 iOS 模拟器构建,但在为 iOS 构建的 dylib .. for 架构 arm64”中链接

    我有一个应用程序 可以在物理设备和 iOS 模拟器中使用英特尔处理器的旧 Mac 上编译和运行良好 同样的应用程序也可以在配备 M1 处理器的较新 Apple Silicon Mac 上编译并正常运行physicaliPhone 设备 bu