Android 原生 apk 崩溃,已经伴随很多个版本还没有解决,有大佬帮忙看看啥问题吗?

项目:3.8.3 版本,报错信息如下:
Fatal Exception: java.lang.IllegalStateException

JobScheduler 100 job limit exceeded. We count 150 WorkManager jobs in JobScheduler; we have 20 tracked jobs in our DB; our Configuration limit is 20.

androidx.work.impl.background.systemjob.SystemJobScheduler.scheduleInternal (SystemJobScheduler.java:220)

java.lang.Thread.run (Thread.java:1119)

Caused by java.lang.IllegalStateException

Apps may not schedule more than 150 distinct jobs

android.os.Parcel.createExceptionOrNull (Parcel.java:3019)

android.os.Parcel.createException (Parcel.java:2995)

android.os.Parcel.readException (Parcel.java:2978)

android.os.Parcel.readException (Parcel.java:2920)

android.app.job.IJobScheduler$Stub$Proxy.schedule (IJobScheduler.java:263)

android.app.JobSchedulerImpl.schedule (JobSchedulerImpl.java:47)

androidx.work.impl.background.systemjob.SystemJobScheduler.scheduleInternal (SystemJobScheduler.java:191)

androidx.work.impl.background.systemjob.SystemJobScheduler.schedule (SystemJobScheduler.java:137)

androidx.work.impl.Schedulers.schedule (Schedulers.java:108)

androidx.work.impl.utils.ForceStopRunnable.forceStopRunnable (ForceStopRunnable.java:255)

androidx.work.impl.utils.ForceStopRunnable.run (ForceStopRunnable.java:134)

androidx.work.impl.utils.SerialExecutorImpl$Task.run (SerialExecutorImpl.java:96)

java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1156)

java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:651)

java.lang.Thread.run (Thread.java:1119)

Caused by android.os.RemoteException

Remote stack trace: at com.android.server.job.JobSchedulerService.scheduleAsPackage(JobSchedulerService.java:1210) at com.android.server.job.JobSchedulerService$JobSchedulerStub.schedule(JobSchedulerService.java:3099) at android.app.job.IJobScheduler$Stub.onTransact(IJobScheduler.java:153) at android.os.Binder.execTransactInternal(Binder.java:1285) at android.os.Binder.execTransact(Binder.java:1249)

有大佬在项目中遇到嘛?不晓得是相关 sdk 问题,还是 自己安卓线程处理问题?项目中已经检查了未自定义使用:WorkManager。

这玩意就是java的多线程,
最多100个,但你超过了150个.
如果你们代码没有使用线程,那就是sdk的问题.

代码里面确实没有自己使用线程,都是接的广告逻辑,也用不到多线程。现在不确定是那个 sdk 引起的,接入的很多 :disappointed_relieved:。已经伴随很多版本了,一直存在无法解决,,, :rofl: :rofl:

很多个版本了,找到复现方式,在那段期间各种调试看看

测试和我都测过,但是复现不出来 :cold_sweat:,也可能是测试的时间不够,或者没有多个测试机去测。目前只有线上后台统计到有这个崩溃 :disappointed_relieved: :disappointed_relieved: :disappointed_relieved:

把sdk都反编译了,看看谁加了料
或者更新sdk版本.

OKOK,我试试

通过命令行进行了查看,已大致确定了是那些 sdk 引入的了

D:\panda\BWSCocos\build\android\proj>.\gradlew.bat :BWSCocos:dependencyInsight --configuration releaseRuntimeClasspath --dependency androidx.work:work-runtime
Starting a Gradle Daemon, 1 incompatible and 1 stopped Daemons could not be reused, use --status for details

Task :BWSCocos:dependencyInsight
androidx.work:work-runtime:2.8.1
Variant releaseVariantReleaseRuntimePublication:
| Attribute Name | Provided | Requested |
|-------------------------------------------------|--------------|--------------|
| org.gradle.dependency.bundling | external | |
| org.gradle.libraryelements | aar | |
| org.gradle.status | release | |
| org.gradle.category | library | library |
| org.gradle.usage | java-runtime | java-runtime |
| com.android.build.api.attributes.AgpVersionAttr | | 8.6.0 |
| com.android.build.api.attributes.BuildTypeAttr | | release |
| org.gradle.jvm.environment | | android |
| org.jetbrains.kotlin.platform.type | | androidJvm |
Selection reasons:
- By conflict resolution: between versions 2.8.1 and 2.7.0

