繁体   English   中英

为 M1 Mac 构建项目失败,因为它认为缺少架构

[英]Building project for M1 Mac fails because of architectures it believes are missing

我们有一个使用许多 AWS 库的项目。 在第一次尝试使用 carthage 构建它时,它下载了二进制文件并且根本没有构建它。 所以我们运行 carthage --no-use-binaries 并构建了库。

然后出现这个错误:

LoginService.swift:9:8: Module 'AWSMobileClient' was created for incompatible target arm64-apple-ios9.0: ..Carthage/Build/iOS/AWSMobileClient.framework/Modules/AWSMobileClient.swiftmodule/arm64.swiftmodule

基于这个堆栈溢出线程,我们将arm64添加到模拟器的排除架构中。

在此处输入图像描述

这使得所有 aws 代码都可以编译(耶),但是随后,在尝试使用通过 Swift Package 管理器进入的框架时会发生此错误:

[].swift:10:8: Could not find module 'Parma' for target 'x86_64-apple-ios-simulator'; found: arm64, arm64-apple-ios-simulator

所以它想要这个库的 x86 版本,但找不到它。

该应用程序现在可以在手机上运行。 但当然不是模拟器。 不确定是否有办法确定 SPM 构建了哪些架构? 或控制它。 在排除 arm64 拱门后,我确实重置了 SPM 缓存。

嘿,我遇到了这个问题。 只需打开 Rosetta 的旧项目并构建它。 然后取消选中由 Rosetta 打开并构建它。 它帮助我在 m1 上打开旧项目

我认为让这个在 M1 上运行的最佳解决方案是使用 XC-Frameworks。

carthage update --use-xcframeworks

这只会构建您需要的有效拱门。 如果您有任何不支持 XCFrameworks 的依赖项,则必须在构建阶段运行 lipo 以删除 x86 模拟器目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM