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 错误。
首先是一些上下文:
我遵循了这个
私有共享框架仅使用 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 错误。