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:
- Cadena RTL hebrea de Android con valor numérico volteado
- Cómo utilizar Java 8 Stream API bajo Android 6.0
- Especificar intervalos para que el Administrador de ubicaciones transmita la ubicación actual en Android
- No se puede iniciar este animador en una vista separada! Revelar efecto
- Transferencia PrivateKey de KeyStore, uso en OpenSSL con JNI
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'
- ¿Qué hace la palabra clave esta referencia en este ejemplo de código?
- Color del gradiente para el gráfico de línea dentro de AchartEngine
- ¿Cómo mantener la sesión de inicio de sesión de usuario?
- ¿Cómo se agrega un carácter de nueva línea en una cadena en índices específicos?
- ¿Cómo implementar Moquette broker en Android?
- Pasar la cookie al navegador a través de Intent
- File.exists () devuelve false cuando el archivo existe
- ¿Cómo superponer el color del texto del elemento de la lista en una región específica?
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'
- Reduciendo el tamaño de APK volviendo a comprimir su contenido
- Instalar apk en segundo plano utilizando busybox