Xcode 4 + iOS 4.3:“档案类型不存在打包程序”


76

我刚刚升级到Xcode 4,并试图为早期项目创建临时构建。每当我使用“ Archive”选项时,要么要么在Organizer窗口中根本没有存档,要么没有存档,但是没有选择将其打包为.ipa的选项,因为“对于该存档类型,没有打包程序存在”。

是否有人为从Xcode 3.2迁移来的项目提供了在Xcode 4下工作的临时构建?


类似的问题,但也没有答案:-( stackoverflow.com/q/5265292/509535
曼尼

首先尝试清理构建并检查Mac Disk Utility中的文件权限
Sergnsk 2011年

有谁知道如何创建和添加这样的打包程序?
罗布·阿加尔

我在移动项目时没有任何问题。我有旧项目的备份。我将对此进行检查,并告知您。编辑:我的旧项目被读取为OS-X项目。我必须编辑项目文件并更改构建目标。这解决了我的问题。我怀疑这是您的问题所在。
史蒂夫·麦克法林

编辑方案。您有什么作为“存档”操作的“构建配置”?(项目->编辑方案->存档)
Steve McFarlin

Answers:


134

您可能在主项目中有一些链接的项目(例如库)。转到那些项目的“构建”设置,并将“跳过安装”(部署类别)设置设置为“是”,但是将主项目的“跳过安装”保留为“否”。构建,存档,您应该能够选择ipa软件包。


就我而言,我还包含了从子项目复制到我的源代码的标头。然后它起作用了。
Mike Bevz 2011年

5
+1无法想象如果您没有发布此答案,我将失去多少小时。
cduhn

+1救了我,谢谢!重要的是,人们了解这必须在静态库本身而不是您的应用程序目标上完成。那让我有些困惑。
jj0b 2011年

4
好的,只是为了节省其他人浏览本文的时间。根据乔什·布朗(Josh Brown)的说法(在下面的答案之一中),如果您在主项目中有另一个整个项目(即不仅是.a文件),则仅更改“跳过安装”将不起作用。在该其他项目中,您必须执行的另一步骤是:“在该项目中,转到“构建阶段”,然后在“复制标题”部分中,将所有标题从“公共”和“私人”部分移到“项目”部分。” -在原始答案中,他还提到在.xcarchive文件的内容内浏览以查看需要移动的内容
Hlung 2012年

谢谢你,谢谢你,谢谢你!
theDuncs 2012年

25

谢谢,但是我需要3个步骤来彻底解决项目框架中的问题:

  1. 将每个依赖项目的“目标构建设置/“跳过安装””属性设置为“是”

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

  3. 对于每个项目,将每个标题从“构建阶段/构建设置/复制标题”部分移至“公共” /“私有”


3
步骤#3为我做到了!谢谢!
埃里克(Erik),

希望我能投票十次。#3为我解决了这个问题。
mmc

太好了,添加了两个步骤后对我有帮助:清理并重新打开XCode。谢谢!
德米特里·沙什洛夫

加入了感谢,同时也告诉人们不要更改顶部项目的安装目录(应该是$(LOCAL_APPS_DIR)) -存档不会在所有显示
奥德本多夫

1
非常感谢你。这个私人/公共项目对我有用。
Sedat Kilinc

9

我发现这些答案的组合解决了问题。我花了很多时间来验证是否在所有链接的项目上都将“跳过安装”设置为“是”,事实证明,这对我来说只是一部分问题。如果您在使用存档时遇到此问题,请按照以下步骤操作:

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

如果在第3步中直接在产品下或子文件夹中找到静态库(<some-library> .a),请转到Xcode并选择生成该静态库的项目(您应该能够知道哪个项目它基于静态库的名称)。转到“构建设置”并选择目标,然后将“跳过安装”设置为“是”。

如果在步骤3中直接在产品下或子文件夹中找到头文件(<some-header> .h),请转到Xcode并选择包含那些头的项目。您应该能够基于头文件名中使用的前缀找到项目。在该项目中,转到“构建阶段”,然后在“复制标题”部分中,将所有标题从“公共”和“私人”部分移到“项目”部分。

感谢这个答案这个答案以及这个答案,帮助我解决了这个问题。


1
“在该项目中,转到“构建阶段”,然后在“复制标题”部分中,将所有标题从“公共”和“私人”部分移到“项目”部分。” <-可行!谢谢!
Hlung 2012年

5

这是我们发现对这个问题有用的另外两个提示...没有答案,但是它们可以节省其他人大约8 /的时间

如果您使用的不是由xcode4构建的静态库,则“部署->跳过安装”解决方法将不适用于它们。解决方法是不要将它们添加到项目中,并确保它们的路径在“构建设置”的“标题”和/或“库搜索路径”中,并且将-lblah条目添加到链接器标志中。

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


谢谢,这对我也有用。“跳过安装”无效,最后从项目的目标中删除lib的项目/目标依赖项是解决方案(取而代之,我只是将“ .a”文件添加到项目的链接库中,并且一直链接到头文件)
安德烈Morujão

3

为了找出阻止Xcode进行适当归档的项目/库/组件,请执行以下操作:

在管理器中找到档案,右键单击并在finder中显示。这将显示一个.xcarchive文件。右键单击并显示包装内容。现在查看“产品”文件夹。最有可能的是其中不只是一个应用程序文件夹,其中包含一个iPhone应用程序。

在我的情况下,有一个包含libOAuthConsumer_iPhone.a的usr / local / lib文件夹结构,当我在Xcode中搜索它时,的确确实找到了另一个我没有将Skip Install设置为YES的项目。可能对每个人来说都不是那么容易,但是查看软件包内部至少应该为您提供一个指示,指出哪个组件使归档过程变得混乱。


1

跳过安装对我不起作用。我解决了这个问题,将所有标为public的标头移动到项目中。我目前在具有静态lib和ipad proj的工作区中工作。每当您要使用链接的项目构建产品时,xcode似乎都存在bug或某些东西,xcode会同时构建两者,而Organizer不会显示共享ipa的选项。


1

这些是解决xcode 4.2中上述问题的步骤

1:对于所有添加的第三方库,“跳过安装”为是。对于项目,将“跳过安装”更改为“否”。您可以从构建设置中访问“跳过安装”。

2:从左侧的导航器窗格中选择第三方库标题。

2.1:右侧是Utililtes窗格,使用视图->实用程序->显示/隐藏实用程序(command-Option-0)或使用工具栏的视图分段控件中的第三个按钮来显示和隐藏它

2.2:选择文件检查器(command-option-1)

2.3选择目标会员资格,并将选项从公共或私人更改为“项目”

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.