【问题标题】:Firebase messaging NoSuchMethodError.zzUr exceptionFirebase 消息传递 NoSuchMethodError.zzUr 异常
【发布时间】:2016-07-05 10:08:48
【问题描述】:

我正在尝试将 FCM 集成到 android 项目中,因为它是在 Firebase documentation 中编写的。

我的应用程序的 gradle:

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
...
compile 'com.android.support:multidex:1.0.0'
compile 'com.android.support:support-v4:20.0.0'
compile 'com.google.firebase:firebase-core:9.2.0'
compile 'com.google.firebase:firebase-config:9.2.0'
compile 'com.google.firebase:firebase-messaging:9.0.2'
compile 'com.google.firebase:firebase-crash:9.2.0'
compile 'com.google.android.gms:play-services-ads:9.2.0'
compile 'com.google.android.gms:play-services-analytics:9.2.0'
compile 'com.google.android.gms:play-services-games:9.2.0'
}

apply plugin: 'com.google.gms.google-services'

Manifest.xml:

<service
    android:name=".MyFirebaseMessagingService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

还有 MyFirebaseMesagingService:

public class MyFirebaseMessagingService extends FirebaseMessagingService {

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    Log.i("info", "From: " + remoteMessage.getFrom());
    Log.i("info", "Notification Message Body: " + remoteMessage.getNotification().getBody());
}

}

但是当我发送推送时,我得到的是:

java.lang.NoSuchMethodError: com.google.firebase.iid.FirebaseInstanceIdInternalReceiver.zzUr
                                                      at com.google.firebase.messaging.FirebaseMessagingService.zzz(Unknown Source)
                                                      at com.google.firebase.iid.zzb.onStartCommand(Unknown Source)
                                                      at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2805)
                                                      at android.app.ActivityThread.access$1900(ActivityThread.java:156)
                                                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1437)
                                                      at android.os.Handler.dispatchMessage(Handler.java:99)
                                                      at android.os.Looper.loop(Looper.java:153)
                                                      at android.app.ActivityThread.main(ActivityThread.java:5299)
                                                      at java.lang.reflect.Method.invokeNative(Native Method)
                                                      at java.lang.reflect.Method.invoke(Method.java:511)
                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
                                                      at dalvik.system.NativeStart.main(Native Method)

无法谷歌。有人遇到过吗?

【问题讨论】:

  • 尝试使用相同版本的所有服务运行。在这种情况下,将 compile 'com.google.firebase:firebase-messaging:9.0.2' 更改为 'compile 'com.google.firebase:firebase-消息:9.2.0' 并查看是否发生相同的问题。
  • @sunilsunny,是的,就是这样,请写一个答案,我会接受的

标签: android firebase firebase-cloud-messaging


【解决方案1】:

尝试使用相同版本运行所有服务。在这种情况下,更改:

compile 'com.google.firebase:firebase-messaging:9.0.2'

compile 'com.google.firebase:firebase-messaging:9.2.0'

并检查是否发生同样的问题。

【讨论】:

    【解决方案2】:

    更改 firebase1 的版本对我有用!

    版本必须相同:

    compile 'com.google.firebase:firebase-analytics:9.2.0'
    compile 'com.google.firebase:firebase-messaging:9.2.0'
    compile 'com.google.firebase:firebase-core:9.2.0'
    

    【讨论】:

      【解决方案3】:

      我也遇到了同样的问题,通过正确配置proguard规则来解决这个问题。

      我在这里做了如下:

      首先,我在 proguard-rules.pro 中排除了 google 类的混淆:

      -keep public class com.google.** {*;}
      

      其次,我在 build.gradle 中启用了这个 minifyEnabled,如下所示:

          apply plugin: 'com.android.application'
      
          android {
          compileSdkVersion 23
          buildToolsVersion "23.0.3"
      
          defaultConfig {
              applicationId "com.e2e.quiz"
              minSdkVersion 15
              targetSdkVersion 23
              versionCode 1
              versionName "1.0"
          }
          buildTypes {
              release {
                  minifyEnabled true
                  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
              }
          }
          }
      
          dependencies {
      compile fileTree(include: ['*.jar'], dir: 'libs')
      testCompile 'junit:junit:4.12'
      compile 'com.android.support:appcompat-v7:23.1.1'
      compile 'com.android.support:recyclerview-v7:23.1.1'
      compile 'com.android.support:design:23.1.1'
      compile 'com.github.bumptech.glide:glide:3.6.1'
      compile 'com.squareup.picasso:picasso:2.4.0'
      compile 'com.google.android.gms:play-services-gcm:9.2.1'
      compile 'com.google.android.gms:play-services-analytics:9.2.1'
      compile 'com.google.android.gms:play-services-ads:9.2.1'
      compile project(':ast-dst')
      

      }

      【讨论】:

        【解决方案4】:

        通过更改 build gradle 中的 firebase-messaging 库版本来保持 firebase-core 库和 firebase-messaging 库的版本相同

        来自:

        compile 'com.google.firebase:firebase-core:9.2.0'
        compile 'com.google.firebase:firebase-messaging:9.0.2
        

        到:

        compile 'com.google.firebase:firebase-core:9.2.0'
        compile 'com.google.firebase:firebase-messaging:9.2.0'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-21
          • 2019-07-12
          • 1970-01-01
          相关资源
          最近更新 更多