【问题标题】:Xcode 7 will NOT build a valid Archive from the same project that builds a valid archive in Xcode 6Xcode 7 不会从在 Xcode 6 中构建有效存档的同一个项目构建有效存档
【发布时间】:2015-11-07 06:41:44
【问题描述】:

使用 Xcode 7b5 构建包含 Today Extension 的应用时,我无法创建有效的存档。当我进行存档时,构建成功,然后在管理器中显示在“其他项目”下而不是“iOS 应用程序”下。

如果我在创建存档时关闭项目并在 Xcode 6.3.2 中打开同一个项目,它会显示在“iOS 应用程序”下。

我比较了档案,我注意到的一件事是我的 Today Widget 被放置在 Applications 目录之外。 Xcode 6.3.2 与 Xcode 7b5 的结构如下所示:

Xcode 6.3.2
|-存档
|--产品展示
|---应用
|----MyMainApp.app

Xcode 7 测试版 5
|-存档
|--产品展示
|---应用
|----MyMainApp.app
|---MyTodayWidget.appex

我认为问题在于 MyTodayWidget 被打包在 Applications 目录之外和 .app 之外。我不确定为什么 Xcode 7 beta 5 在我没有进行任何更改时会以不同于 Xcode 6.3.2 的方式打包应用程序。

2015 年 8 月 14 日更新: 这似乎是 CocoaPods 和扩展(如 WatchKit 或 Today 扩展)的问题。另一位开发人员已将其报告为Invalid archive produced when using "Archive" in Xcode 7 beta 5 (with watchkit extension) #4021。这似乎是这个问题的根本原因。

环境:
- Xcode 7 测试版 5
- 今日扩展
- 普通应用
- CocoaPods 0.38.2(截至 9/22 的最新发布版本)
- AFNetworking 用于扩展和应用

【问题讨论】:

  • 扩展的去向由“安装目录”构建设置决定。但是,我遇到了同样的问题,将扩展设置为“/Applications”确实将它们放在与 Xcode 6 相同的位置,但存档仍然位于“Other Utils”中。
  • 我遇到了类似的问题,但我在/Library/Frameworks 有一个框架。
  • 真正的解决方法是将 cocoapods 降级到 0.39.0 beta 3 - beta 4 有一个导致您的问题的错误。见stackoverflow.com/a/32654636/1103584
  • 报告的问题与 Cocoapods 的已发布 0.38.2 版本有关。迁移到尚未发布的 beta Cocoapods 似乎也是一种解决方案,但如果您想使用 Cocoapods 的已发布版本,则接受的答案是唯一的方法,直到他们发布 0.39.x 并修复它。

标签: ios xcode6 xcode7 ios9 xcode7-beta5


【解决方案1】:

这是 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 之后,对我也很有用。
  • 这应该被标记为答案 - 当前接受的答案没有提供解决方案 - 我遇到了同样的问题并确认降级到 beta 3 修复了我的项目,我现在可以成功构建档案。
  • 值得我运行 0.38.2(已发布)并遇到此问题,但像上面那样卸载并安装 0.39.0.beta.3 修复了它。耶包管理器让生活变得轻松。
  • 这个答案的问题是它需要你更新你所有的 cocoapods。幸运的是我能够使用这个解决方案:stackoverflow.com/a/32655151/3344977
  • CocoaPods 0.39.0.rc.1也存在这个问题吗?
【解决方案2】:

我今天刚刚确认这对我来说是一个 CocoaPods 问题,特别是 4021。我以其他用户的身份尝试了该问题,并从我今天的扩展目标中删除了“复制 pod 资源”。删除后,我就可以在 Xcode 7 Beta 5 中成功打包存档。

希望这在下一个测试版和 GM 中仍然有效...

更新 9/22:如果您使用的是 CocoaPods 的 0.38.2,这是截至 2015 年 9 月 22 日最新发布版本的答案。我能够使用这种方法使用 Xcode 7 GM 将我的应用提交到应用商店。

【讨论】:

  • 为我节省了很多时间,谢谢!我正在使用 Xcode 7 GM
  • 虽然这是一个“答案”,但真正的答案是 cocoapods v0.39.0 beta 4 有一个错误,降级到 beta 3 将修复它:stackoverflow.com/a/32654636/1103584
  • 如果您只使用已发布版本的 Cocoapods,这就是答案。他们还没有发布带有非测试版修复的版本,实际上在后来的测试版中破坏了修复。一旦 Cocoapods 发布了一个带有修复的版本,解决方案就是将 Cocoapods 更新到新的发布版本,直到那时如果你想使用 Cocoapods 的发布版本,这是唯一的解决方案。
【解决方案3】:

终于在最新的稳定版本 0.39.0 中修复:

所以不要卸载

sudo gem uninstall cocoapods

并通过重新安装

sudo gem install cocoapods

也是一个简单的

sudo gem update cocoapods

应该修复它!

【讨论】:

    【解决方案4】:

    将 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”。

    【讨论】:

      【解决方案5】:

      这可能是由于使用 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 文件夹并更改 AFNetworing post install hook in my Podfile

      Cannot generate iOS App archive in xcode 中讨论了更多原因。

      【讨论】:

      • 我希望我可以使用这个解决方案,但 cocoapods 在版本 pod update 上出现错误 0.37.2
      • 谢谢,但如果您使用 AFNetworkin,则必须使用 0.38.2 版本来制作存档,否则会出现 github.com/CocoaPods/CocoaPods/issues/3738。我会做一个示例项目,也许我需要提交另一个 cocoapod 错误。出于我的目的,使用 0.37.2 不适用于 Xcode 7。谢谢(你的)信息。写完后我会发布错误报告。
      • 恢复到 0.37.2 对我有用,即使我也在使用 AFNetworking。使用 Cocoapods 提交错误报告绝对是一个好主意。祝你好运!
      • @AdrianSchönig 谢谢,如果您有一个应用程序,那么 AFNetworking 和 cocoapods 似乎没有问题,我忘了添加那个细节。如果您有一个扩展程序也需要使用 AFNetworking,这只是一个问题。您的应用是否有一个正在使用 AFNetworking 且适用于 0.37.2 的扩展程序?
      • @PorterHoskins 看起来有一个 CocoaPods 错误已经写成Invalid archive produced when using "Archive" in Xcode 7 beta 5 (with watchkit extension) #4021
      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

        如果使用 Xcode 7cocoapods v.0.38.2。尝试从今天的扩展目标中删除 copy pod resources

        【讨论】:

          猜你喜欢
          • 2011-11-05
          • 2011-08-09
          • 2012-06-17
          • 1970-01-01
          • 2012-08-25
          • 2019-02-24
          • 2014-11-04
          • 2018-09-01
          相关资源
          最近更新 更多