Xcode中的归档项目错误地创建了多应用程序包


170

在Xcode中归档我的项目是创建一个多应用程序捆绑包,而不是捆绑我要发布的主要目标,这正是我想要的。具体来说,当我在管理器中验证存档时,它会显示以下消息:

“ [项目名称]不包含一个捆绑应用程序或包含多个产品。请选择另一个存档,或调整方案以创建一个捆绑应用程序。”

听起来该方案中有一些设置需要调整,但是我不知道是什么导致其他目标被包括在内。

我正在使用Xcode 4.0。


Answers:


251

好,回答我自己的问题。事实证明,这是XCode 4中相关项目的问题。如果发生这种情况,请检查所有相关项目的构建设置(例如,静态库),并确保已设置“部署”下的“跳过安装”选项为是。

此处有更多详细信息:http : //flakasoft.com/developer-tips/xcode-4-bug-solution-for-archiving-build-with-static-library/


1
先生,你是我的英雄!我不会轻易发现的:P
Andrew Natoli

6
将其更改为“是” ...仍然失败。:(
乔·D·安德里亚

8
跳过安装仅需要在静态库上设置为“是”,而不是在项目或目标上设置为“是”。这篇关于临时发行的博客文章同样适用于应用商店的构建,并有关于跳过安装的部分:musicalgeometry.com/?p = 1237
jj0b

8
一些库(例如CorePlot)也需要您更改其构建阶段的“复制标题”部分。因此,请确保您也查看Ryan的答案。
Tim Swast

2
我还必须在目标“构建阶段”中移动所有(静态库的)头文件,在“复制头”中,我将它们从“公共”移动到“项目”。
Hlung 2012年

151

要解决此问题,需要在子项目中修复两件事:

  1. 正如Jared发现的那样,在“构建设置”下,将“跳过安装”设置为“是”
  2. 在“构建阶段”下,检查“复制标题”部分。如果有任何标为“私人”或“公共”的头文件,请将其向下拖动到“项目”部分。

7
我真的爱你,伙计!:D
arielcamus

5
我修复了所有“跳过安装”设置,但是我缺少的是“复制标题”部分,谢谢!
Thomas Einwaller

2
我正在使用three20。该项目的头文件列为“私有”或“公共”,但是如果我将其移到“项目”部分中,则不会编译。有什么建议吗?
Breezeight

19
即使您确实克服了此Xcode问题,也请停止使用Three20。我是认真的!
亚当·埃伯巴赫

2
如果您像我们一样有许多图书馆项目,并且很难弄清哪个图书馆的“跳过安装”设置为“否”或导致问题的头文件,请尝试以下操作:选择档案,然后单击“分发”按钮。选择“保存内置产品”选项。点击下一步并保存。在Finder中浏览创建的目录。“库”子目录将标识将“跳过安装”设置为“是”所需的库。usr / local / include将标识从公共到项目所需的罪魁祸首头文件。
Sunil Gowda

10

我做了以下工作以使其适合我:

  1. 对于three20静态库,我使用了cocoapods将文件包含在主项目中..它完全摆脱了three20给我(而且他们很多。)的所有麻烦,但我尝试用Nimbus代替Three20 ..但Nimbus缺少我的项目正在使用three20的某些功能。因此,Nimbus并没有帮助。
  2. 在所有其他子项目/静态库的构建设置下,将“跳过安装”设置为“是”,并在构建阶段将复制标题从公共切换到项目
  3. 最重要的是:在子库下..在构建阶段下,我确保将复制文件的目标从更改Absolute pathproducts directory

就是这样!

提示:要了解引起档案文件创建档案文件而非ipa的问题文件,请执行以下操作:

  1. 选择存档,然后单击分发按钮。
  2. 选择“保存内置产品”选项。
  3. 点击下一步并保存。
  4. 在Finder中浏览创建的目录。
  5. “库”子目录将标识将“跳过安装”设置为“是”所需的库。
  6. 在某些情况下,usr/local/include将识别出您需要从“公共”移动到“项目”的罪魁祸首文件,或者必须从绝对路径更改为产品目录的文件。但是该目录(即usr / local / include)取决于您的子库目录结构

我会给您10颗星,这是我读过的解决方案的nr,直到找到有帮助的解决方案为止。我只需单击在第6步中找到的文件,并在目标成员区域中将它们标记为从公共到项目,无需任何操作。
Cristi Băluță

很高兴我能帮助你!我写出来的原因是b / ci经历了您所做的事情。.在我开始理解发生了什么之前,我读了大概20条答案.. :)
2013年

有人可以解释步骤6吗?我不明白“ usr / local / include将识别罪魁祸首文件”是什么意思,我应该在哪里/如何检查这些文件
Andrei F

@ CristiBăluță您究竟是如何找到文件的,以及它们在设置/菜单中的位置?我在XCode 11.2.1中遇到了同样的问题,并且在xcode中没有太多的经验。谢谢。
Andrei F

我发现/ usr / local / include是归档文件中的一个文件夹(以及库文件夹),但是我的通用归档文件中没有任何文件
Andrei F


0

我也遇到了同样的问题:“ [项目名称]不包含一个捆绑应用程序或包含多个产品。请选择另一个存档,或调整方案以创建一个捆绑应用程序。” 升级到xcode5之后。

问题是我的“发布”的构建设置中有一堆字段为空。我猜xcode4会自动切换到调试设置。

anwyays-我的解决方法是找到所有空白的“发布”设置,并将其设置为调试设置。特别是Info.plist文件设置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.