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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容