java.lang.NoClassDefFoundError org.jivesoftware.smackx.packet.DiscoverInfo$Identity

java.lang.NoClassDefFoundError
org.jivesoftware.smackx.packet.DiscoverInfo$Identity
java.lang.RuntimeException:Unable to create application com.msqsoft.hodicloud.utils.MyApplication: java.lang.IllegalStateException: Could not init static class blocks
android.app.ActivityThread.handleBindApplication(ActivityThread.java:4641)
......
Caused by:
java.lang.NoClassDefFoundError:org.jivesoftware.smackx.packet.DiscoverInfo$Identity
org.jivesoftware.smackx.ServiceDiscoveryManager.<clinit>(Unknown Source)
java.lang.Class.classForName(Native Method)
java.lang.Class.forName(Class.java:251)
com.easemob.chat.InitSmackStaticCode.initStaticCode(Unknown Source)
com.easemob.chat.EMChat.init(Unknown Source)
com.msqsoft.hodicloud.utils.MyApplication.onCreate(MyApplication.java:118)
android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1009)
android.app.ActivityThread.handleBindApplication(ActivityThread.java:4638)
android.app.ActivityThread.access$1800(ActivityThread.java:141)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1301)
android.os.Handler.dispatchMessage(Handler.java:102)
android.os.Looper.loop(Looper.java:136)
android.app.ActivityThread.main(ActivityThread.java:5342)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:515)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
dalvik.system.NativeStart.main(Native Method)

集成环信客服SDK,一运行就崩了。后来发现有一些手机是可以运行的,逐渐排除发现,可以运行的测试机差不多都是在22以上的api,打包运行测试都正常,后来测试在19的手机上运行程序闪退了
这就很尴尬了,为什么会闪退呢,于是找来个18的手机运行,果然报了错了,而且报的错误是程序的API.怎么会出错呢,22的手机都正常.

分析原因发现:

multDexEnabled true

由于程序用的是MultiDex,这个时候,我想起来了,最近项目新增加了一个比较大的第三方sdk,导致程序又庞大了不少,原来程序就因为API数超过了64K,而分成了两个dex, 自动打包成class.dex和class2.dex.
看来应该是在dex里没找到对应的那个类,好了原因找到了.由于用的MultiDex,于是我首先便检查我的application中,果然发现了出现问题的原因,我的application中没有重写attachBaseContext方法

@Override
protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }

重写方法后,打包运行,终于看到引导页了,困扰几天的bug终于解决了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值