在利用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的特性,需要手動配置下。