所有 AWS SDK (El Capitan + XCode 7) 的 pod 更新结果为 "duplicate interface definition for class xxx"

pod update results in "duplicate interface definition for class xxx" for all AWS SDK (El Capitan + XCode 7)

刚才,我更新了我的AWS SDK pods,我非常后悔。我第一次看到这个是在更新 pods 时:

dyld: warning, LC_RPATH @executable_path/../../../../../../../SharedFrameworks in /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/../../..//DVTInstrumentsFoundation.framework/Versions/A/DVTInstrumentsFoundation being ignored in restricted program because of @executable_path dyld: warning, LC_RPATH @executable_path/../lib in /Applications/Xcode.app/Contents/Frameworks/IDEFoundation.framework/Versions/A/../../../../Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libclang.dylib being ignored in restricted program because of @executable_path

dyld: warning, LC_RPATH @executable_path/../lib in /Applications/Xcode.app/Contents/Frameworks/IDEFoundation.framework/Versions/A/../../../../Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib being ignored in restricted program because of @executable_path

dyld: warning, LC_RPATH @executable_path/../Frameworks in /Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/MacOS/Xcode3Core being ignored in restricted program because of @executable_path

然后当我打开我的项目并构建时,我遇到了很多构建失败,抱怨同样的事情 Duplicate interface definition for class XXX:

我尝试了很多解决方案,重新安装AWS SDK pods,重新安装cocoapods,将cocoapods降级到0.38.2,将AWS SDK pods降级到2.2 .6,但 none 有帮助。如果我注释掉 Objective-C 桥头中的导入,我没有这些错误,但 Xcode 只是抱怨没有找到代码中使用的一些 classes。但我不认为将它们注释掉是正确的解决方案。

嗯,我搜了https://github.com/CocoaPods/CocoaPods/issues/4302,好像是cocoapods的问题?

有人对此有任何想法吗?谢谢。

回答(希望:))

  • 从桥接中删除#import header
  • 在适当的 Swift 文件中添加 "import AWSS3"(或您需要的任何 class)

说明

从 Cocoa 的 0.36 版开始pods,如果它们在 Swift 代码中或者如果它们声明,则不需要通过桥接 header 导入 pods "use_frameworks!"(AWS 在其版本 2.2.1

中所做的

编辑

在我的例子中,我将 "pod 'AWSiOSSDKv2', '~> 2.0'" 替换为 "pod 'AWSS3', '~> 2.2.0'" 并在桥接文件中添加了“#import”。