androidx.work:work-runtime:2.8.1
— androidx.work:work-runtime-ktx:2.8.1
±-- com.unity3d.ads:unity-ads:4.16.3 (requested androidx.work:work-runtime-ktx:2.7.0)
| — releaseRuntimeClasspath
±-- com.moloco.sdk:moloco-sdk:3.10.0
| — com.google.ads.mediation:moloco:3.10.0.0
| — releaseRuntimeClasspath
— com.moloco.sdk.acm:moloco-android-client-metrics:3.10.0
— com.moloco.sdk:moloco-sdk:3.10.0 (*)

androidx.work:work-runtime:2.7.0 -> 2.8.1
— com.google.android.gms:play-services-ads-api:24.7.0
— com.google.android.gms:play-services-ads:24.7.0
±-- releaseRuntimeClasspath (requested com.google.android.gms:play-services-ads:24.4.0)
±-- com.google.ads.mediation:moloco:3.10.0.0 (requested com.google.android.gms:play-services-ads:24.3.0)
| — releaseRuntimeClasspath
±-- com.google.ads.mediation:facebook:6.20.0.0 (requested com.google.android.gms:play-services-ads:24.2.0)
| — releaseRuntimeClasspath
±-- com.google.ads.mediation:applovin:13.2.0.1 (requested com.google.android.gms:play-services-ads:24.2.0)
| — releaseRuntimeClasspath
±-- com.google.ads.mediation:unity:4.16.3.0
| — releaseRuntimeClasspath
±-- com.google.ads.mediation:vungle:7.5.0.0 (requested com.google.android.gms:play-services-ads:24.2.0)
| — releaseRuntimeClasspath
±-- com.google.ads.mediation:mintegral:16.9.71.0 (requested com.google.android.gms:play-services-ads:24.2.0)
| — releaseRuntimeClasspath
±-- com.google.ads.mediation:pangle:7.1.0.8.0 (requested com.google.android.gms:play-services-ads:24.2.0)
| — releaseRuntimeClasspath
±-- com.google.ads.mediation:inmobi:10.8.3.1 (requested com.google.android.gms:play-services-ads:24.2.0)
| — releaseRuntimeClasspath
— com.google.ads.mediation:ironsource:8.9.0.0 (requested com.google.android.gms:play-services-ads:24.3.0)
— releaseRuntimeClasspath

androidx.work:work-runtime-ktx:2.8.1
Variant releaseVariantReleaseRuntimePublication:
| Attribute Name | Provided | Requested |
|-------------------------------------------------|--------------|--------------|
| org.gradle.dependency.bundling | external | |
| org.gradle.libraryelements | aar | |
| org.gradle.status | release | |
| org.gradle.category | library | library |
| org.gradle.usage | java-runtime | java-runtime |
| com.android.build.api.attributes.AgpVersionAttr | | 8.6.0 |
| com.android.build.api.attributes.BuildTypeAttr | | release |
| org.gradle.jvm.environment | | android |
| org.jetbrains.kotlin.platform.type | | androidJvm |
Selection reasons:
- By conflict resolution: between versions 2.8.1 and 2.7.0

androidx.work:work-runtime-ktx:2.8.1
±-- com.moloco.sdk:moloco-sdk:3.10.0
| — com.google.ads.mediation:moloco:3.10.0.0
| — releaseRuntimeClasspath
— com.moloco.sdk.acm:moloco-android-client-metrics:3.10.0
— com.moloco.sdk:moloco-sdk:3.10.0 (*)

androidx.work:work-runtime-ktx:2.7.0 -> 2.8.1
— com.unity3d.ads:unity-ads:4.16.3
— releaseRuntimeClasspath

(*) - Indicates repeated occurrences of a transitive dependency subtree. Gradle expands transitive dependency subtrees only once per project; repeat occurrences only display the root of the subtree, followed by this annotation.

A web-based, searchable dependency report is available by adding the --scan option.

BUILD SUCCESSFUL in 47s
1 actionable task: 1 executed
D:\panda\BWSCocos\build\android\proj>

unity3d.ads,moloco 等广告 sdk 引入的。目前想到的解决方法:1、手动引入WorkManage:
implementation “androidx.work:work-runtime:2.11.0”
implementation “androidx.work:work-runtime-ktx:2.11.0”
2、 *启动时清理遗留 Job(仅在升级阶段执行一次):
SharedPreferences prefs = getSharedPreferences(“wm_pref”, MODE_PRIVATE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
&& prefs.getBoolean(“wm_jobs_cleaned”, true)) {
JobScheduler jobScheduler =
(JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
if (jobScheduler != null) {
jobScheduler.cancelAll();
}
WorkManager.getInstance(this).pruneWork();
prefs.edit().putBoolean(“wm_jobs_cleaned”, false).apply();
}
不确定能否解决,在此先记录一下