82 votes

IncompatibleClassChangeError après la mise à jour vers Android outils 25.1.6 mcg / FCM

Depuis que j'ai mis à jour vers Android SDK Tools 25.1.6 et le Soutien Android Référentiel 32.0.0 (ce matin), j'ai obtenu l'erreur suivante, je n'ai rien changé dans mon code, et il est encore à travailler sur mon collègue de l'ordinateur (Android SDK Tools 25.1.1 + Android Support Référentiel 30.0.0).

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 com.xxxxxxx.utils.RegistrationIntentService.onHandleIntent(RegistrationIntentService.java:55)
     at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
     at android.os.Handler.dispatchMessage(Handler.java:102)
     at android.os.Looper.loop(Looper.java:145)
     at android.os.HandlerThread.run(HandlerThread.java:61)

Ici est le morceau de code qui crash:

InstanceID instanceID = InstanceID.getInstance(this); // <-- crash here
String instanceIDToken = instanceID.getToken(getString(R.string.google_app_id),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

C'est lorsque j'essaye d'obtenir un jeton de Google Cloud Messaging.

Je suis de l'importation de GCM dans Gradle avec divisée play-services :

 compile 'com.google.android.gms:play-services-analytics:9.0.0' 
 compile 'com.google.android.gms:play-services-maps:9.0.0'
 compile 'com.google.android.gms:play-services-location:9.0.0' 
 compile 'com.google.android.gms:play-services-gcm:9.0.0' 
 compile 'com.google.android.gms:play-services-base:9.0.0'

MODIFIER la désactivation de la GCM a résolu le problème, donc je suppose que je devrais migrer vers Firebase des Messages dans le Cloud

EDIT2 Mon appareil de recevoir des Google Play Services 9.0 (hier, c'était 8.4.x). Maintenant, il ne plante plus, mais se plaindre de descripteur de module

 Failed to load module descriptor class: Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"
 Firebase API initialization failure.

Est-ce quelqu'un a une erreur similaire, et comment le résoudre ?

FIXE un merci spécial à @stegranet. ./gradlew -q app:dependencies --configuration compile vous aide à identifier quelles sont les dépendances comprennent SDK 24.x

Question principale est une bibliothèque d'importation de la dernière bibliothèque de prise en charge à l'aide de + signe au lieu d'une version. Cette cause, la cause, y compris la dernière version disponible.

Afin d'éviter + signe dans les dépendances ;)

36voto

stegranet Points 476

J’ai utilisé l’arbre des dépendances gradle pour résoudre cette erreur pour moi.

Il suffit d’exécuter `` et vérifiez le résultat pour les entrées comme suit :

Comme Diego Giorgini dit que cette version est trop élevée (> = 24). Donc mettre à jour les dépendances dans `` comme

34voto

Diego Giorgini Points 74

mise à jour le 27 mai:

nous venons de publier une mise à jour (version 9.0.1) pour résoudre l'incompatibilité je l'ai mentionné dans mon premier montage.
Veuillez mettre à jour vos dépendances et laissez-nous savoir si c'est toujours un problème.

Merci!


réponse originale à cette question 20 Mai:

Le problème que vous rencontrez est dû à une incompatibilité entre
play-services / firebase sdk v9.0.0 et com.android.support:appcompat-v7 >= 24
(la version avec android-N sdk)

Vous devriez être en mesure de le réparer en ciblant une version antérieure de la bibliothèque de prise en charge. Comme:

compile 'com.android.support:appcompat-v7:23.4.0'

5voto

Loser Points 354

J'ai mis à jour le jeu-services dépendances en build.gradle

dependencies {
    compile 'com.google.android.gms:play-services:9.0.0'
}

Pour résoudre le conflit de version, soit par la mise à jour de la version de la google-services plugin - j'ai eu de mise à jour de google-les services dans l' build.gradle sous le dossier racine du projet

dependencies {
    classpath 'com.google.gms:google-services:3.0.0'
}

Vous pouvez obtenir la dernière mise à jour de la google-services ici.

Bien que sa n'évitant pas l'exception mais ce n'est pas le fracas de la demande de plus de mon côté.

Mise à jour

J'ai pu éviter l'accident par la mise à jour de l'Android studio de Canal Bêta. Puis mettre à jour votre platform/build-tools à l'intérieur de SDK.

enter image description here

5voto

macbee Points 761

mine a travaillé par ce qui suit :

gradle niveau App

gradle niveau racine

4voto

synatest Points 41

Mise à jour vers la dernière version de services google jeu fixe le problème pour moi.

appliquer le plugin : ' com.google.gms.google-services en bas...

https://Developers.google.com/Android/guides/Setup#add_google_play_services_to_your_project

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X