警告:复制包资源构建阶段包含此目标的Info.plist文件

277
我已将一个项目分为两个构建,并给每个构建分配了一个 `plist` 文件。一切正常,但我一直收到此构建警告:

警告:复制 Bundle 资源生成阶段包含此目标的信息列表文件 'MyApp-Info.plist'

当我尝试构建 `MyApp` 时会出现这种情况。为第二个目标构建也会出现相同的错误(警告中使用 `SecondTarget-Info.plist`)。我不确定为什么这是一个警告,因为我想要构建包含那个 `.plist` 文件。每个 `.plist` 文件都有一个目标成员资格(用于它们自己的构建)。
这个警告是什么意思?有没有办法让它消失?

您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - onmyway133
6个回答

623

https://developer.apple.com/library/content/qa/qa1649/_index.html

内容摘要:

您收到此警告是因为您可能已将 Info.plist 文件添加到了“复制包资源”构建阶段,如下图所示。

enter image description here

INFOPLIST_FILE 构建设置指定了与目标相关联的 Info.plist 的名称。在构建目标时,Xcode 会读取此构建设置并将引用的 Info.plist 复制到您的应用程序包中。由于 Xcode 自动处理 Info.plist,您不应将其添加到“复制包资源”构建阶段或使其成为目标成员。

要解决此警告,请像图1中所示从“复制包资源”构建阶段中选择 Info.plist,然后单击删除(-)按钮将其从阶段中删除。


2
@hasan83,你会收到构建警告,并且构建的产品将包含一个额外的 Info.plist 副本,占用一些空间。 - JWWalker
1
@kraftydevil,你的项目有任何子项目吗?这样警告可能是指你检查的目标以外的其他目标。 - JWWalker
这是一个使用CocoaPods的工作区,因此它具有主项目和pods库项目。我确定所涉及的plist没有引用另一个目标,因为我可以在文件检查器中看到所有目标,只有所涉及的目标被选中。删除引用并正确重新添加解决了我的问题:https://dev59.com/lXA75IYBdhLWcg3wy8fr#6602567 - kraftydevil
9
七年后仍然具有相关性。 - jungledev
1
这个解决方案在我的Xcode 9上有效。@jungledev仍然相关,因为苹果正忙于更新Swift版本,而不是开发Xcode来展示我们如何解决奇怪数字的奇怪错误。 - MBH
显示剩余3条评论

66

解决Xcode 4中的问题:

1)通过选择信息.plist文件并按下删除键来删除对其的引用。

2)再次添加信息.plist文件,但选择“无目标”并取消选中“添加到目标”选项。


2
我现在明白了,当我将plist文件复制到我的项目中时,如果没有取消“添加到目标”选项,那么就会出现这个问题。为了解决这个问题,我按照上面“正确答案”的步骤进行了操作,但是删除并重新添加而不添加到目标也可以解决问题。 =) - RanLearns
1
这在我使用的Xcode 6.4版本中有效。所选答案无效。 - kraftydevil
在最新版本的XCode中似乎没有“无目标”或“添加到目标”的选项。我所看到的唯一选项就是不带任何附加选项添加文件。 - Sirop4ik
优秀的...... 取消选中“添加到目标”选项。 - M Hamayun zeb

2

如果有人在Xcode 3中遇到此问题,可以通过以下方法解决:在“组和文件”下的左侧列中单击.plist文件,在右上角区域中,取消选择圆点图标下列中.plist文件名称旁边的框。您需要将编辑器缩小(查看 -> 缩小编辑器),以显示复选框。


1
另一个解决方案是:
您可能意外地从“目标成员资格”核心数据中删除了一个项目文件。
1.从左侧的项目导航器中选择Main.storyboard。 2.转到右侧的“文件检查器”(第一个选项卡)。 3.找到“目标成员资格”列表。 4.启用复选框。 5.稍等片刻进行处理,同时还要检查LaunchScreen.storyboard、.xcdatamodelid、Assets.xcassets和项目中的所有.swift文件。它们都应该已经启用了目标成员资格。 6.注意:Info.plist不应启用目标成员资格复选框。
希望这有所帮助。

0

对我来说,这与ionic框架文章有关。

唯一的区别是我改变了

CODE_SIGN_IDENTITY = iPhone Distribution
CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Distribution

CODE_SIGN_IDENTITY = Apple Development
CODE_SIGN_IDENTITY[sdk=iphoneos*] = Apple Development

根据 Xcode 自己的建议,本文描述中应该使用“iPhone开发者”,而不是其他。此外,我正在使用 Cordova 而不是 Ionic。如果您也是,请注意此文件位于 platforms/ios/cordova/build-release.xconfig

附注:记得将项目的签名设置为自动(即使重新取消或选中也有帮助)


-3

仅作为一则说明... 我会试着写一篇关于此的好的 Radar 文章,但 Storyboards 在 Xcode 中处理本地化的方式真的很奇怪。如果你要求“在 Finder 中显示”,你不会看到选中的 .storyboard 文件,而是它所在的文件夹。我认为这与Storyboard的本地化有关。只要我把Storyboard从英语改成德语(因此不再在根目录或en.lproj中有该文件),我就开始遇到麻烦了。


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