在利用androidx版本写demo时,在添加了一些依赖后,遇到了java.lang.ClassNotFoundException
bug,这就很奇怪了,我就添加rxjava3的依赖,就给我报这个错误。
添加的依赖如下:
implementation 'io.reactivex.rxjava3:rxjava:3.0.0'
具体报错如下:
第一反应是先看Error
部分的提示,这里提示找不到dex文件中找不到自定义的Application类,所以优先排查mutildex相关问题。查了半天毫无头绪,我的配置也没问题。
只能扩大排查范围,看下logcat中崩溃处的其他异常信息,上图中的黄色部分的Warning
信息:
W/zygote64: Failure to verify dex file '/data/app/com.xxx.app-wr25p09u-u7SF8Gc1TW8qg==/base.apk': Bad method handle type 7
W/ResourceType: No package identifier when getting name for resource number 0x00000000
根据Bad method handle type 7
这个信息进行排查,找到了解决方式。具体如下:
在app/build.gradle文件的android闭包内,添加如下代码:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
sync运行一气呵成,奈斯。
这个错误出现的原因是,我引入的rxjava3用到了java8的特性,需要手动配置下。