小言_互联网的博客

Didn't find class "androidx.multidex.MultiDexApplication" 问题的解决

426人阅读  评论(0)

问题描述

当时要做的项目要添加数据库,想使用Room持久化类库,写好代码后发现了一连串的问题,一路改过来,最后出现的这个问题耗了我大半天的时间,我看了也试了很多其他人的解决方法才改好
由于自己找到的解决方法和其他大部分人的不一样,所以特地分享处理,希望能帮到遇到同样问题正在苦恼的朋友们

我当时的具体情况:
由于我添加了Room类的使用,导致项目的方法数超过了65535,必须使用Multidex,将apk分包
我用的新版Android Studio新建项目的时候,依赖库就自动给我配用了新的androidx,androidx是对之前的support包的整合,而网上有关的解决方案大都是之前support包的版本的,很多东西根本不适用,新的Androidx还比旧版容易出问题,反正我在做项目的时候就因为版本差异遇到了很多问题,非常难受
也正是因为感觉相关的问题针对Androidx版本的解决案例太少了,所以才想着发出来给大家作个参考
首先我参照着网上针对旧版support包的主流解决方法操作了一遍,因为只是包名的差异,将网上的解决方法中的包名替换成Androidx的对应包名就可以了。但是操作完之后我的问题并没有得到解决,编译时没有报错,但是安装app到模拟器上,发现app根本运行不了
我修改manifest.xml文件中application的名字为androidx.multidex.MultiDexApplication后,没有发生任何变化,编译器仍然告诉我说在一个“我的项目名-2/base.apk”的目录中找不到MultiDexApplication这个类,但当我继承MultiDexApplication重写了Application后,提示信息变成了在一个“我的项目名-1/base.apk”的目录中找不到MultiDexApplication这个类
推测是apk包被分成了两个dex,但我还是不知道怎么解决
直到我试了stackoverflow的一个帖子的一个不起眼的回答中的解决方法,才运行成功

问题解决之后,我再把代码改回原来的样子发现也不报错了,好像修改了某些设置,是删代码无法撤销的,所以就贴不了程序报错的截图了

当时的报错信息大概就是Didn’t find class “androidx.multidex.MultiDexApplication”

解决方法

1.首先得把网上主流的执行方法走一遍:
1)首先修改app下的build.gradle配置文件,启用MultiDex并包含MultiDex支持:

defaultConfig {
multiDexEnabled true
}
dependencies {
implementation ‘androidx.multidex:multidex:2.0.1’
}

如图


2)若你没有重写Application,修改manifest.xml中application的名字为androidx.multidex.MultiDexApplication

若你的项目中需要重写Application,则让你的Application继承自MultiDexApplication

如果你的Application已经继承了其他类并且不想做改动,那么还有另外一种使用方式,覆写attachBaseContext()方法:
@Override
protected void attachBaseContext(android.content.Context base) {
super.attachBaseContext(base);
android.support.multidex.MultiDex.install(this);
}

以上为网上的主流解决方式,如果你进行了以上操作之后就解决了问题,那么恭喜你,你很幸运

如果你和我一样仍旧没有解决问题,请看下方的操作

2.添加类路径com.google.gms:google-services:3.2.1,以及添加com.google.android.gms:play-services-analytics依赖包

首先在project目录下的build.gradle文件中添加类路径
在dependencies中添加这么一行:
classpath 'com.google.gms:google-services:3.2.1’

接着在app目录下的build.gradle文件中添加依赖包
在dependencies中添加这么一行:
implementation ‘com.google.android.gms:play-services-analytics:16.0.5’

如图:

推测解决的原因是重置了寻找的类路径,而之前系统没能在正确的路径下寻找

下面贴上我参考的帖子:
Didn’t find class “android.support.multidex.MultiDexApplication” on path: DexPathList

参考的是第10层的回答,如下图

如果这篇文章帮到了你,请为我点个赞,谢谢大家


转载:https://blog.csdn.net/qq_21456825/article/details/105770704
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场