SecurityException:呼叫者不再运行,上次停止

时间:2018-10-01 06:07:02

标签: android android-8.0-oreo android-9.0-pie jobintentservice

说明:

我们一直在火基控制台上为拥有android 8(Oreo)+设备的用户观察到此崩溃。堆栈跟踪显示它是导致此致命异常的内部方法。

环境和设备详细信息

设备信息:

  • 设备:三星,华为,HMD Global,Xioomi等
  • 操作系统版本:Android 8.0(Oreo),Android 9.0(Pie)
  • 崩溃率:Android 8.0(99%),Android 9.0(1%)

OneSignal SDK版本:

buildscript {
    repositories {
        maven { url 'https://plugins.gradle.org/m2/'}
    }
    dependencies {
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.11.0, 0.99.99]'
    }
}
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

dependencies {

 implementation('com.onesignal:OneSignal:[3.9.1, 3.99.99)') {
        exclude group: 'com.google.android.gms'
    }

}

堆栈跟踪信息

Caused by java.lang.SecurityException: Caller no longer running, last stopped +2s26ms because: timed out while starting
       at android.os.Parcel.readException(Parcel.java:1959)
       at android.os.Parcel.readException(Parcel.java:1905)
       at android.app.job.IJobCallback$Stub$Proxy.dequeueWork(IJobCallback.java:191)
       at android.app.job.JobParameters.dequeueWork(JobParameters.java:196)
       at android.support.v4.app.JobIntentService$JobServiceEngineImpl.dequeueWork(SourceFile:314)
       at android.support.v4.app.JobIntentService.dequeueWork(SourceFile:639)
       at android.support.v4.app.JobIntentService$CommandProcessor.doInBackground(SourceFile:389)
       at android.support.v4.app.JobIntentService$CommandProcessor.doInBackground(SourceFile:382)
       at android.os.AsyncTask$2.call(AsyncTask.java:333)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
       at java.lang.Thread.run(Thread.java:764)

我们有99%的崩溃是在Android O上发生的,其中有大量用户在三星设备上使用(但这似乎不是仅三星的问题,还有相当数量的HTC,LG, Google等设备)

如果您需要更多信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

仅当启用proguard时这才是问题。通过将其添加到我的proguard规则中,OneSignal在Adnroid 8.0和8.1上成功工作;

-keep class com.onesignal.JobIntentService$* {*;}