Android Studio 中的 Smack 让我很困惑

Posted

技术标签:

【中文标题】Android Studio 中的 Smack 让我很困惑【英文标题】:Smack in Android Studio really puzzle me 【发布时间】:2015-11-21 05:24:01 【问题描述】:

我在更改为 AS 之前使用 Eclipse,但有些事情让我很困惑。 我将 Smack4.1.4 导入 app/libs,并设置依赖项。 一切看起来都不错,无一例外。 原因:

java.lang.ClassNotFoundException: 找不到类 "javax.naming.directory.InitialDirContext"

我搜了一下,好像javax.naming不在android的白名单里。

那么我如何在 AS 中使用 smack?这对我来说是个大问题。 有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

您需要做的是停止导入 jar 文件并开始使用 gradle 来解决依赖关系,这是在 Android Studio 与 Eclipse 中导入库的主要区别,仅在存储库中不可用时才导入 jar:

https://github.com/igniterealtime/Smack/wiki/Smack-4.1-Readme-and-Upgrade-Guide

例子:

repositories 
  maven 
    url 'https://oss.sonatype.org/content/repositories/snapshots'
  
  mavenCentral()


dependencies 
  compile "org.igniterealtime.smack:smack-android-extensions:4.1.0"
  compile "org.igniterealtime.smack:smack-tcp:4.1.0"

【讨论】:

【参考方案2】:

好的,现在我解决这个问题。

其实我还需要导入以下jar:

    dnsjava:dnsjava org.jxmpp:jxmpp-core org.jxmpp:jxmpp-jid org.jxmpp:jxmpp-util-cache

希望我的回答能帮助像我这样的初学者。 :)

【讨论】:

【参考方案3】:

1 天后,我终于在 nativescript android 中解决了这个问题。 不要添加 dnsjava.(version).jar , smack-java7-version.jar 添加 smack-resolver-dnsjava-4.2.1.jar

【讨论】:

以上是关于Android Studio 中的 Smack 让我很困惑的主要内容,如果未能解决你的问题,请参考以下文章

android中的XMPP连接使用smack

如何让客户了解 Smack 中的新 HostedRoom?

在android中使用smack进行群聊中的“服务器无响应”异常

如何为 xmpp 实现 smack

如何在 Android 的 Smack 4.2 中了解 1:1 对话中的打字状态?

Android smack 服务器收据确认