发生 Caused by: java.lang.VerifyError: Verifier rejected class 及 java.lang.NoClassDefFoundError
依赖第三方应用时,丢包/类、方法等 运行时报错
1、检查分包问题,主要类分包放到主dex中
注意
:在
MultiDex.install()
完成之前,不要通过反射或 JNI 执行
MultiDex.install()
或其他任何代码。MultiDex 跟踪功能不会追踪这些调用,从而导致出现
ClassNotFoundException
,或因 DEX 文件之间的类分区错误而导致验证错误。如果不是这个问题 继续看下面
2、检查依赖版本编译环境是否一致
3、检查插件侵入式代码影响(重要)
4、升级所依赖版本
发生 Caused by: java.lang.VerifyError: Verifier rejected class 及java.lang.NoClassDefFoundError依赖第三方应用时,丢包/类、方法等 运行时报错1、检查分包问题,主要类分包放到主dex中注意:在MultiDex.install()完成之前,不要通过反射或 JNI 执行MultiDex.install()或其他任何代码。MultiDex 跟踪功能不会追踪这些调用,从而导致出现ClassNotFoun...
出现这个错误是因为改变了原有类继承的父类。导致Instant Run 增量编译时分包出错,验证继承关系时造成了混乱。
可以Build–》Clean Proj
ect
后,重新编译即可。
@希望能帮到大家!
报错详细日志:
07-04 20:13:42.792 26704-26704/
com
.test.client E/
Android
Runtime: FATAL EXCEPTION: main
Process:
com
.test.client, PID: 26704
1.编译报错具体内容
我们app的中间层核心sdk是一个自己编译的jar包,几年以来各类机型一直都没有出现过Caus
ed
by:
java
.
lan
g.
Verify
Error
的报错,如图所示:
直到2021年中旬开始有客户反馈集成了我们的插件包(包含该jar)后,在
android
11系统的手机上必然崩溃,通过错误日志文件可以看到是一个类型检查错误,即上图所示的Caus
ed
by:
java
.
lan
g.
Verify
Error
,具体表现是找不到getCooperateService()方法返回的对象(一个ai
报错代码我修改了smali代码 invoke-virtual {p0}, L
com
/test/soma/video/TestActivity;
->getApplicationContext()
Lan
droid/content/Context;
move-result-obj
ect
v3/*
对应
java
源码是
this.getApplicationContext()
*/正确代码 iget-
Flink R
ed
is Conn
ect
or 的报错 "Caus
ed
by:
java
.
lan
g.
Verify
Error
: Bad return type" 通常是由于类型不匹配导致的。这种情况通常发生在使用 Flink R
ed
is Conn
ect
or 的时候,当你尝试将类型为 T 的元素写入 R
ed
is 时,但是 T 的类型并不是 R
ed
is Conn
ect
or 支持的类型。
例如,如果你使用 Flink R
ed
is Conn
ect
or 将字符串写入 R
ed
is,但是你定义的 T 是一个整数,那么你就会看到 "Caus
ed
by:
java
.
lan
g.
Verify
Error
: Bad return type" 的错误。
解决方法是确保你正确地定义了 T 的类型,并且这个类型是 R
ed
is Conn
ect
or 支持的。如果你不确定 T 的类型应该是什么,可以参考 Flink R
ed
is Conn
ect
or 的文档来了解支持的类型。