Xcode 7无法从与Xcode 6构建有效存档的同一项目中构建有效存档。

14
使用Xcode 7b5构建包含Today Extension的应用时,我无法创建有效的存档。当我创建一个存档时,构建成功,然后在组织者中显示为“其他项目”,而不是“iOS应用程序”。如果我关闭该项目并在Xcode 6.3.2中打开同一项目,则创建存档时它会显示在“iOS应用程序”下。我比较了存档,唯一注意到的是我的Today Widget被放置在Applications目录之外。Xcode 6.3.2和Xcode 7b5的结构如下:我认为问题在于MyTodayWidget被打包到Applications目录之外和.app之外。我不确定为什么Xcode 7 beta 5会在我没有进行任何更改的情况下以不同的方式打包应用程序。
UPDATE 8/14/2015: 这似乎是CocoaPods和扩展(如WatchKit或Today Extension)的问题。另一位开发者报告了这个问题Invalid archive produced when using "Archive" in Xcode 7 beta 5 (with watchkit extension) #4021。这似乎是这个问题的根本原因。
环境: - Xcode 7 Beta 5 - Today Extension - 普通应用程序 - CocoaPods 0.38.2(截至9/22最新版本) - 在扩展和应用程序中使用AFNetworking

扩展的安装位置由“安装目录”构建设置确定。然而,我遇到了相同的问题,将其设置为“/Applications”以用于扩展,但归档仍然位于“其他实用工具”中。 - Adrian Schönig
我遇到了类似的问题,但是我有一个位于/Library/Frameworks的框架。 - Porter Hoskins
真正的解决方法是降级cocoapods到0.39.0 beta 3 - beta 4,因为beta 4存在一个导致你遇到问题的bug。请参考https://dev59.com/DlwY5IYBdhLWcg3w9r7a#32654636。 - DiscDev
根据报告,问题出在Cocoapods的0.38.2版本上。另外,使用尚未发布的beta版Cocoapods似乎也是一个解决方案,但如果你想使用已发布的Cocoapods版本,接受的答案是唯一的方法,直到他们发布修复了该问题的0.39.x版本为止。 - Polar Bear
7个回答

16

这是CocoaPods v0.39.0.beta.4的问题。

正如在CocoaPods GitHub中描述的那样,CocoaPods的beta 3可以按预期构建存档。Beta 4存在一个错误,导致此功能无法正常工作。

首先卸载之前的CocoaPods版本:

sudo gem uninstall cocoapods

然后执行以下命令:

sudo gem install cocoapods -v 0.39.0.beta.3 --verbose

最后执行:

pod update

这样就能像预期那样再次构建存档了。


谢谢。在我运行“sudo gem uninstall cocoapods”以删除beta 4后,这对我也非常有效。 - jlichti
这应该被标记为答案——当前接受的答案没有提供解决方案——我遇到了同样的问题,并确认降级到beta 3可以修复我的项目,现在我可以成功构建存档。 - DiscDev
1
就我所知,我正在运行0.38.2(已发布),并且遇到了这个问题,但是卸载它并安装像上面那样的0.39.0.beta.3版本解决了它。感谢软件包管理器让生活变得更轻松。 - Tom Kidd
这个答案的问题在于它要求你更新所有的cocoapods。幸运的是,我能够使用这个解决方案:https://dev59.com/-FwY5IYBdhLWcg3wh4Eq#32655151 - user3344977
这个问题在 CocoaPods 0.39.0.rc.1 中也存在吗? - swalkner

12

我今天确认这是CocoaPods的问题,具体而言是4021。我像其他用户一样尝试了并从我的扩展目标中删除了“复制Pod资源”。一旦移除后,在Xcode 7 Beta 5中,我就能够成功地打包归档文件。

希望在下一个Beta和GM版本中仍然有效...

