如何解决在类Lcom / google / android / gms / common / internal / Preconditions中没有静态方法checkHandlerThreadLandroid / os / Handler; Ljava / lang / String;V
在我的app / build.gradle中设置minifyEnabled true
后,我面临崩溃。
implementation ('com.google.android.gms:play-services-location:17.0.0') {
exclude group:'com.android.support',module: 'support-v4'
}
implementation 'com.google.firebase:firebase-messaging:18.0.0'
implementation 'com.google.firebase:firebase-analytics:16.5.0'
implementation 'com.google.android.gms:play-services-maps:17.0.0'
这些是我使用的Firebase库。仅当设置minifyEnabled true
时才会发生崩溃。
我也尝试过启用Multidex,但仍然无法解决问题。
崩溃日志:
Process: proto.inventa.cct.com.inventaapp,PID: 30410
java.lang.NoSuchMethodError: No static method checkHandlerThread(Landroid/os/Handler;Ljava/lang/String;)V in class Lcom/google/android/gms/common/internal/Preconditions; or its super classes (declaration of 'com.google.android.gms.common.internal.Preconditions' appears in /data/app/proto.inventa.cct.com.inventaapp-hunIIikgxzy10RXjTw7TYA==/base.apk!classes4.dex)
at com.google.android.gms.common.internal.GmsClientEventManager.onConnectionSuccess(Unknown Source:20)
at com.google.android.gms.common.api.internal.zaaw.zab(Unknown Source:292)
at com.google.android.gms.common.api.internal.zaak.zaaq(Unknown Source:125)
at com.google.android.gms.common.api.internal.zaak.onConnected(Unknown Source:105)
at com.google.android.gms.common.api.internal.zabe.onConnected(Unknown Source:101)
at com.google.android.gms.common.api.internal.zaq.onConnected(Unknown Source:6)
at com.google.android.gms.common.internal.zaf.onConnected(Unknown Source:2)
at com.google.android.gms.common.internal.BaseGmsClient$PostInitCallback.handleServiceSuccess(Unknown Source:130)
at com.google.android.gms.common.internal.BaseGmsClient$zza.deliverCallback(Unknown Source:60)
at com.google.android.gms.common.internal.BaseGmsClient$zza.deliverCallback(Unknown Source:2)
at com.google.android.gms.common.internal.BaseGmsClient$CallbackProxy.deliverCallback(Unknown Source:51)
at com.google.android.gms.common.internal.BaseGmsClient$zzb.handleMessage(Unknown Source:270)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6977)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:528)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:910)
解决方法
您需要保留这些类(可能还有更多类):
-verbose
-keep,includedescriptorclasses class com.google.android.gms.** { *; }
-keep,includedescriptorclasses class com.google.android.gms.internal.** { *; }
-keep class com.google.android.gms.internal.** {com.google.android.gms.internal.** initialize(android.content.Context);}
-keep class com.google.android.gms.iid.** {com.google.android.gms.iid.** get(java.lang.String);}
-keep,includedescriptorclasses class com.google.android.** { *; }
,
您似乎有一个依赖冲突。
play-services-location:17.0.0
取决于play-services-basement:17.0.0
和play-services-base:17.0.0
但
firebase-messaging:18.0.0
取决于play-services-basement:16.0.1
可能您有play-services-base:17.0.0
但play-services-basement:16.0.1
,如果play-services-base:17.0.0
试图使用play-services-basement:17.0.0
中引入的API,则无法使用。
尝试将firebase-messaging
部门至少更新到版本19.0.0
,该版本确实取决于play-services-basement:17.0.0
。
同样,尝试将firebase-analytics
至少更新为17.0.0
还可以考虑签出严格的版本匹配器插件,如果检测到冲突,它将给您一条错误消息,而不是Gradle的默认策略,后者仅选择一个,并且如果选择错误,则可能会给出类似这样的奇怪错误消息。 https://developers.google.com/android/guides/versioning#strict_version_matching。
我也强烈建议反对 -keep
使用所有com.google.android
软件包。这样会将所有代码保留在SDK中,即使您不使用的部分也可以,从而大大减少了收缩带来的好处。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。