【发布时间】:2018-01-07 22:27:43
【问题描述】:
(这不是其他类似问题的重复,因为这只发生在一小部分用户身上,我无法重新创建)
在我最新的生产版本中,我突然看到java.lang.VerifyError 类型的崩溃出现在我的Application 类中的一行中。
这行很简单:
Settings.init(this);
其中Settings 是SharedPreferences 周围的便利包装类。似乎只有不到 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