簡體   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