multiDex导致NoClassDefFoundError错误

当Android打包时遇到65536的错误时,我们可以在Android studio 的项目build.grade 中配置

multiDexEnabled true

进行分包处理.
multidex 插件使用Proguard 来分析你的项目并在 [buildDir]/intermediates/multi-dex/[buildType]/maindexlist.txt文件中生成一个app启动classes 的列表。但是这个列表并不是100%准确,可能会丢失一些app启动所需的classes 。导致项目运行时出现 NoClassDefFoundError 错误。

multidex 插件同样提供了方法,让我们自己将一些app启动时需要加载的类插入maindexlist.txt 文件中

multiDexKeepFile

multiDexKeepProguard

在项目目录下新建两个文件 multiDexKeep.txtmultiDexKeep.pro 文件
在 multiDexKeep.txt 中配置进需要手动插入的 类的完整路径 即 包名+类名.class
multiDexKeep_txt.png

在 multiDexKeep.pro 中配置与混淆文件的配置相同 使用 -keep class xxxx 指定类名
multiDexKeep_pro.png

然后在项目build.grade中 配置如下
multiDexKeep.png

最后 rebuild 一下你的项目,就可以了

PS : 这两个配置选择一个就可以了

坚持原创技术分享,您的支持将鼓励我继续创作!