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个回答

2

从其他答案开始尝试:

  • 重置包缓存
  • 产品 > 清除构建文件夹

如果这些操作不能解决问题...

我在我的消息中发现一个提示,我依赖于同一软件包的两个不同版本。

修复后,重置包缓存突然对大多数软件包起作用。

通过添加以下内容,我可以解决剩下的问题:

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

在对应的软件包之前,我没有platforms声明。


2
目前对我而言的解决方法是运行Product > Clean Build Folder (cmd-k),然后重新启动Xcode。这个问题在Xcode 12.4和12.5中都存在,而12.5的每个用户包缓存并没有解决这个问题。
File > Swift Packages > Reset Package Caches似乎也可以解决问题,但速度较慢。
背景:
我的一个供应商通过SPM分发他们的预编译二进制库。每当我在git开发分支之间切换时,我会遇到以下错误:“artifact of binary target 'xyz' failed extraction: The operation couldn’t be completed. (TSCBasic.StringError error 1.)”它还会导致这些“missing package product”的错误,可能是因为如果一个包失败了,整个SPM过程就会失败(“解析包图失败”),即使这些包完全独立。
编辑:使用Xcode 12.5,简单地退出Xcode并重新打开似乎就足够了。

1

对我来说,Xcode是使用Rosetta打开的,而之前并没有启用。禁用Rosetta帮助了我。


1
启用Xcode源代码控制以运行此程序。 请前往“偏好设置 -> 源代码控制”并启用源代码控制。

1
如果以上解决方法都不行,请参考GravityBytes在苹果论坛中分享的链接
最终他分享了以下解决方案:

最终我解决了这个问题。看起来让它工作的是使用项目中的“添加包…”菜单选项重新添加我的本地包,该项目具有使用本地包的框架目标。这将在项目中创建一个新的“Packages”组,并最终开始正确编译。

请删除现有引用并尝试使用以上方法添加引用。

1

一个简单的问题:你在Xcode偏好设置中设置了你的git账户吗?

enter image description here


1

我遇到了一个问题的变体,涉及到在2个或更多的包/项目中有1个本地库。只需欺骗Xcode,让它认为一个本地库是两个或更多个:

  • 从菜单栏或ctrl-option-cmd-w关闭所有项目
  • 删除~/Library/Developer/Xcode/DerivedData的内容
  • 删除所有本地包中的任何Package.resolved、.swiftpm或.build文件
  • 创建指向本地库的符号链接"ln -s /pathToLib/MyLibrary /pathToLib/MyLibraryII"
  • 不要触摸或打开Package/Project A,Package/Project B必须将包更改为MyLIbraryII的路径。现在您可以在两个不同的位置打开一个库
  • 如有必要,请重复上述步骤。
  • 请记住,这是临时解决方案。

1

除了执行 Product -> Clean Build FolderRestart 操作之外,其他都没起作用。


0

为了使用Moya,我不得不对Xcode项目文件进行大量编辑

/* 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注入了新的生命。


0
只需重新添加一个缺失的软件包,问题就解决了。

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