android 搭建Smack4.2.1 使用openfire 的流程和各种坑

openfire这个im服务器是开源的,但是bug不少,一堆坑。

配合android端使用的是smack,现在目前最新的是4.2.1,以前我已经搭建了4.1.4,但是smack维护还是比较多的,看看他们的更新日志,呃,新功能不少,而且还不错的样子,但是对于旧版本的话,呵呵,不好意思,不太支持,因为新版本对于旧版本来说,经常有不少的变动,主要的方法还经常改着改那的,所有更新的话需要重新去适应。

主题来了:

首先介绍资源(上不了请):

官方文档地址:https://download.igniterealtime.org/smack/docs/latest/documentation/

官方论坛(比较好找问题处理的地方):https://discourse.igniterealtime.org/

官方smack的下载地址和openfire服务器或者是各种客户端都可以在官网找得到:https://www.igniterealtime.org/index.jsp


步骤(android studio)

先构建Gradle,直接上jar

compile files('libs/xpp3-1.1.6.jar')
compile files('libs/fscontext.jar')
compile files('libs/providerutil.jar')
 
  
compile group: 'de.measite.minidns', name: 'minidns-hla', version: '0.2.2'
compile files( 'libs/smack-android-4.2.1.jar')compile files( 'libs/smack-core-4.2.1.jar')compile files( 'libs/smack-extensions-4.2.1.jar')compile files( 'libs/smack-im-4.2.1.jar')compile files( 'libs/smack-resolver-minidns-4.2.1.jar')compile files( 'libs/smack-sasl-provided-4.2.1.jar')compile files( 'libs/smack-tcp-4.2.1.jar')compile files( 'libs/jxmpp-core-0.5.0.jar')compile files( 'libs/jxmpp-jid-0.5.0.jar')compile files( 'libs/jxmpp-util-cache-0.5.0.jar')compile files( 'libs/smack-android-extensions-4.2.1.jar')

构建的问题比较多。一个个处理

1.xpp3 ,Error:trouble processing "javax/xml/namespace/QName.class这个jar下载地址:点击打开链接,完了还要删除QName.class文件后重新打包成jar

2.项目中可能会报Didn't find class "javax.naming.directory.InitialDirContext"这个错误,因为android不能加载javax.naming包,所有,当你导入smack的libs各个jar时,要注意!

千万不要把全部jar都导到自己项目中去,因为有几个包跟android有冲突,按照上面给的去导入即可,或者以后选择添加。

3.Failed resolution of: Lde/measite/minidns/hla/DnssecResolverApi;  这个错误,因为smack的jar包中还需要自己去引用minidns的jar,所有要 compile group: 'de.measite.minidns', name: 'minidns-hla', version: '0.2.2',或者是到http://mvnrepository.com/artifact/de.measite.minidns/minidns-hla/0.2.4,这个网址可以搜索到大部分日常所需的jar。


构建完,就开始connection

连接的代码请放到线程上操作。

这个就开始根据官方的教程开始,自己旧的那套木有啥用了。

首先是建立连接:

XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
  .setUsernameAndPassword("username", "password")
  .setXmppDomain("jabber.org")
  .setHost("earl.jabber.org")
  .setPort("8222")
  .build();

AbstractXMPPConnection conn2 = **new** XMPPTCPConnection(config);
conn2.connect();
运行,项目没死但警告

java.security.KeyStoreException: java.security.NoSuchAlgorithmException

需要关闭些东西:

XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
  .setUsernameAndPassword("username", "password")
  .setXmppDomain("jabber.org")
  .setHost("earl.jabber.org")
  .setPort("8222")
    .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
  .build();
这个就可以了。

conn2.connect();
conn2.login();

完成登录


你可能感兴趣的:(错误解决)