更新9/22:如果你使用的是CocoaPods的 0.38.2 ,他们最新的版本是截至2015年9月22日发布的版本。我使用这种方法成功地将我的应用提交到了应用商店中,使用的是Xcode 7 GM。


节省了我很多时间,谢谢!我正在使用 Xcode 7 GM。 - estemendoza
虽然这是一个“答案”,但真正的答案是cocoapods v0.39.0 beta 4存在一个bug,降级到beta 3即可解决:https://dev59.com/DlwY5IYBdhLWcg3w9r7a#32654636 - DiscDev
如果您只使用Cocoapods的发布版本,那么这就是答案。他们还没有发布一个不是beta版本的修复版本,事实上在后来的beta版本中破坏了修复。一旦Cocoapods发布了带有修复的版本,解决方案就是将Cocoapods更新到新发布的版本,直到那时,如果您想使用Cocoapods的发布版本,这就是唯一的解决方案。 - Polar Bear

3

最新稳定版本0.39.0中已经修复了这个问题:

因此,不需要卸载原版本

sudo gem uninstall cocoapods

并通过重新安装进行再次安装

sudo gem install cocoapods

同样的,这是一个简单的 <\p>。
sudo gem update cocoapods

应该修复它!


1

当我更新Xcode到版本7.0(7A220)时,我遇到了同样的问题。他们说这个问题已经被跟踪(Issue#4274)

最后,我通过以下步骤解决了这个问题: 1)在所有的Pods Targets->Build Setting->Packaging中清除所有"Private Headers Folder Path"和"Public Headers Folder Path" 2)在我们的Targets->Build Phases中删除"Copy Pods Resources"


0
如果您正在使用Xcode 7cocoapods v.0.38.2,请尝试从您的今日扩展目标中删除copy pod resources

0

如果您从扩展中删除Copy Pod Resources,则可以正常工作。虽然我不知道这可能会导致什么问题,但我的应用程序已经工作、存档并通过了审核。


0

这可能是由于使用 CocoaPods 0.38.[0-2] 和 Xcode 7 引起的。

它可以与旧版本的 CocoaPods 正常工作:

$ gem install cocoapods -v "=0.37.2"
$ gem uninstall cocoapods # then select 0.38.[0-2]
$ pod update

此外,在执行pod update之前,我还需要清理我的构建文件夹和清除Pods文件夹,并在我的Podfile中更改AFNetworking post install hook

更多原因请参见Xcode无法生成iOS应用程序存档


我希望我能使用这个解决方案,但是在版本0.37.2上,cocoapods在pod update时出现错误。 - Porter Hoskins
谢谢,但是如果你使用AFNetworking,你必须使用版本0.38.2来创建一个存档,否则会出现https://github.com/CocoaPods/CocoaPods/issues/3738的问题。我将制作一个示例项目,也许我需要提交另一个Cocoapod错误报告。对于我的目的,使用0.37.2在Xcode 7上不起作用。感谢您的信息。一旦写好,我会发布错误报告。 - Polar Bear
@PorterHoskins,看起来已经有一个CocoaPods的bug被写入了使用Xcode 7 beta 5(带watchkit扩展)时使用“Archive”时产生无效存档#4021 - Polar Bear
以防万一,这是我 Podfile 中的 post_install 钩子的链接:https://gist.github.com/nighthawk/ca9f31f120fb04172121。 - Adrian Schönig
@AdrianSchönig 感谢您提供 post_install hook 的示例。我试了一下,但是当我使用 0.37.2 版本时会出现 错误。我尝试修改它,但似乎无法解决这个错误。我的 Podfile 在 0.38.2 版本下可以工作,请查看此处。我尝试使用与您相同的更新后的 Podfile,只是将 MYAPPNAME 替换为我的应用程序名称,但仍然遇到同样的错误。我还尝试将 deduplicate_targets: false 添加到我的 config.yaml 文件中,但仍然得到相同的错误。有任何想法吗?谢谢! - Polar Bear
显示剩余3条评论

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