Android studio 解决AndroidRuntime: java.lang.VerifyError

由于项目是在同事那儿拷过来导入到studio的,测试机差不多都是在22以上的api,打包运行测试都正常,后来测试在19的手机上运行程序闪退了.o my god !!!
这就很尴尬了,为什么会闪退呢,于是找来个18的手机运行,果然报了错了,而且报的错误是程序的API.怎么会出错呢,22的手机都正常.

E/AndroidRuntime: java.lang.VerifyError: com/**/watch/utils/StandardGrowTool
E/AndroidRuntime:     at com.**.watch.BaseApplication.onCreate(BaseApplication.java:131)
E/AndroidRuntime:     at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
E/AndroidRuntime:     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4570)
E/AndroidRuntime:     at android.app.ActivityThread.access$1300(ActivityThread.java:147)
E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1332)
E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5265)
E/AndroidRuntime:     at 
Package: com.richfit.qixin.chinapost v2022091300 (1.5.2) PID: 19498 Foreground: Yes Process-Runtime: 423 Timestamp: 2025-10-18 07:27:35.940+0800 Crash-Handler: com.android.internal.os.RuntimeInit$KillApplicationHandler Loading-Progress: 1.0 Dropped-Count: 0 java.lang.VerifyError: Verifier rejected class com.richfit.chinapost.ChinaPostApp: void com.richfit.chinapost.ChinaPostApp.<init>() failed to verify: void com.richfit.chinapost.ChinaPostApp.<init>(): [0x0] Constructor returning without calling superclass constructor (declaration of 'com.richfit.chinapost.ChinaPostApp' appears in /data/user/0/com.richfit.qixin.chinapost/Anonymous-DexFile@1177492056.jar) at java.lang.Class.newInstance(Native Method) at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76) at s.h.e.l.l.A.instantiateApplication(Unknown Source:14) at android.app.Instrumentation.newApplication(Instrumentation.java:1367) at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1566) at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1479) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:8574) at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2792) at android.os.Handler.dispatchMessage(Handler.java:115) at android.os.Looper.loopOnce(Looper.java:298) at android.os.Looper.loop(Looper.java:408) at android.app.ActivityThread.main(ActivityThread.java:9952) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:613) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1074)
10-24
提供的引用内容未涉及 AndroidRuntimejava.lang.AssertionError 且包含 java.lang.Throwable 的错误解决方案相关信息。不过可以从通用的 Java 异常处理思路来尝试解决此类问题。 `java.lang.AssertionError` 是 `java.lang.Throwable` 的子类,当断言失败时会抛出该错误。在 Java 中,断言是一种调试工具,用于在代码中插入检查点。当断言条件为 `false` 时,会抛出 `AssertionError`。 以下是一些可能的解决办法: 1. **检查断言条件**:查看代码中使用断言的地方,确保断言条件逻辑正确。例如: ```java public class AssertionExample { public static void main(String[] args) { int num = -1; // 检查 num 是否为正数 assert num > 0 : "num 必须为正数"; System.out.println("num 是正数: " + num); } } ``` 在上述代码中,如果 `num` 为负数,断言条件 `num > 0` 为 `false`,会抛出 `AssertionError`。需要检查 `num` 的赋值逻辑是否正确。 2. **启用断言**:在 Java 中,默认情况下断言是禁用的。如果要使用断言,需要在运行程序时启用。可以通过 `-ea`(`-enableassertions`)选项来启用断言。例如,在命令行中运行 Java 程序时可以这样使用: ```bash java -ea AssertionExample ``` 3. **异常捕获处理**:虽然 `AssertionError` 通常是在调试阶段使用,但在某些情况下,也可以在代码中捕获并处理该错误。例如: ```java public class AssertionExample { public static void main(String[] args) { try { int num = -1; assert num > 0 : "num 必须为正数"; System.out.println("num 是正数: " + num); } catch (AssertionError e) { System.err.println("断言失败: " + e.getMessage()); } } } ```
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值