想使用最新的Smack4.1.0 在我的项目当中,就先搞一个单独的,希望能跑起来。结果就是简单的都弄不起来。导入所有包后,可以编译通过。
但是一使用到它的包,就抛个异常给我。整了半天也没弄明白是包的原因还是哪配置的问题。
在网上找到这个资料:https://github.com/igniterealtime/Smack/wiki/Smack-4.1-Readme-and-Upgrade-Guide
也不会弄,又是phython又是maven又是Ant的,英语也不好,不知道怎么弄。
有用过的大神能使用的吗?求源码!!!
这是我的代码,就是按官方介绍打出来的:
public void onClick(View v){
new Thread(new Runnable() {
@Override
public void run() {
try {
XMPPTCPConnection connection = getConnection();
connection.connect();
connection.login("anytime_eeeeee","qq123456","ubuntu");
} catch (SmackException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XMPPException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
private XMPPTCPConnection getConnection(){
XMPPTCPConnectionConfiguration.Builder builder = XMPPTCPConnectionConfiguration.builder();
builder.setServiceName("ubuntu");
builder.setHost("58.64.162.184");
builder.setPort(5222);
builder.setCompressionEnabled(false);
builder.setDebuggerEnabled(false);
builder.setSendPresence(true);
builder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
XMPPTCPConnection connection = new XMPPTCPConnection(builder.build());
return connection;
}
重新建了个工程,导入了相应的包,在官网的论坛上找到了一个例子,按着例子做就可以运行并跑起来了。
https://community.igniterealtime.org/thread/55618,当然这个是有问题的,他没有使用到server name
我把我的代码放上来,希望新来的学员不要被这恶心的搭环境被搞怕了。
代码地址:http://download.csdn.net/detail/ysn003/8786987
是否在gradle里使用了混淆??????
你用的IDE是ADT还是Android Studio?这个就是没有找到相关的类,还是导入的包有问题。
找不到包异常(NoClassDefFoundError) Didn't find class "org.jivesoftw"你可以上网查一下包含这个类的包
android客户端一般使用asmack,你可以换成这个jar试试。
肯定是依赖路径的问题。看看order an export 有没有把smack的包导出。另外可以反编译 apk,看看 反编译后 到底有没有 那个类。
再看看 混淆问题。
终于找到真正原因了!
因为之前弄的是测试项目,所以又把所有的smack jar 包制作成 library.结果问题再次出现,
解决方法是:
右键你的项目->Build path ->Configure Build path ->Order and Export
把你制作 的User library 勾选上即可!
图片说明
其实那个勾选不选上到底是什么原理,搞不懂,有哪位懂的分享一下,谢谢
看看order an export 有没有把smack的包导出
export and order 勾选上,意思就是 导出apk的时候,一起打包到apk中