Necesita ayuda para tratar una Excepción fatal causada por java.lang.IncompatibleClassChangeError

Por lo tanto, me encontré con este error ayer en Android Studio que nunca he visto antes, causado por un pedazo de código que no se ha tocado en los últimos 3 meses. Esto vino del código que es utilizado para registrar para las notificaciones del empuje y estaba trabajando muy bien esta semana, pero ahora resulta en este error:

05-20 10:37:02.064 22471-22681/com.appname E/AndroidRuntime: FATAL EXCEPTION: IntentService[RegIntentService] Process: com.appname, PID: 22471 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.appname.services.RegistrationIntentService.onHandleIntent(RegistrationIntentService.java:32) 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) 

Aquí está mi clase RegistrationIntentService:

 package com.appname.services; import android.app.IntentService; import android.content.Context; import android.content.Intent; import com.google.android.gms.gcm.GoogleCloudMessaging; import com.google.android.gms.iid.InstanceID; import com.appname.MainSharedPreferences; import com.appname.R; import java.io.IOException; public class RegistrationIntentService extends IntentService { private static final String TAG = "RegIntentService"; public RegistrationIntentService() { super(TAG); } public static void startService(final Context context) { final Intent intent = new Intent(context, RegistrationIntentService.class); context.startService(intent); //HERE is the line that is causing the crash } @Override public void onHandleIntent(Intent intent) { InstanceID instanceID = InstanceID.getInstance(this); try { String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId) , GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); MainSharedPreferences.saveGCMInstanceToken(token, getApplicationContext()); } catch (IOException e) { e.printStackTrace(); } } 

Esta es la línea de código que está llamando a la clase anterior de mi clase MainActivity:

 RegistrationIntentService.startService(getApplicationContext()); 

Alguna información sobre mi MainActivity si ayuda …

 public class MainActivity extends SocialActivity implements SeekBar.OnSeekBarChangeListener public abstract class SocialActivity extends AppCompatActivity implements GraphRequest.GraphJSONObjectCallback 

He intentado saltar de nuevo a varios compromisos más antiguos, pero tiene el mismo error. Esto me llevó a creer que tal vez había un problema con mi versión de Android Studio o java. He actualizado mi versión de java y reinstalado Android Studio, sigue siendo el mismo error. También intentado en una computadora separada con versiones más viejas, todavía el mismo error.

Incluso intenté migrar de GCM a Firebase de acuerdo con esta guía y terminé recibiendo el mismo error otra vez.

Puedo comentar la línea que bloquea la aplicación y funcionará bien, pero luego ya no recibo notificaciones.

¡Cualquier ayuda o consejo sobre este asunto sería muy apreciado!

EDIT: Aquí también mis declaraciones de compilación / classpath relevantes …

En el appname build.gradle:

 buildscript { repositories { jcenter() } repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.1.0' classpath 'com.google.gms:google-services:3.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } 

En la aplicación build.gradle:

 apply plugin: 'com.android.application' apply plugin: 'io.fabric' repositories { //... } allprojects { //... } android { //... } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.google.code.gson:gson:2.5' compile 'com.android.support:design:23.4.0' compile 'com.android.support:recyclerview-v7:+' compile "com.google.firebase:firebase-messaging:9.0.0" //... } apply plugin: 'com.google.gms.google-services' 

Actualización 27 de mayo:

Acabamos de lanzar una actualización ( version 9.0.1 ) para solucionar la incompatibilidad que mencioné en mi primera edición.
Actualice sus dependencias y háganos saber si esto sigue siendo un problema.

¡Gracias!


Respuesta original 20 de mayo:

El problema que está experimentando se debe a una incompatibilidad entre
play-services / firebase sdk v9.0.0 y com.android.support:appcompat-v7 >= 24
(La versión lanzada con android-N sdk)

Debería poder solucionarlo dirigiéndose a una versión anterior de la biblioteca de soporte. Me gusta:

 compile 'com.android.support:appcompat-v7:23.4.0' 
  • Reconocimiento de imágenes - Descriptor binario representación en Mat - OpenCV Android
  • ¿Hay una manera de proteger la carpeta con contraseña?
  • Android: getContext (). GetContentResolver () a veces obtiene NullPointerException
  • Android Bitmap.createBitmap () rellena montón
  • Guardar datos de usuario durante un día (el mismo día -> muchos datos de usuario)
  • Comenzando en una nueva línea en el emulador (proyecto Android Eclipse)
  • ¿Hay alguna manera de usar setOnClickListener con un Spinner de Android?
  • ¿Cómo puedes localizar una oración con un número dinámico de conjunciones?
  • Combinación de ListActivity y ActionBarActivity
  • Uso de la cámara LED Flash con OpenCV en Android
  • Utilizar sabores en el estudio de Android y - error con AndroidManifest incorrecto seleccionado / no fusionado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.