Xcode正在创建通用的Xcode归档文件,而非iOS应用程序归档文件。

59

我是iPhone开发的初学者,尝试使用我的个人资料和有效证书创建一个ipa包,但是xcode创建了一个通用的xcode存档文件而不是iOS应用程序存档文件,因为我的代码中有两个.xcodeproj

我遵循了一个stack overflow回答中提供的以下步骤:

  1. 主项目目标的Skip install选项为NO
  2. 框架(子项目)目标的Skip install选项为YES
  3. 子项目需要在项目中复制头文件,而不是公共文件夹
  4. Deployment下的Installation Directory是有效的(例如/Applications)

但我仍然没有得到解决方案。


1
你想构建一个ipa吗? - Vinay Jain
4
请提供您获取这些步骤的帖子链接。 - Vinay Jain
1
SO问题kp412所指的URL是:https://dev59.com/pGgv5IYBdhLWcg3wSe0f - Jeroen Bouma
2
子项目需要在项目中复制头文件,而不是公共文件夹。- 这对我很有用!谢谢 - CReaTuS
31个回答

39

5
非常好的建议。是的,这份文件必须阅读! - MonsieurDart
1
谢谢,我的也是。我正在为我的Mac应用程序嵌入一个启动器,认为我知道所有的步骤,没有再次观看教程。 - Cristi Băluță
1
当我有一个包含独立可执行项目的Cocoa应用程序时,这个方法帮了我大忙。必须在可执行文件上设置“Skip Install: Yes”,否则Xcode将无法正确构建存档。非常感谢您! - CBHacking
2
那就是我的问题。我的一个子项目的目标是“skip install = NO”。将其更改为YES解决了这个问题。 - Benjamin Piette
1
请注意,您可能会从子项目链接多个静态库。确保每个子项目的所有目标的“跳过安装”设置为“否”。 - Tyler
显示剩余2条评论

14
如果在“项目”>“目标”>“生成阶段”>“目标依赖项”中有任何 .xcodeproj 文件,请将其从那里移除,然后再构建您的 ipa 文件。对我有效。干杯。

1
谢谢Somasekhar,通过从目标依赖项中删除本地Xcode项目,我能够创建IPA文件。 :) - Kalpesh Panchasara
2
这对我不起作用。我不能只删除Apple Watch目标,因为那是必需的。 - spybart
我在构建设置中找不到目标依赖项 @somasekhar - bLacK hoLE
对我有用。谢谢 :) - Naveen Kumar V
我的目标依赖项下有静态库,而不是xcodeproj文件。我仍然面临问题,还需要检查其他内容吗? - Sadanand

13

我的情况不是“跳过安装”也不是cocoapods的问题。看起来是我最终没有使用的第三方框架导致了这个问题。解决方法很简单,就是将它删除。

为了追踪这个问题,我在Xcode的组织器中右键单击通用存档文件,选择“在查看器中显示”-> 右键单击存档文件-> 选择“显示包内容”-> 产品-> 应用程序,在该文件夹中,您可以看到除了{project-name} .app文件以外的其他文件。在我的情况下,有一个带有我没有使用的框架前缀的文件,因此将其从项目工作区中删除。


1
对我来说关键是查看包内容并在产品目录中看到另一条随机标头的路径。这向我展示了哪个第三方库是有责任的。 - ecume des jours

12

我的情况是在项目中有两个目标,一旦我将其中一个目标设为“跳过安装”(Skip Install = "YES"),问题就解决了。


2
对我来说,问题出在 Scheme 上。进入“管理 Scheme”,选择你要构建的 Scheme,点击编辑并选择左侧的“构建”选项卡。在那里,我找到了所有的目标...只留下一个目标后,它就可以工作了。 - amcastror
那就是我的问题。我的一个子项目的目标是“skip install = NO”。将其更改为YES解决了这个问题。 - Benjamin Piette

9

我在使用Cocoapods 0.38.1时遇到了问题,升级一些项目后,它会生成xCode通用归档文件...经过按照所有步骤操作后,重新创建ipa的唯一方法是将cocoapods降级到0.37.1并按照此链接中的步骤操作:http://9elements.com/io/index.php/cocoapods-best-practices/

希望这可以帮到您!


1
这也是我的问题所在。我升级到了0.38.2版本,问题得到了解决! - Eduardo Mauro
0.38.2运行良好,但0.39.b4也生成了一个通用存档。 - Kasas
“0.38.2” 对我来说无法工作,更新到 “0.39.0” 后它可以正常工作。 - Mahmoud Adam

7

让我开心极了!太棒了! - Nikita
在这之后,我开始遇到很多编译错误,例如找不到头文件。然后我手动添加了头文件搜索路径并解决了编译错误,但现在又遇到了很多链接错误,例如clang: error: no such file or directory: '/Users/user1/Library/Developer/Xcode/DerivedData/myapp-evvogrznnrakrpdflrddqvxxhzuh/Build/Intermediates.noindex/ArchiveIntermediates/MyApp/BuildProductsPath/Release-iphoneos/libRCTFBSDK.a'。 - Sadanand

5

我的问题是 CocoaPods版本0.38.2 。将 CocoaPods 升级到更高的版本(0.39.0.beta.4) 后,一切都正常了。

$gem install cocoapods --pre

然后:

$pod update

2
谢谢,就是这样!这个 bug 又抓住了我,升级了 OS X,不得不重新安装 CocoaPods,还是旧版本。发牢骚 到这个时候,CocoaPods 花费的时间比它节省的时间还多。下载那 4 个 pod 的源码并手动添加,偶尔更新一下,有这么难吗?CocoaPods 各种 bug 把这变成了一个浪费时间的事情。/发牢骚 - n13
安装库并不难(通常包括项目所需的必要类,这样就可以了),缺点是在升级之前可能会出现库中的错误。 - Yhondri

4

在我的情况下,问题出现在一个方案中。我有两个标记为“存档”的目标。这是在我复制其中一个目标时发生的。

方案 -> 构建 -> 目标中,我只需删除不需要的一个,然后归档就在“iOS应用程序”而不是“其他项目”部分。


4

我知道回复晚了,但是我通过以下步骤找到了解决方案:

  1. 进入项目导航器
  2. 选择目标
  3. 进入构建阶段
  4. 检查目标依赖项并删除它
  5. 清理和构建代码
  6. 尝试进行归档,这次你将获得iOS应用程序存档。

KP祝你好运和快乐 :)


对我有用。谢谢 :) - Naveen Kumar V

4
在XCode 5中,如果你有多个目标并且管理方案中的复选框设置错误,那么就会出现相同的错误。然后Xcode会将2个二进制文件放入一个通用归档文件中。这不会影响例如git中的已检入文件!

1
那么,任何想法修复是什么,龙猫先生? - Mazyod
1
打开“管理方案”并取消选择适当的选项;-) - cat
1
我依稀记得它在“编辑方案”中,然后是“构建”,再然后是“构建”,有一个名为“归档”的列,里面有复选框。这使您可以将多个目标归档到一个文件中。这种设计让我想起了微软。 - cat
1
谢谢,我也有这样的怀疑,但似乎还不足以解决我的问题。我曾试图构建Facebook的AsyncDisplayKit,但最终转向了CocoaPods。 - Mazyod

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