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

时间:2016-08-06 22:01:13

标签: swift parse-platform frameworks cocoapods carthage

首先是一些背景:

我已经按照这个question的答案发布了如何在两个iOS应用程序之间共享Swift代码。 @ Silvan-Mosberger亲切地给了我一个逐步使用迦太基的食谱。

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

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

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

我使用Pod作为ParseUI和ParseFacebookUtilsV4框架。但是,这两个框架都依赖于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内容可能“陈旧”,我找到了一种方法来强制使用以下内容更新pod here

#!/usr/bin/env bash

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

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

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

我真的可以使用一些帮助:)。

1 个答案:

答案 0 :(得分:1)

我在这篇文章中偶然发现(我的意思是经过几天的搜索后跌跌撞撞):

"Incompatible library version" when run on device

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

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