Xcode8之后 XMPP 重定义问题 Redefinition of module 'dnssd'

时间:2022-01-28 19:46:32

在升级Xcode到8之后,原来的关于XMPP的项目运行报错,错误信息为: Redefinition of module 'dnssd'

Xcode8之后 XMPP 重定义问题 Redefinition of module 'dnssd'

系统和XMPP框架同时用到了 'dnssd',大概就是错误的原因。

网上关于这方面的信息不多,但是还是在 * 中找到了一些信息,原文链接:http://*.com/questions/39930741/redefinition-of-module-dnssd-in-swift-3。

解决方案:# The version pushed to CocoaPods is very out of date, use master branch for now 
pod 'XMPPFramework', :git => "https://github.com/robbiehanson/XMPPFramework.git", :branch => 'master'
#pod 'XMPPFramework',大概意思是需要更新XMPP框架,需要把podfile文件中的 "pod 'XMPPFramework',        '~> 3.6.6'  "用 " # The version pushed to CocoaPods is very out of date, use master branch for now
pod 'XMPPFramework', :git => "https://github.com/robbiehanson/XMPPFramework.git", :branch => 'master'
# pod 'XMPPFramework' " 来替换或者直接改成 "pod 'XMPPFramework',        '~> 3.7.0'  "。

 

在pod update的过程中有的童鞋会遇到下面这样的错误:

Xcode8之后 XMPP 重定义问题 Redefinition of module 'dnssd'

这个是因为更新的XMPP框架中支持的最低版本为iOS 8.0 / macOS 10.8.

The minimum deployment target is iOS 8.0 / macOS 10.8.

所有需要把podfile中的 "platform:ios,"7.0" " 7.0改为8.0以上。

等了好久终于等到pod更新完成了,可是运行项目又出现了一堆错误,不,是一大堆错误。

Xcode8之后 XMPP 重定义问题 Redefinition of module 'dnssd'

别着急,pod更新之后会遇到这种问题,到报错的工程里面搜一下Enable Strict Checking of objc_msgSend Calls,改成相反的值就行了,别改没有报错的工程。

改完之后的错误明显减少了,可是还是有错误,如下:

Xcode8之后 XMPP 重定义问题 Redefinition of module 'dnssd'

Module 'KissXML' not found 找不到了,解决方案是用 #import "DDXML.h" 替换 @import KissXML;

这个替换完了还有错误

Xcode8之后 XMPP 重定义问题 Redefinition of module 'dnssd'

CocoaAsyncSocket 又找不到了...,这里用@class GCDAsyncSocket; 替换@import CocoaAsyncSocket;

原文链接http://mp.weixin.qq.com/s/mvYY6w9gRt5_H-JEzZqY1A