Smack XMPP android 连接时崩溃

Posted

技术标签:

【中文标题】Smack XMPP android 连接时崩溃【英文标题】:Smack XMPP android Crash on Connecting 【发布时间】:2017-09-15 10:33:13 【问题描述】:

我在 android 应用程序中使用 Smack XMPP 之前,除了今天早上它开始无缘无故地崩溃之外,一切都运行得非常顺利。 这是我在 Gradle 中包含的内容:

compile 'org.igniterealtime.smack:smack-android:4.2.0'
compile 'org.igniterealtime.smack:smack-tcp:4.2.0'
compile 'org.igniterealtime.smack:smack-android-extensions:4.2.0' 

并且日志正在打印此错误

java.lang.ExceptionInInitializerError 在 de.measite.minidns.DNSName.from(DNSName.java:287) 在 de.measite.minidns.dnssec.DNSSECClient.(DNSSECClient.java:48) 在 de.measite.minidns.hla.DnssecResolverApi.(DnssecResolverApi.java:47) 在 de.measite.minidns.hla.DnssecResolverApi.(DnssecResolverApi.java:38) 在 de.measite.minidns.hla.DnssecResolverApi.(DnssecResolverApi.java:31) 在 org.jivesoftware.smack.util.dns.minidns.MiniDnsResolver.(MiniDnsResolver.java:54) 在 java.lang.Class.classForName(本机方法) 在 java.lang.Class.forName(Class.java:324) 在 org.jivesoftware.smack.SmackInitialization.loadSmackClass(SmackInitialization.java:218) 私有静态最终 DNSName DEFAULT_DLV = DNSName.from("dlv.isc.org");

在这一行

  XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration
                .builder();

我搜索了很多,但找不到任何东西。

谢谢

【问题讨论】:

我在访问 XMPPTCPConnectionConfiguration.builder() 时也遇到了类似的错误;这似乎是一个错误。访问:community.igniterealtime.org/thread/61235 了解更多信息 我现在遇到同样的问题..如何解决? 【参考方案1】:

您好,我也遇到了这个问题。

问题来自一个依赖项“de.measite.minidns”,该依赖项推送了带有错误的更新。所以我通过排除自动依赖并包括最后一个稳定版本来修复它。它解决了我的问题。希望对你们有用

    compile ('org.igniterealtime.smack:smack-android:4.2.0') 
      exclude  group:'de.measite.minidns'
    
    compile ('org.igniterealtime.smack:smack-tcp:4.2.0') 
      exclude  group:'de.measite.minidns'
    
    compile group: 'de.measite.minidns', name: 'minidns-hla', version: 
    '0.2.2'

【讨论】:

您能否分享您的 Gradle,因为我添加了上述行,但同样的问题正在发生 @NooruddinLakhani 我需要在“依赖项”下添加这些行吗?? @Syeda 是的,您需要在依赖项中添加这些 不适合我:(你能分享你的gradle吗? 需要在config前加上这一行" SmackConfiguration.addDisabledSmackClass("org.jivesoftware.smack.util.dns.minidns.MiniDnsResolver");"【参考方案2】:
dependencies 

compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', 
    exclude group: 'com.android.support', module: 'support-annotations'
)
//open due to the need to get offline messages
compile 'org.igniterealtime.smack:smack-extensions:4.2.0'
compile 'org.igniterealtime.smack:smack-im:4.2.0'

compile  ('org.igniterealtime.smack:smack-android:4.2.0') 
    exclude  group:'de.measite.minidns'



compile 'org.igniterealtime.smack:smack-experimental:4.2.0'

// Optional for XMPPTCPConnection
compile ('org.igniterealtime.smack:smack-tcp:4.2.0') 
    exclude  group:'de.measite.minidns'


compile group: 'de.measite.minidns', name: 'minidns-hla', version:
        '0.2.2'

【讨论】:

谢谢,但也需要添加“SmackConfiguration.addDisabledSmackClass("org.jivesoftware.s‌​mack.util.dns.minidn‌​s.MiniDnsResolver");‌​”。现在工作:)

以上是关于Smack XMPP android 连接时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Smack 4.1 从 Android 连接 apache vysper XMPP 服务器

Xmpp 连接因 smack 失败

Android基于XMPP Smack Openfire下学习开发IM连接断开重连

使用 smack 的 Android XMPP:服务器没有响应

如何为 xmpp 实现 smack

Android XMPP 基本连接