![](/img/trans.png)
[英]Why is Xcode on my M1 Mac trying to build for `iOS Simulator-x86_64`? Why is it not building for an `arm` based simulator?
[英]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.