Xcode 11.4编译错误 '缺少软件包产品<软件包名称>'

114
当我在Xcode项目中整合一个本地包时,一切都很顺利,但当我切换分支并想运行应用程序时,Xcode会给出编译错误Missing package product <package name>。当我退出Xcode并重新打开时,一切又恢复正常。这是什么原因呢?是Xcode的bug吗?
我们还通过Swift Package Manager集成外部包,这也完全没有问题。
这个问题在Jesse Squires的帖子中也有详细描述。

3
Xcode 11.5 仍存在此问题。 - Murlakatam
2
我也有同样的问题 :-( - OliverD
也许将最受欢迎的答案标记为正确的答案?;) - Nicolas Degen
当然这并不美观,但我认为这更像是Xcode的一个bug,而且我认为这是最干净、尽管有点暴力的方法... - Nicolas Degen
在XCode 12.5中仍然存在此问题。 - MdaG
显示剩余4条评论
22个回答

174

解决方案 1: 文件 > Swift Packages > 重置软件包缓存

在此处输入图片描述

解决方案 2: 文件 > Swift Packages > 更新到最新软件包版本

在此处输入图片描述


2
我完全是新手,这帮了很多。 - JBarros35
1
对我来说这很有效,但是如果我关闭VPN连接,似乎一些VPN服务器与Swift软件包管理器存在一些问题。 - Ahmadreza
1
当这不起作用时,重新启动Xcode。 - kuzdu
1
如果您使用了“pod deintegrate”命令从CocoaPods中清除项目,那么这就是正确的答案。 - Diogo Nunes
1
Xcode 13,解决方案1修复了我的问题。 - Zhou Haibo
显示剩余3条评论

65

对于我来说,我需要选择文件 > Swift Packages > 重置软件包缓存。


31

在Xcode中,转到文件 > Swift Packages > 更新为最新的包版本

对我有效


14

在Xcode中,转到 产品>清理构建文件夹

这对我有效。该问题最初起因是当我尝试解决在删除派生数据文件夹后出现的另一个问题时。

重启Xcode无效,但清理构建文件夹有效。我不知道这里的其他答案是否适用于我,因为我没有尝试它们,因为清理构建文件夹有效。


1
即使使用本地软件包,每当在 Package.swift 的“平台”部分更改任何内容时,我仍会收到(误导性的)错误消息。这对我有所帮助。 - HendrikFrans

10

今天在手动删除 DerivedData 文件夹后,使用 Xcode 13.0 开发 WooCommerce iOS 应用程序 时,我遇到了这个问题。

构建失败,就像问题描述中所示:Missing package product '<package name>'

Xcode 中构建失败的截图

我尝试过重置包缓存和更新到最新版本,但都没有解决。想想也不意外,因为 Xcode 找不到的包是本地包。

对我起作用的是遵循 Apple 论坛主题 中的建议删除本地包引用,然后再添加回来。

在 WooCommerce 的情况下,本地包是工作区文件的一部分。按照相同的顺序将它们先删除再添加回来,文件没有发生变化。也就是说,在工作区设置中没有真正发生任何更改,但这显然是 Xcode 克服该错误所需的方法。 ‍♂️


7
我不确定根本原因,但我经常遇到这种情况。重置包缓存和更新到最新的软件包版本都无法解决问题,虽然并不是最优雅的解决方案。对于我来说,必须退出Xcode,并删除DerivedData。
rm -rf ~/Library/Developer/Xcode/DerivedData/*

然后重新构建。


4
好的,这很困难,关闭/重新打开Xcode就足够了:D - blackjacx
2
这就是其他人告诉我的,哈哈。在我的情况下,它就是不动,所以我决定把它全部炸掉。 - Matt Comi
重新打开对我来说已经足够了。 - nayan9
确保在XCode中启用了源代码控制。 - Ishara Meegahawala

6

对我来说,Xcode 12.5 beta的所有答案都没有用。我不得不手动删除所有的spm包并重新添加它们。


Xcode 12.5 在某个地方缓存了依赖项。这是该测试版中的新功能。请参见 https://dev59.com/YlEG5IYBdhLWcg3wbtZr。如果你找到了它的位置,它会对我和你自己都有很大帮助,因为根本不需要重新添加包。你可能只是忘记删除缓存。 - blackjacx
谢谢,伙计!这个答案为我节省了很多时间! - oskarko
在Xcode 13中,所有其他的解决方案都没有帮助我。删除并重新添加本地包可以解决这个问题。 - bshirley

5

我尝试了以下步骤:

  • 清理项目
  • 清理派生数据
  • 解决软件包版本(文件 > 软件包)
  • 升级到最新的软件包版本(文件 > 软件包)
  • 重启 Xcode
  • 重启 Mac

重启 Mac 是有效的方法。

其他人说多次执行“解决软件包版本”也可以起作用。


5

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]


基本上排除派生数据文件夹。 - JBarros35

3

我在两个不同的Xcode项目中同时打开了同一个本地Swift包时遇到了这个错误。通过退出Xcode并一次只打开一个项目,使其再次正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接