Xcode报错:Multiple commands produce … stringsdata
Xcode报错:Multiple commands produce … stringsdata

Xcode报错:Multiple commands produce … stringsdata

运行Xcode项目,发生如下报错内容。

Xcode报错信息:

Multiple commands produce '/Users/fangjunyu/Library/Developer/Xcode/DerivedData/piglet-bpwurhirpzhedoekfnulldhckdxj/Build/Intermediates.noindex/piglet.build/Debug-iphoneos/piglet.build/Objects-normal/arm64/AppStorageManager.stringsdata'

该问题表示,Xcode 在编译过程中,有两个或以上的编译步骤试图同时生成同一个文件(在这里是 AppStorageManager.stringsdata),导致冲突。

简单说,就是“同一个文件被重复生成”了。

解决方案

检查左侧项目列表中,是否存在 AppStorageManager 相同的文件。

经检查发现,在Extensions中设置了一个AppStorageManager的同名文件,将该文件修改为AppStorage,避免同名的问题。

该问题在于存在同名文件,导致项目识别为重复项并触发该报错。

如果没有同名问题,可能和缓存有关,需要清理缓存:

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

然后重新编译。

本地化文件

这个问题还常见于本地化文件中,例如通过应用语言显示对应的Markdown文件,文件架构:

Markdown
├── ar
    ├── 000_Introduction.md
├── bg
    ├── 000_Introduction.md
└── bn
├── 000_Introduction.md

当把Markdown文件拖入Xcode项目后,因为存在000_Introduction文件,导致Xcode报错:

Multiple commands produce '/Users/fangjunyu/Library/Developer/Xcode/DerivedData/SwiftSlim-gpjjtcneaelgqvhjlyctvpeabryp/Build/Products/Debug-iphonesimulator/SwiftSlim.app/000_Introduction.md'

这个问题的解决方案,有两个:

1、修改文件名称:把同名的“000_Introduction.md”文件添加对应前缀。

Markdown
├── ar
    ├── ar_000_Introduction.md
├── bg
    ├── bg_000_Introduction.md
└── bn
    ├── bn_000_Introduction.md

文件不再同名,问题得到解决。

2、将文件设置为本地化文件

在Xcode中打开文件,点击右侧边栏,找到“Localization”-“Localize…”。

弹出一个提示框,表示你是否要本地化此文件。这里的本地化实际上是移动到对应语言的lproj文件夹中。

例如,这里是Arabic语言的本地化,选择“Arabic”后,文件会转换为本地化文件。

并且在原先的位置上,新增一个ar.lproj文件夹。

当再次运行时,Bundle查找文件时,不会再弹出重名的错误。

原因在于,应用在读取时,会根据App语言进行匹配,系统会根据用户语言选择对应的 .lproj 文件夹的文件。

相关文章

1、【Swift】同名ファイルがMultiple commands produceエラーを …

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注