android studio集成第三方库文件,在5.0以下报错:java.lang.NoClassDefFoundError

之前测试提了一个bug,5.0以下安装运行会报错误,5.0以上完全没有问题,一脸懵逼,经过网上查找资料,总结如下:

错误例子:java.lang.NoClassDefFoundError: qalsdk.r(这边引用了,腾讯IM的库)

原因:Android应用方法总数限制造成的

         当Android系统安装一个应用的时候,需要对Dex格式文件加载处理(APK里面的classes.dex),在早期的Android系统中,处理的时候会把每一个类的方法id检索起来,存在一个链表结构里面。但是这个链表的长度是用一个short类型来保存的,导致了方法id的数目不能够超过65536个(包括Android框架、类库和你自己开发的代码)。当一个项目足够大,引用三方库太多的时候,显然这个方法数的上限是不够的。为了解决方法数超限的问题,需要将该dex文件拆成两个或多个,为此谷歌官方推出了multidex兼容包,配合AndroidStudio实现了一个APK包含多个dex的功能,而Android 5.0及以上运行时它原生支持从APK文件加载多个DEX文件。

解决方法如下:

         第一步:在app gradle 配置文件中添加  multiDexEnabled    true

            第2步:

                           方式一: 在manifest文件中,添加MultidexApplication Class的引用,如下图所示

                            方式二: 如果重写了 Application

                                       方法①,对Application的继承方式做一个修改

                                  方法②,重写父类方法


番外:之前只在app gradle 配置文件中添加multiDexEnabled    true, 以为不是这个问题,找了半天,原来还要进行下一步操作

android MultiDex 原理等更多  可以参考这篇文章:http://blog.csdn.net/djy1992/article/details/51162013

你可能感兴趣的:(android studio集成第三方库文件,在5.0以下报错:java.lang.NoClassDefFoundError)