【问题标题】:Swift, iOS 8+ private shared library dependency issueSwift,iOS 8+ 私有共享库依赖问题
【发布时间】:2016-12-13 01:00:18
【问题描述】:

首先是一些上下文:

我已经按照question 的答案发布了关于如何在两个 iOS 应用程序之间共享 Swift 代码的帖子。 @Silvan-Mosberger 好心地给了我一个使用迦太基的分步食谱,我正在关注。

私有共享框架仅使用 Carthage 进行依赖管理,但我的消费应用程序同时使用 Carthage 和 Pod(因为某些框架仅适用于 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

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

有人对这可能是什么有任何建议吗?关于如何确定问题所在有什么建议吗?

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

【问题讨论】:

    标签: swift parse-platform frameworks cocoapods carthage


    【解决方案1】:

    我偶然发现(我的意思是经过几天的搜索后偶然发现):

    "Incompatible library version" when run on device

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

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

    【讨论】:

      猜你喜欢
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 2012-06-19
      • 2012-04-05
      相关资源
      最近更新 更多