簡體   English   中英

Xcode 11.4 編譯錯誤'缺少 package 產品<package name> '</package>

[英]Xcode 11.4 compile error 'Missing package product <package name>'

When I integrate a local package in my Xcode project everything is fine initially but when i switch branches and want to run the app Xcode gives me the compile error Missing package product <package name> . 當我退出 Xcode 並重新打開它時,一切都很好了。 知道這可能是什么嗎? Xcode 錯誤?

我們還通過 Swift Package 管理器集成外部軟件包,該管理器運行良好。 那里沒有問題。

Jesse Squires 在一篇文章中也很好地描述了這個問題。

解決方案 1:文件 > Swift 包 > 重置包緩存

在此處輸入圖像描述

解決方案 2:文件 > Swift 包 > 更新到最新包版​​本

在此處輸入圖像描述

對我來說,我需要 File > Swift Packages > Reset Package Caches

在 Xcode 中,轉到 File > Swift Packages > Update to Latest Package Versions

為我工作

在 Xcode 中,轉到Product > Clean Build Folder

這對我有用。 該問題最初是在我嘗試解決刪除派生數據文件夾后出現的另一個問題時開始的。

重新啟動 Xcode 不起作用,但清理構建文件夾可以。 我不知道這里的其他答案是否對我有用,因為我沒有嘗試將它們視為清理構建文件夾有效。

今天在手動刪除DerivedData文件夾后,我在使用WooCommerce iOS 應用程序時在 Xcode 13.0 上遇到了這個問題。

構建失敗,就像問題描述中一樣: Missing package product '<package name>'

Xcode 中構建失敗的屏幕截圖

我嘗試了重置包緩存和更新到最新版本,但都不起作用。 想想看,這並不奇怪,因為 Xcode 找不到的包是本地包

對我來說,訣竅是遵循 Apple 論壇線程中的這個建議刪除本地包引用,然后再次添加它們。

在 WooCommerce 的案例中,本地包是工作區文件的一部分。 刪除然后以相同的順序再次添加它們不會導致文件中的差異。 也就是說,工作區設置並沒有真正改變,但這顯然是 Xcode 克服該錯誤所需的那種踢。 🤷‍♂️

在 Xcode 12.5 beta 上,沒有一個答案對我有用。 我不得不手動刪除所有 spm 包並重新添加它們。

我不確定根本原因,但我經常得到這個。 不是最優雅的解決方案,但重置包緩存和更新到最新包版​​本都不適合我。 對我來說,我不得不退出 Xcode,並刪除 DerivedData。

rm -rf ~/Library/Developer/Xcode/DerivedData/*

然后重建。

SPM - 重置包緩存與更新到最新包版​​本

File -> Swift Packages -> Reset Package Caches  
File -> Swift Packages -> Update to Latest Package Versions 

更新到最新的軟件包版本

fetch the latest possible version(based on restrictions)

重置包緩存

reset cache(derived folder) -> Update to Latest Package Versions 

文件夾

<path_to_derived_data>/<randomizer>/SourcePackages/checkouts/<project_name>
//e.g
/Users/alex/Library/Developer/Xcode/DerivedData/SPM-dpsmlyjrashqjefkfheppizcrgic/SourcePackages/checkouts/SPMExperiments

[本地 SPM]

目前對我來說一個解決方法是運行 Product > Clean Build Folder (cmd-k) 然后重新啟動 Xcode。 這是 Xcode 12.4 和 12.5 中的一個問題,並且 12.5 的每個用戶包緩存沒有解決這個問題。

File > Swift Packages > Reset Package Caches 似乎也可以工作,但對我來說速度較慢。

語境:

我的一個供應商通過 SPM 分發他們的預編譯二進制庫。 每當我在 git 開發分支之間切換時,我都會得到:

“二進制目標‘xyz’提取失敗的工件:操作無法完成。(TSCBasic.StringError 錯誤 1。)”

對於完全不相關的包,它也會導致這些“缺少包產品”錯誤,大概是因為如果一個包失敗,整個 SPM 過程就會失敗(“解析包圖失敗”),即使這些包是完全獨立的。

編輯:使用 Xcode 12.5 只需退出 Xcode 並重新打開似乎就足夠了。

當在兩個不同項目的兩個不同 Xcode 實例中打開相同的本地 Swift 包時,我收到此錯誤。 通過退出 Xcode 並一次只打開一個項目使其再次工作。

應該啟用 Xcode Source Control 來運行它。 Preference -> Source Control並啟用源代碼控制。

只是一個愚蠢的問題:您是否在 Xcode 首選項中設置了您的 git 帳戶?

在此處輸入圖像描述

從其他答案開始,例如

  • 重置包緩存
  • 產品 > 清潔構建文件夾

如果這沒有幫助...

在我的消息中,我發現我對同一個包的兩個不同版本有依賴關系。

修復此問題后,Reset Package Caches 突然對我的大多數包都有效。

我可以通過添加來解決剩余的問題

platforms: [
    .iOS(.v13),
],

到相應的包。 在此之前,我沒有platforms聲明。

我有一些包是我項目的一部分,但會間歇性地無法構建。

我發現指定SourcesTests文件夾的路徑解決了這個問題:

targets: [
        .target(
            name: "MyInternalPackage",
            dependencies: [],
            path: "Sources"), // <<<<<< Even tho this is the default, sometimes get build errors without it
        .testTarget(
            name: "MyInternalPackageTests",
            dependencies: ["MyInternalPackage"],
            path: "Tests") // <<<<<< Even tho this is the default, sometimes get build errors without it
    ]

在項目中的當前分支重命名后我遇到了這個問題,並通過清除工作區中的 xcuserdata 來解決它。

如果以上答案均無效,請參考 GravityBytes 在 Apple 論壇的此鏈接中分享的解決方案。

最終他碰巧分享了以下決議

我最終解決了這個問題。 似乎讓它工作的是在項目上使用“添加包...”菜單選項重新添加我的本地包,該項目具有使用本地包的框架目標。 這在項目中創建了一個新的“Packages”組,並最終開始正確編譯。

請刪除現有引用並嘗試使用上述方法添加它們。

對於 Moya,我必須將項目文件編輯為 Xcode heart 的內容

/* XCRemoteSwiftPackageReference "Moya" */ = {
                    isa = XCRemoteSwiftPackageReference;
                    repositoryURL = "https://github.com/Moya/Moya";
                    requirement = {
                            kind = upToNextMajorVersion;
                            minimumVersion = 13.0.2;
                    };

13.0.2 以外的任何版本都會導致 Moya 包帶來的眾多半圓形依賴項無法解決。

這為https://foldoc.org/field+circus注入了新的活力

除了Product -> Clean Build Folder and Restart對我沒有任何幫助

我試過了:

  • 清潔項目
  • 清理派生數據
  • 解決 Package 版本(文件 > 包)
  • 更新到最新 Package 版本(文件 > 包)
  • 重啟Xcode
  • 重啟 Mac

重新啟動 Mac 是有效的

其他人說多次執行“解決 Package 版本”也可以。

對我來說,Xcode 是使用以前無法啟用的 Rosetta 打開的。 使用 Rosetta 重新禁用打開對我有幫助

在 Xcode 12.0.1 (12A7300) 中,此錯誤已得到修復。 Xcode 更新為我自動解決了這個問題。

編輯 Xcode 12.5 [測試版]

Apple 添加了 SPM 緩存。 在這里查看我的問題 如果您在使用此 Xcode 版本時遇到此問題,刪除此緩存可能會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM