Firebase相关Google Play服务更新后Android Google云消息(GCM)令牌生成崩溃

Firebase相关Google Play服务更新后Android Google云消息(GCM)令牌生成崩溃,android,firebase,google-cloud-messaging,Android,Firebase,Google Cloud Messaging,我的Android应用程序今天在为谷歌云消息(GCM)生成令牌时开始崩溃。这种情况发生在多个设备和Android版本上。我认为这可能与谷歌昨天在谷歌IO上宣布的Firebase新功能有关 当这种情况开始发生时,我没有处理与GCM相关的代码,所以这是出乎意料的。如果我从Android系统设置中卸载Google Play Services更新,应用程序将不再崩溃。当我重新安装最新版本时,应用程序每次都会再次崩溃 FATAL EXCEPTION: IntentService[MyGCMRegistra

我的Android应用程序今天在为谷歌云消息(GCM)生成令牌时开始崩溃。这种情况发生在多个设备和Android版本上。我认为这可能与谷歌昨天在谷歌IO上宣布的Firebase新功能有关

当这种情况开始发生时,我没有处理与GCM相关的代码,所以这是出乎意料的。如果我从Android系统设置中卸载Google Play Services更新,应用程序将不再崩溃。当我重新安装最新版本时,应用程序每次都会再次崩溃

FATAL EXCEPTION: IntentService[MyGCMRegistrationIntentService]
Process: <my process>, PID: 26036
java.lang.IncompatibleClassChangeError: The method 'java.io.File android.support.v4.content.ContextCompat.getNoBackupFilesDir(android.content.Context)' was expected to be of type virtual but instead was found to be of type direct (declaration of 'java.lang.reflect.ArtMethod' appears in /system/framework/core-libart.jar)
    at com.google.android.gms.iid.zzd.zzeb(Unknown Source)
    at com.google.android.gms.iid.zzd.<init>(Unknown Source)
    at com.google.android.gms.iid.zzd.<init>(Unknown Source)
    at com.google.android.gms.iid.InstanceID.zza(Unknown Source)
    at com.google.android.gms.iid.InstanceID.getInstance(Unknown Source)
    at <package>.MyGCMRegistrationIntentService.onHandleIntent(MyGCMRegistrationIntentService.java:<line number>);
    at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.os.HandlerThread.run(HandlerThread.java:61)
顶级渐变生成文件:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        classpath 'de.felixschulze.gradle:gradle-hockeyapp-plugin:3.3'
        classpath 'com.android.tools.build:gradle:2.1.0'
        classpath 'com.google.gms:google-services:2.1.0'
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url 'https://jitpack.io' }
    }
}
处理Google的应用程序级Gradle构建依赖项:

dependencies {
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:design:23.3.0'
    compile 'com.android.support:recyclerview-v7:23.3.0'
    compile 'com.android.support:support-annotations:23.3.0'
    compile 'com.android.support:support-v4:23.3.0'
    compile 'com.android.support:support-v13:23.3.0'
    compile 'com.google.android.gms:play-services-analytics:8.4.0'
    compile 'com.google.android.gms:play-services-gcm:8.4.0'

    ...(and then the rest of my dependecies)
}
与Google打交道的库依赖(我知道这很混乱,有些东西是多余的,对不起):

我想也许升级版本会有所帮助。以下是我升级的内容:

com.google.gms:google-services:2.1.0 -> com.google.gms:google-services:3.0.0
com.google.android.gms:play-services-XXX:8.4.0' -> com.google.android.gms:play-services-XXX:9.0.0
应用程序仍然崩溃,但方式不同。首先,它记录以下内容,但不会崩溃

Firebase API initialization failure.
 java.lang.reflect.InvocationTargetException
     at java.lang.reflect.Method.invoke(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:372)
     at com.google.firebase.FirebaseApp.zza(Unknown Source)
     at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
     at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
     at com.google.firebase.FirebaseApp.zzbu(Unknown Source)
     at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
     at android.content.ContentProvider.attachInfo(ContentProvider.java:1696)
     at android.content.ContentProvider.attachInfo(ContentProvider.java:1671)
     at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
     at android.app.ActivityThread.installProvider(ActivityThread.java:4999)
     at android.app.ActivityThread.installContentProviders(ActivityThread.java:4594)
     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4534)
     at android.app.ActivityThread.access$1500(ActivityThread.java:151)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
     at android.os.Handler.dispatchMessage(Handler.java:102)
     at android.os.Looper.loop(Looper.java:135)
     at android.app.ActivityThread.main(ActivityThread.java:5254)
     at java.lang.reflect.Method.invoke(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:372)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
  Caused by: java.lang.IncompatibleClassChangeError: The method 'java.io.File android.support.v4.content.ContextCompat.getNoBackupFilesDir(android.content.Context)' was expected to be of type virtual but instead was found to be of type direct (declaration of 'java.lang.reflect.ArtMethod' appears in /system/framework/core-libart.jar)
     at com.google.firebase.iid.zzg.zzeC(Unknown Source)
     at com.google.firebase.iid.zzg.<init>(Unknown Source)
     at com.google.firebase.iid.zzg.<init>(Unknown Source)
     at com.google.firebase.iid.zzd.zzb(Unknown Source)
     at com.google.firebase.iid.FirebaseInstanceId.getInstance(Unknown Source)
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.google.firebase.FirebaseApp.zza(Unknown Source) 
     at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
     at com.google.firebase.FirebaseApp.initializeApp(Unknown Source) 
     at com.google.firebase.FirebaseApp.zzbu(Unknown Source) 
     at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source) 
     at android.content.ContentProvider.attachInfo(ContentProvider.java:1696) 
     at android.content.ContentProvider.attachInfo(ContentProvider.java:1671) 
     at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source) 
     at android.app.ActivityThread.installProvider(ActivityThread.java:4999) 
     at android.app.ActivityThread.installContentProviders(ActivityThread.java:4594) 
     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4534) 
     at android.app.ActivityThread.access$1500(ActivityThread.java:151) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5254) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

5月27日更新:

我们刚刚发布了一个更新(
version9.0.1
)来修复我在第一次编辑中提到的不兼容问题。
请更新您的依赖项,并让我们知道这是否仍然是一个问题

谢谢


原始答案5月20日:

Google Play services sdk的9.0.0版与支持库版本24.x(发布该版本以支持Android-N)不兼容

请检查您是否正在使用:

dependencies {
    compile 'com.android.support:appcompat-v7:23.3.0'
}

而不是
com.android.support:appcompat-v7:24.

,所以问题是您的依赖项包含旧版本的支持库。检查此线程:

这样做可能会有帮助(从线程):

试试这个,它会解决的

configurations.all {
resolutionStrategy {
    force 'com.android.support:design:23.4.0'
    force 'com.android.support:support-v4:23.4.0'
    force 'com.android.support:appcompat-v7:23.4.0'
}
}

如果你仍然有问题,那么你可以像

更新了build.gradle中的播放服务依赖项

    dependencies {
compile 'com.google.android.gms:play-services:9.0.0'}
如果有任何版本冲突,请通过在build.gradle(project gradle)中添加此项来修复它


如果您已经更新了Android支持存储库,请通过替换sdk路径中的m2repository文件夹将其还原

首先下载较旧的m2repository

SDK路径

替换存储库文件夹

只要升级你的GCM库,它就会解决你的问题

compile "com.google.android.gms:play-services-gcm:9.2.0"

他正在使用compile'com.android.support:appcompat-v7:23.3.0'检查此项。他们建议您更新您的play services以编译'com.google.android.gms:play services:9.0.0',并将google services编译为classpath'com.google.gms:google services:3.0.0',这是GCM 2016的解决方案!谢谢。它不起作用,我在我的项目中添加了GCM,之后我在API 18及以下版本中遇到了此错误。如何使其支持。这应该在根gradle.build上还是在项目模块上?你让我的day bro。。Thanks@ArpitPatel在哪里添加这个?
configurations.all {
    resolutionStrategy {
        force 'com.android.support:design:23.4.0'
        force 'com.android.support:support-v4:23.4.0'
        force 'com.android.support:appcompat-v7:23.4.0'
    }
}
configurations.all {
resolutionStrategy {
    force 'com.android.support:design:23.4.0'
    force 'com.android.support:support-v4:23.4.0'
    force 'com.android.support:appcompat-v7:23.4.0'
}
    dependencies {
compile 'com.google.android.gms:play-services:9.0.0'}
dependencies {
classpath 'com.google.gms:google-services:3.0.0'}
compile "com.google.android.gms:play-services-gcm:9.2.0"