Swift、iOS 8+ 私有共享库依赖问题

Swift, iOS 8+ private shared library dependency issue

首先是一些上下文:

我遵循了这个 的答案,我发布了关于如何在两个 iOS 应用程序之间共享 Swift 代码。 @Silvan-Mosberger 亲切地给了我一个使用迦太基的分步食谱,我正在关注。

私有共享框架仅使用 Carthage 进行依赖管理,但我的消费应用程序同时使用 Carthage 和 Pods(因为某些框架仅适用于 Pod)。

我的消费应用程序将 Carthage 用于共享库也使用的所有框架。也就是说,Cartfiles 看起来是一样的,只是消费应用程序也依赖于共享框架。

我的问题(我认为)与 Parse 框架、ParseUI 框架和 ParseFacebookUtilsV4 框架有关。 Parse 可以与 Carthage 一起使用,但 ParseUI 和 ParseFacebookUtilsV4 不能。

我正在为 ParseUI 和 ParseFacebookUtilsV4 框架使用 Pod。但是,这两个框架都依赖于 Parse。因此,Pod 提供了一个 Parse 框架(Carthage 也提供了一个)。它们应该是相同的版本(我没有指定版本)。

现在解决实际问题 (TL;DR):

当我 运行 我的应用程序时,它立即终止并出现以下错误:

dyld: Library not loaded: @rpath/Parse.framework/Parse
  Referenced from: /var/containers/Bundle/Application/6B8D5312-7690-477F-B406-3CA8F5C994CF/x.app/x
  Reason: Incompatible library version: x requires version 1.0.0 or later, but Parse provides version 0.0.0

这可能是 2 个 Parse 框架的问题吗?也许完全不同?

如有任何帮助,我们将不胜感激。

彼得...

更新

因此,为了弄清楚发生了什么,我创建了一个新的应用程序项目来模拟失败的应用程序。我正在使用相同的 Carthage 文件和 Podfile。

新应用程序似乎按预期运行。我可以调用 Parse 库中的方法。没有崩溃。

考虑到崩溃应用程序中的 pod 内容可能是 "stale",我找到了一种使用以下方法强制更新 pod here 的方法:

#!/usr/bin/env bash

rm -rf "${HOME}/Library/Caches/CocoaPods"
rm -rf "`pwd`/Pods/"
pod update

不幸的是,这没有帮助。应用程序仍然崩溃,如上所示。

有人对这可能是什么有什么建议吗?关于如何确定错误的任何建议?

我真的需要一些帮助:)。

我偶然发现了这个 post:

"Incompatible library version" when run on device

长话短说,通过将我的 CocoaPods 更新到 1.0.1,问题简单而神奇地消失了。

我没有在模拟器上试过这个应用程序。当我这样做时,它 运行 没有导致我(我希望是)解决方案的 dyld 错误。