170

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

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

听起来方案中有一些设置需要调整,但我无法弄清楚是什么导致其他目标被包括在内。

顺便说一句,我正在使用 Xcode 4.0。

4

5 回答 5

251

好的,回答我自己的问题。原来这是 XCode 4 中依赖项目的问题。如果您遇到这种情况,请检查所有依赖项目(例如静态库)的构建设置,并确保设置了“部署”下的“跳过安装”选项是的。

更多细节在这里: http: //flakasoft.com/developer-tips/xcode-4-bug-solution-for-archiving-build-with-static-library/

于 2011-03-05T20:40:31.220 回答
151

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

  1. 正如 Jared 发现的那样,在 Build Settings 下,将“Skip Install”设置为“Yes”
  2. 在 Build Phases 下,检查 Copy Headers 部分。如果有任何头文件列为 Private 或 Public,请将它们拖到 Project 部分。
于 2011-03-15T21:59:32.367 回答
10

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

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

就是这样!

提示:要了解导致存档创建存档文件而不是 ipa 的违规文件,请执行以下操作:

  1. 选择存档并单击分发按钮。
  2. 选择“保存已构建产品”选项。
  3. 点击下一步并保存。
  4. 在 Finder 中浏览创建的目录。
  5. “libraries”子目录将标识您需要将 Skip Install 设置为 Yes 的库。
  6. 在某些情况下,usr/local/include将识别您需要从 Public 移动到 Project 的罪魁祸首文件,或者您必须从绝对路径更改为 products 目录的文件。但该目录(即 usr/local/include)因您的子库目录结构而异
于 2013-02-27T19:09:23.287 回答
1

我有一个我忘记的复制文件构建阶段(将一些字体复制到 ~/Library/Fonts)。删除此构建阶段后,它工作正常。

如果以上答案都不能解决问题,我建议将存档导出到 finder 并查看 .app 包之外的内容。

编辑:见https://github.com/RestKit/RestKit/wiki/Xcode-4-Archiving-Issue:--'Does-not-contain-a-single-bundle'

于 2013-02-22T15:39:36.680 回答
0

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

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

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

于 2014-01-08T03:54:19.803 回答