参考网站:
http://www.cnblogs.com/windy-love/p/3184304.html
http://community.igniterealtime.org/message/201866#201866
http://blog.csdn.net/wangyi_lin/article/details/6953606
在jitsi-android中直接使用smack库中的类时,运行时会遇到java.lang.NullPointerException的错误。查阅上述网站后,猜测原因大概与之相同。
问题分析摘要:
国外网站解释,这对asmack是个全局存在的问题。原因就是通常在普通版本smack的META-INF目录下的smack.providers文件,在android中不能自动加载,因为jar包的打包方式。因此所以的providers都必须手动加载。
smack中:每个provider都会有一个静态函数,将自己注册到ProviderManager中。此注册通常是在class load时完成,但是在android中class load似乎没有正常工作,因此没有provider被注册到ProviderManager中
注意:
在Android中可以动态加载,但无法像Java中那样方便动态加载jar
原因:Android的虚拟机(Dalvik VM)是不认识Java打出jar的byte code,需要通过dx工具来优化转换成Dalvik byte code才行。
refer to:
http://www.cnblogs.com/developerY/archive/2013/04/18/3027997.html
http://blog.csdn.net/czh0766/article/details/6736826
http://www.cnblogs.com/franksunny/archive/2011/09/27/2193085.html
http://www.cnblogs.com/over140/archive/2011/11/23/2259367.html