面料导致安卓Pie用户崩溃

7

我正在运行一个安装了Crashlytics的Android应用程序。对于大多数用户来说,一切都没有问题,然而一些用户(所有这些用户都在运行Android Pie,并使用Google手机Pixel 2、Pixel 3)会遇到由Fabric本身引起的崩溃,似乎与访问SharedPrefs有关,见下面的日志。

java.lang.RuntimeException: 
at android.app.ActivityThread.handleBindApplication 

(ActivityThread.java:5925)
  at android.app.ActivityThread.access$1100 (ActivityThread.java:200)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1656)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:193)
  at android.app.ActivityThread.main (ActivityThread.java:6718)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:858)
Caused by: java.lang.IllegalStateException: 
  at android.app.ContextImpl.getSharedPreferences (ContextImpl.java:419)
  at android.app.ContextImpl.getSharedPreferences (ContextImpl.java:404)
  at android.content.ContextWrapper.getSharedPreferences (ContextWrapper.java:174)
  at io.fabric.sdk.android.services.persistence.PreferenceStoreImpl.<init> (PreferenceStoreImpl.java:39)
  at io.fabric.sdk.android.services.common.AdvertisingInfoProvider.<init> (AdvertisingInfoProvider.java:37)
  at io.fabric.sdk.android.services.common.IdManager.<init> (IdManager.java:114)
  at io.fabric.sdk.android.Fabric.with (Fabric.java:2288)
  at com.aaronbrecher.neverlate.NeverLateApp.onCreate (NeverLateApp.java:21)
  at android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1154)
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:5920)
1个回答

2

当存储受保护且应用程序通过LOCKED_BOOT_COMPLETED广播启动时,会出现此异常。

来自android.app.ContextImpl的代码:

最初的回答:

if (getApplicationInfo().targetSdkVersion >= android.os.Build.VERSION_CODES.O) {
   if (isCredentialProtectedStorage()
       && !getSystemService(UserManager.class)
                .isUserUnlockingOrUnlocked(UserHandle.myUserId())) {
     throw new IllegalStateException("SharedPreferences in credential encrypted "
                            + "storage are not available until after user is unlocked");
   }
}   

谢谢你的回答,听起来可能是我的问题,唯一的问题是我在那个广播上没有做任何事情...那么为什么我的应用程序会被启动呢? - Aaron Brecher
也许启动应用程序时出现问题并不是因为启动问题,而是由于用户加密存储引起的。当用户锁定设备时,会发生FC错误。 - henrichg
@AaronBrecher,你的问题解决了吗?我在Google Play商店也遇到了同样的崩溃日志。 - Rajendra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接