【问题标题】:Adding BuddySDK platform to existing project that contains RestKit将 BuddySDK 平台添加到包含 RestKit 的现有项目中
【发布时间】:2014-07-28 01:28:28
【问题描述】:

我正在尝试将 BuddySDK 添加到包含已安装以下 pod 的现有项目中:

platform:ios, '7.0'
pod 'RestKit', '~> 0.23'
pod 'SSKeychain', '~> 1.2'
pod 'Reachability', '~> 3.1'

将 pod 'BuddySDK', '~> 2.0' 添加到项目后,我在 Xcode 中遇到如下错误:

 /Users/Damiano/Library/Developer/Xcode/DerivedData/XXXXXXXXX-bgsmofalkolyjqamlxutjirazrta/Build/Products/Debug-iphoneos/libPods.a(BPAFURLRequestSerialization.o)
duplicate symbol _OBJC_CLASS_$_AFHTTPBodyPart in:
    /Users/Damiano/Library/Developer/Xcode/DerivedData/XXXXXXXXX-bgsmofalkolyjqamlxutjirazrta/Build/Products/Debug-iphoneos/libPods.a(AFHTTPClient.o)
    /Users/Damiano/Library/Developer/Xcode/DerivedData/XXXXXXXXX-bgsmofalkolyjqamlxutjirazrta/Build/Products/Debug-iphoneos/libPods.a(BPAFURLRequestSerialization.o)
duplicate symbol _OBJC_METACLASS_$_AFHTTPBodyPart in:
    /Users/Damiano/Library/Developer/Xcode/DerivedData/XXXXXXXXX-bgsmofalkolyjqamlxutjirazrta/Build/Products/Debug-iphoneos/libPods.a(AFHTTPClient.o)
    /Users/Damiano/Library/Developer/Xcode/DerivedData/XXXXXXXXX-bgsmofalkolyjqamlxutjirazrta/Build/Products/Debug-iphoneos/libPods.a(BPAFURLRequestSerialization.o)
ld: 39 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我正在寻找其他问题的解决方案,例如this,但没有任何运气。 看起来发生了错误,因为 BuddySDK 包含 RestKit 中已经存在的 AFNetworking 类。

从 Podfile 中删除 RestKit pod 后,问题就消失了。 有谁可以告诉我应该怎么做才能成功安装两个 pod(RestKit 和 BuddySDK)?

提前致谢

【问题讨论】:

    标签: ios xcode afnetworking cocoapods


    【解决方案1】:

    RestKit 和 BuddySDK 都依赖于 AFNetworking。问题是BuddySDK's spec 没有将此作为依赖项添加到 CocoaPods 中,而是将 AFNetworking 自身捆绑在一起。因此,当您的项目中包含多个版本的 AFNetworking 时,会出现重复的符号。要解决此问题,您应该在 BuddySDK GitHub page 上打开一个问题,以便他们解决此问题。

    【讨论】:

    【解决方案2】:

    Buddy 提供预编译库和 Cocoapods 支持。任何开源依赖项都被“包装”到 Buddy 特定的名称中,以防止在部署为预编译二进制文件时出现重复符号问题。

    我相信您遇到的问题是您将 BuddySDK 包含在预编译库中以及 Cocoapod。

    然而,Keith 的解释在大多数情况下都是正确的 :)。

    【讨论】:

    • 由于他的重复符号来自 AFNetworking,我认为这就是包含两次的内容。
    • @KeithSmiley 是的。该问题已解决,并且是我们处理重复符号的方式中的一个“错误”。 github.com/BuddyPlatform/Buddy-iOS-SDK/issues/123
    猜你喜欢
    • 2021-05-18
    • 2014-03-18
    • 2015-01-06
    • 1970-01-01
    • 2017-03-08
    • 2013-01-22
    • 1970-01-01
    • 2015-03-20
    • 1970-01-01
    相关资源
    最近更新 更多