致命异常:com.google.android.gms.common.api.internal.BackgroundDetector.readCurrentStateIfPossible中的java.lang.NoSuchMethodError

时间:2019-03-03 21:47:04

标签: android crash google-play-services

我在Android 4.0.4上有很多这样的地方,其中android.app.ActivityManager.getMyMemoryState缺少方法。

完整堆栈跟踪为:

Fatal Exception: java.lang.NoSuchMethodError: android.app.ActivityManager.getMyMemoryState
       at com.google.android.gms.common.api.internal.BackgroundDetector.readCurrentStateIfPossible(Unknown Source:17)
       at com.google.android.gms.common.api.internal.GoogleApiManager.handleMessage(Unknown Source:169)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at com.google.android.gms.internal.base.zap.dispatchMessage(Unknown Source:8)
       at android.os.Looper.loop(Looper.java:154)
       at android.os.HandlerThread.run(HandlerThread.java:65

我与gms相关的依赖项是:

implementation 'com.google.android.gms:play-services-base:16.1.0'
implementation 'com.google.android.gms:play-services-auth:16.0.1'
implementation 'com.google.android.gms:play-services-games:16.0.0'

+火力地堡:

implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.google.firebase:firebase-perf:16.2.3'
implementation 'com.google.firebase:firebase-ads:17.1.3'

似乎是最新的(在撰写本文时)

我能做些什么来防止那些崩溃吗?

2 个答案:

答案 0 :(得分:4)

我找到了此问题的来源:

play-services-base:16.1.0假定它至少在JellyBean(API级别16)操作系统上运行(我在Android Studio Java反编译器的帮助下发现了这个问题(PlatformVersion.isAtLeastJellyBean只是无条件地返回true。)),这不是就我而言是真的。

所以我降级到play-services-base:16.1.0play-services-base:16.0.1,崩溃已停止。

答案 1 :(得分:1)

在Google无法解决问题之前,只需使用并强制执行play-services-basement:16.0.1

implementation "com.google.android.gms:play-services-basement:16.0.1"

configurations.all {
    resolutionStrategy.force "com.google.android.gms:play-services-basement:16.0.1"
}