【问题标题】:java.lang.VerifyError in Application class for a small percentage of users一小部分用户的应用程序类中的 java.lang.VerifyError
【发布时间】:2018-01-07 22:27:43
【问题描述】:

(这不是其他类似问题的重复,因为这只发生在一小部分用户身上,我无法重新创建)

在我最新的生产版本中,我突然看到java.lang.VerifyError 类型的崩溃出现在我的Application 类中的一行中。

这行很简单:

Settings.init(this);

其中SettingsSharedPreferences 周围的便利包装类。似乎只有不到 1% 的用户找不到该类。

我们无法在我团队的任何设备上重现崩溃,Google Play 的发布前报告显示 0 个错误。

这是完整的堆栈跟踪:

java.lang.VerifyError: 
at com.my_package.MyApplication.onCreate (MyApplication.java:74)
at android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1036)
at android.app.ActivityThread.handleBindApplication (ActivityThread.java:6321)
at android.app.ActivityThread.access$1800 (ActivityThread.java:222)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1861)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:158)
at android.app.ActivityThread.main (ActivityThread.java:7229)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1120)

Settings.init:

public static void init(Context context) {
    sPrefs = PreferenceManager.getDefaultSharedPreferences(context);
}

我应该补充一点,这个问题在我拥有的单个生产应用程序版本上发生了 97%,我无法重新创建运行该版本或之后的任何版本的崩溃,但似乎只有那个版本受到影响,到目前为止所有版本因为几乎没有发生这种崩溃。

但是,我仍然看到该应用版本在 Google Play 中出现崩溃,我担心它可能会在未来的版本中再次出现,因为我认为我没有更改该版本中的任何内容以任何与堆栈跟踪相关的方式。

【问题讨论】:

  • 看起来像一个错误。检查这个issuetracker.google.com/issues/38217608
  • 我不认为报告的错误是相关的,它是针对自定义 ROM 的,我不认为我的很多用户是用户有问题的 ROM
  • 会不会是SharedPreferences 对象在您调用Application 子类onCreate() 中的Settings.init(this) 时还没有准备好?您是否可以考虑对该对象进行延迟初始化?
  • 堆栈显示 Settings 类本身的错误,没有进入 Settings 构造函数并落在初始化 SharedPreferences 上
  • 你介意分享一段与 Settings.init(this); 相关的代码吗? ?

标签: android crash verifyerror android-application-class


【解决方案1】:

这是一个艺术代码错误,这意味着找不到某个类,你可以看到这个java.lang.VerifyError in Application class for a small percentage of users ,这个问题听起来是正确的解决方案。

【讨论】:

  • 能否请您添加问题的英文摘要和可能的解决方案?
  • 谢谢,但链接似乎没有解决方案,它只是说“再试一次版本 1.8.0”意味着他们已经在某些版本中修复了它,但不解释如何.
  • 上面的链接说VerifyError来自这种情况:您的应用程序有多个dex,并且您的Setting类可能不在第一个dex中(或与MyApplication类在同一个dex中),所以我想您可以尝试将 Setting 保留在第一个 / 主 dex 中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-04
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
相关资源
最近更新 更多