亚马逊最新的 SDK 与 iOS 集成出现错误
Posted
技术标签:
【中文标题】亚马逊最新的 SDK 与 iOS 集成出现错误【英文标题】:Amazon Latest SDK integration with iOS gives error 【发布时间】:2015-03-22 15:20:48 【问题描述】:我正在为 iPhone 开发一个应用程序,并集成了 Amazon SDK v 2.0.10 来执行文件传输。
当我尝试集成最新的 SDK v 即 2.0.13 时,我收到以下错误。请帮帮我。
Errors:
duplicate symbol _OBJC_IVAR_$_BFWebViewAppLinkResolverWebViewDelegate._didFailLoadWithError in:
Cryptall/Classes/Third Party Libraries/Amazon S3/frameworks/AWSiosSDKv2.framework/AWSiOSSDKv2(BFWebViewAppLinkResolver.o)
Cryptall/Classes/Third Party Libraries/Amazon S3/third-party/Bolts.framework/Bolts(BFWebViewAppLinkResolver.o)
duplicate symbol _OBJC_IVAR_$_BFWebViewAppLinkResolverWebViewDelegate._hasLoaded in:
Cryptall/Classes/Third Party Libraries/Amazon S3/frameworks/AWSiOSSDKv2.framework/AWSiOSSDKv2(BFWebViewAppLinkResolver.o)
Cryptall/Classes/Third Party Libraries/Amazon S3/third-party/Bolts.framework/Bolts(BFWebViewAppLinkResolver.o)
duplicate symbol _OBJC_METACLASS_$_BFWebViewAppLinkResolverWebViewDelegate in:
Cryptall/Classes/Third Party Libraries/Amazon S3/frameworks/AWSiOSSDKv2.framework/AWSiOSSDKv2(BFWebViewAppLinkResolver.o)
Cryptall/Classes/Third Party Libraries/Amazon S3/third-party/Bolts.framework/Bolts(BFWebViewAppLinkResolver.o)
duplicate symbol _OBJC_CLASS_$_BFWebViewAppLinkResolverWebViewDelegate in:
Cryptall/Classes/Third Party Libraries/Amazon S3/frameworks/AWSiOSSDKv2.framework/AWSiOSSDKv2(BFWebViewAppLinkResolver.o)
Cryptall/Classes/Third Party Libraries/Amazon S3/third-party/Bolts.framework/Bolts(BFWebViewAppLinkResolver.o)
duplicate symbol _OBJC_METACLASS_$_BFWebViewAppLinkResolver in:
Cryptall/Classes/Third Party Libraries/Amazon S3/frameworks/AWSiOSSDKv2.framework/AWSiOSSDKv2(BFWebViewAppLinkResolver.o)
Cryptall/Classes/Third Party Libraries/Amazon S3/third-party/Bolts.framework/Bolts(BFWebViewAppLinkResolver.o)
duplicate symbol _OBJC_CLASS_$_BFWebViewAppLinkResolver in:
Cryptall/Classes/Third Party Libraries/Amazon S3/frameworks/AWSiOSSDKv2.framework/AWSiOSSDKv2(BFWebViewAppLinkResolver.o)
Cryptall/Classes/Third Party Libraries/Amazon S3/third-party/Bolts.framework/Bolts(BFWebViewAppLinkResolver.o)
duplicate symbol _kBFMultipleErrorsError in:
Cryptall/Classes/Third Party Libraries/Amazon S3/frameworks/AWSiOSSDKv2.framework/AWSiOSSDKv2(Bolts.o)
Cryptall/Classes/Third Party Libraries/Amazon S3/third-party/Bolts.framework/Bolts(Bolts.o)
duplicate symbol _OBJC_METACLASS_$_Bolts in:
Cryptall/Classes/Third Party Libraries/Amazon S3/frameworks/AWSiOSSDKv2.framework/AWSiOSSDKv2(Bolts.o)
Cryptall/Classes/Third Party Libraries/Amazon S3/third-party/Bolts.framework/Bolts(Bolts.o)
duplicate symbol _OBJC_CLASS_$_Bolts in:
Cryptall/Classes/Third Party Libraries/Amazon S3/frameworks/AWSiOSSDKv2.framework/AWSiOSSDKv2(Bolts.o)
Cryptall/Classes/Third Party Libraries/Amazon S3/third-party/Bolts.framework/Bolts(Bolts.o)
duplicate symbol _OBJC_METACLASS_$_PodsDummy_Pods_Bolts in:
Cryptall/Classes/Third Party Libraries/Amazon S3/frameworks/AWSiOSSDKv2.framework/AWSiOSSDKv2(Pods-Bolts-dummy.o)
Cryptall/Classes/Third Party Libraries/Amazon S3/third-party/Bolts.framework/Bolts(Pods-Bolts-dummy.o)
duplicate symbol _OBJC_CLASS_$_PodsDummy_Pods_Bolts in:
Cryptall/Classes/Third Party Libraries/Amazon S3/frameworks/AWSiOSSDKv2.framework/AWSiOSSDKv2(Pods-Bolts-dummy.o)
Cryptall/Classes/Third Party Libraries/Amazon S3/third-party/Bolts.framework/Bolts(Pods-Bolts-dummy.o)
ld: 212 duplicate symbols for architecture armv7s
【问题讨论】:
【参考方案1】:此错误消息表示在链接时已在多个框架/目标中找到同名的类。
在这种情况下,它主要抱怨在主 AWSiOSSDKv2.framework
和 Bolts.framework
中都可以找到 Bolts 框架中的类。
我刚刚下载了适用于 iOS 的 Amazon SDK from here 并对其进行了反编译,它似乎确实包含了 Bolts 类(事实上,乍一看似乎有大部分用于其他第三方框架的类) 在主要的 AWS 开发工具包中。
这确实违背了他们所说的integration documentation here
按照相同的步骤,将位于第三方目录中的以下框架添加到您的项目中。
这是亚马逊如何构建和分发其 SDK 的一个错误。
您现在有两个可能的修复方法:
-
从您的项目中删除
third-party
文件夹中的框架。这一切都应该只是工作™
如上述指南中所述,使用 Cocoapods 安装 AWS 开发工具包。
我建议您联系亚马逊为未来的用户报告此问题。
【讨论】:
感谢您提请我们注意该问题。适用于 iOS 2.0.13 和 2.0.14 的 AWS 移动开发工具包无意中在AWSiOSSDKv2.framework
中嵌入了第三方库。我们更新了 CocoaPods 的版本,新版本将每个 pod 添加到 Other Linker Flags,这导致在主框架中包含了第三方库。我们已经发布了 2.0.15 来解决这个问题。谢谢,
感谢洋介github.com/aws/aws-sdk-ios/issues/139#issuecomment-71288646
在替换 2.0.15 后开始接收,架构 armv7 的未定义符号:“_OBJC_CLASS_$_FMDatabaseQueue”,引用自:AWSiOSSDKv2 中的 objc-class-ref(AWSKinesisRecorder.o) ld: symbol(s)未找到架构 armv7 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
您应该发布一个新问题并在此处粘贴链接。 cmets不是回答问题的好地方以上是关于亚马逊最新的 SDK 与 iOS 集成出现错误的主要内容,如果未能解决你的问题,请参考以下文章