XCode4 + iOS 4.3:"存档类型不存在打包程序"

Elv*_*oho 76 iphone xcode objective-c ipad ios

我刚刚升级到XCode 4,我正在尝试创建一个早期项目的adhoc版本.每当我使用"归档"选项时,我或者在管理器窗口中根本没有归档,或者有归档,但是没有选项将其打包为.ipa,因为"归档类型不存在包装器" ".

对于已从XCode 3.2迁移的项目,有没有人在XCode 4下使用adhoc构建工作?

Lio*_*rgé 134

您可能在主项目中有一些链接项目(如图书馆).转到这些项目的Build设置,并将设置"Skip install"(Deployement category)设置为"Yes",但将主项目的"Skip install"保留为"No".构建,存档,您应该能够选择ipa包.

  • +1无法想象如果你没有发布这个答案我会失去多少小时. (5认同)
  • 好的,只是为了节省其他人挖掘这篇文章的时间.根据Josh Brown的说法(在下面的一个答案中),如果您在主项目中有另一个整个项目(即,不仅仅是.a文件),只更改"跳过安装"将不起作用.您需要在该附加项目中执行的额外步骤是"在该项目中,转到"构建阶段",并在"复制标题"部分中,将所有标题从"公共"和"私有"部分移动到"项目"部分. - 在原始答案中,他还提到浏览.xcarchive文件的内容以查看需要移动的内容 (4认同)

小智 25

谢谢,但我需要3个步骤,以便用我的项目框架来解决问题:

  1. 为每个依赖项目将Target Build Settings /"Skip Installation"属性设置为"YES"

  2. 清除每个项目的目标构建设置"安装目录"属性

  3. 对于每个项目,将每个标题从"构建阶段/构建设置/复制标题"部分移动到项目

  • 第3步为我做了!谢谢! (3认同)

Jos*_*own 9

我发现这些答案的组合解决了这个问题.我花了很多时间来验证在所有链接的项目中Skip Install是否设置为Yes,结果证明这只是我的问题的一部分.如果您在使用Archive时遇到此问题,请执行以下步骤:

  1. 在管理器中找到存档,右键单击并选择"在Finder中显示".
  2. 在Finder中右键单击.xcarchive文件,然后选择"显示包内容".
  3. 找到Products文件夹并查看其中的内容.Products文件夹中应该只有一个Applications文件夹,而Applications文件夹应该只包含一个iPhone应用程序(YourProject.app).

如果在步骤3中,您直接在Products或子文件夹下找到静态库(<some-library> .a),请转到Xcode并选择生成静态库的项目(您应该能够告诉哪个项目它基于静态库的名称).转到Build Settings并选择目标,然后将"Skip Install"设置为"Yes".

如果在步骤3中,您直接在Products或子文件夹下找到头文件(<some-header> .h),请转到Xcode并选择包含这些头的项目.您应该能够根据头文件名中使用的前缀找到项目.在该项目中,转到Build Phases,然后在Copy Headers部分中,将所有标题从Public和Private部分移动到Project部分.

感谢这个答案这个答案以及帮助我解决这个问题的答案.


小智 5

这里有另外两个我们觉得对这个问题很有用的提示......不是答案,但是他们可能会节省别人很多时间搞乱8 /

如果您使用的是不是由xcode4构建的静态库,则"deployment-> skip install"解决方法对它们不起作用.解决这个问题的方法是不将它们添加到项目中,并确保它们的路径位于Build Settings中的Header和/或Library Search Paths中,并且-lblah条目也会添加到Linker Flags中.

另外,如果你有一个静态的lib设置为Target Dependency(例如我们将libjson.a设置为这个并且我很确定这是正确的/合乎逻辑的事情),那么你根本无法构建.ipa的无论.我们花了一整天的时间来讨论这个愚蠢的问题,最后只是删除它解决了它.就我个人而言,我认为这应该留下一个破碎的项目......但它的确如此有用.