Google Play 服务和 Firebase 的 ProGuard 问题
Posted
技术标签:
【中文标题】Google Play 服务和 Firebase 的 ProGuard 问题【英文标题】:ProGuard issue with Google Play Service and Firebase 【发布时间】:2017-09-01 22:48:36 【问题描述】:在升级 Google Play 服务和相关库后,我收到来自 Proguard 的关于 firebase 消息传递的以下警告。
-
播放服务:
9.4.0
-> 10.2.1
MixPanel:4.9.2
-> 4.9.8
对讲:3.0.10
-> 3.1.3
这是来自com.google.firebase.messaging.*
的proguard警告
Warning: com.google.firebase.messaging.FirebaseMessagingService: can't find referenced method 'com.google.firebase.iid.zzg zzabT()' in program class com.google.firebase.iid.zzg
Warning: com.google.firebase.messaging.zzc: can't find referenced field 'java.lang.String zzcvH' in program class com.google.android.gms.internal.zzbxz$zza
Warning: com.google.firebase.messaging.zzc: can't find referenced field 'java.lang.String zzcvH' in program class com.google.android.gms.internal.zzbxz$zzb
Warning: com.google.firebase.messaging.zzc: can't find referenced field 'java.lang.String zzcvI' in program class com.google.android.gms.internal.zzbxz$zzb
Warning: com.google.firebase.messaging.zzc: can't find referenced field 'long zzcvJ' in program class com.google.android.gms.internal.zzbxz$zzb
Warning: com.google.firebase.messaging.zzc: can't find referenced field 'java.lang.String zzcvK' in program class com.google.android.gms.internal.zzbxz$zzb
Warning: com.google.firebase.messaging.zzc: can't find referenced field 'int zzcvL' in program class com.google.android.gms.internal.zzbxz$zzb
Warning: com.google.firebase.messaging.zzc: can't find referenced field 'int zzcvM' in program class com.google.android.gms.internal.zzbxz$zzb
Warning: com.google.firebase.messaging.zzc: can't find referenced field 'java.lang.String zzcvN' in program class com.google.android.gms.internal.zzbxz$zzb
Warning: com.google.firebase.messaging.zzc: can't find referenced field 'java.lang.String zzcvO' in program class com.google.android.gms.internal.zzbxz$zzb
Warning: com.google.firebase.messaging.zzc: can't find referenced field 'java.lang.String zzcvR' in program class com.google.android.gms.internal.zzbxz$zzb
Warning: com.google.firebase.messaging.zzc: can't find referenced field 'int zzcvS' in program class com.google.android.gms.internal.zzbxz$zzb
Warning: com.google.firebase.messaging.zzc: can't find referenced field 'com.google.android.gms.internal.zzbxz$zza[] zzcvT' in program class com.google.android.gms.internal.zzbxz$zzb
我正在使用最新的播放服务。
intercomLibraryVersion = '3.1.3' // https://github.com/intercom/intercom-android/blob/master/CHANGELOG.md
mixPanelVersion = '4.9.8' // https://github.com/mixpanel/mixpanel-android/releases
playServiceVersion = '10.2.1' // https://developers.google.com/android/guides/releases
// Google Play Services
// https://developers.google.com/android/guides/setup
// https://firebase.google.com/docs/android/setup
compile "com.google.android.gms:play-services-base:$rootProject.playServiceVersion"
compile "com.google.android.gms:play-services-gcm:$rootProject.playServiceVersion"// used by - mixpanel & intercom
// Mixpanel
//https://github.com/mixpanel/mixpanel-android/releases
compile "com.mixpanel.android:mixpanel-android:$rootProject.mixPanelVersion"
// Intercom - live chat and analytics
// https://github.com/intercom/intercom-android
// https://developers.intercom.com/docs/android-installation
compile "io.intercom.android:intercom-sdk-base:$rootProject.intercomLibraryVersion"
compile "io.intercom.android:intercom-sdk-fcm:$rootProject.intercomLibraryVersion"
我可以避免这些警告的唯一方法是添加以下 proguard 规则。
-dontwarn com.google.firebase.messaging.**
有人知道这个的副作用吗?或如何解决此 Firebase 消息问题。
更新 #1 应用程序现在随机崩溃并出现以下堆栈跟踪。
04-06 14:49:28.911 25362-25455/? E/AndroidRuntime: FATAL EXCEPTION: pool-13-thread-1
Process: com.myapp, PID: 25362
java.lang.AbstractMethodError: abstract method "void com.google.firebase.iid.b.handleIntent(android.content.Intent)"
at com.google.firebase.iid.b$1.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
【问题讨论】:
目前,我已将所有版本降级为上述之前工作的版本。 Google Play 服务 10.2.6 在尝试使用我的应用程序连接 Firebase 监控时出现同样的问题 @JafarAlali92 只是好奇,下面的解决方案对你有用吗? 【参考方案1】:当您忘记更新 Firebase 依赖项时,通常会出现此错误。
Firebase 引用必须始终与 Google 依赖项的版本相同。
这会遇到您的错误:
compile 'com.google.android.gms:play-services-gcm:10.2.1'
compile 'com.google.android.gms:play-services-maps:10.2.1'
compile 'com.google.android.gms:play-services-location:10.2.1'
compile 'com.google.firebase:firebase-auth:10.0.1'
compile 'com.google.firebase:firebase-core:10.0.1'
compile 'com.google.firebase:firebase-database:10.0.1'
这解决了错误:
compile 'com.google.android.gms:play-services-gcm:10.2.1'
compile 'com.google.android.gms:play-services-maps:10.2.1'
compile 'com.google.android.gms:play-services-location:10.2.1'
compile 'com.google.firebase:firebase-auth:10.2.1' //Updated
compile 'com.google.firebase:firebase-core:10.2.1' //Updated
compile 'com.google.firebase:firebase-database:10.2.1' //Updated
希望它能解决你的问题
【讨论】:
目前我不包括 firebase,但可能是第 3 方库。将仔细检查gradle dependencies
以找出答案,感谢您的指点。
我没有尝试再次升级库。我看到7
点赞,所以我猜你的解决方案对少数人有用。我很快会再试一次,并在此处提供我的更新。
这应该是公认的解决方案!非常感谢!拯救了我的一天以上是关于Google Play 服务和 Firebase 的 ProGuard 问题的主要内容,如果未能解决你的问题,请参考以下文章
在没有 Google Play 服务的情况下使用 Google Firebase 远程配置?
如何将 Firebase 帐户关联到 Google Play 游戏帐户
致命异常:ScioFrontendApi 在使用适用于 Android 应用程序的 Firebase 升级 Google Play 服务时
Google Play 游戏服务中的多人游戏 API 将不再可用。如何迁移到 Firebase?
如何使 Google Play 服务 API 和 Firebase API 的 API javadocs 出现在 Android Studio 中,而不是没有文档的反编译类?