2016-05-20 8 views
8

Also, ich habe diesen Fehler gerade gestern in Android Studio, die ich nie zuvor gesehen, durch einen Code, der nicht berührt wurde verursacht die letzten 3 Monate. Das kam von dem Code für Push-Benachrichtigungen registrieren verwendet und funktioniert gut in dieser Woche früher, aber jetzt kommt es zu diesem Fehler:Brauchen Sie Hilfe bei der Behandlung einer schwerwiegenden Ausnahme verursacht durch java.lang.IncompatibleClassChangeError

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) 

Hier ist meine RegistrationIntentService Klasse:

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(); 
     } 
    } 

Dies ist die Codezeile, die die obige Klasse von meiner MainActivity Klasse ruft:

RegistrationIntentService.startService(getApplicationContext()); 

Einige Informationen über meine MainActivity, wenn es hilft ...

public class MainActivity extends SocialActivity implements SeekBar.OnSeekBarChangeListener 

public abstract class SocialActivity extends AppCompatActivity implements GraphRequest.GraphJSONObjectCallback 

Ich habe versucht, auf mehrere ältere Commits zurückzuspringen, habe aber den gleichen Fehler bekommen. Dies führte mich zu der Annahme, dass es vielleicht Probleme mit meinem Android Studio oder Java-Version gab. Ich habe meine Java-Version aktualisiert und Android Studio neu installiert, immer noch den gleichen Fehler. Auch auf einem separaten Computer mit älteren Versionen versucht, immer noch der gleiche Fehler.

Ich habe sogar versucht, von GCM zu Firebase nach this guide zu migrieren und landete wieder den gleichen Fehler.

Ich kann die Zeile auskommentieren, die die App abstürzt und es wird gut laufen, aber dann bekomme ich keine Benachrichtigungen mehr.

Jede Hilfe oder Beratung in dieser Angelegenheit würde sehr geschätzt werden!

EDIT: Hier sind meine relevanten Compile/Classpath Aussagen auch ...

Im 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 
    } 
} 

In der App 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' 

Antwort

7

Aktualisierung Mai 27:

wir haben gerade ein Update (version 9.0.1) veröffentlicht, um die Inkompatibilität zu beheben, die ich in meinem ersten Schnitt erwähnt habe.
Bitte aktualisieren Sie Ihre Abhängigkeiten und lassen Sie uns wissen, ob dies noch ein Problem ist.

Danke!


ursprüngliche Antwort 20. Mai:

Das Problem, das Sie erleben ist aufgrund einer Inkompatibilität zwischen
play-services/firebase sdk v9.0.0 und com.android.support:appcompat-v7 >= 24
(die Version mit Android-N sdk freigegeben)

Sie sollten es beheben können, indem Sie auf eine frühere Version der Support-Bibliothek abzielen.Wie:

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

Nicht funktioniert für mich –

+1

Dies entspricht, was ich bereits hatte, wenn der Fehler passiert ist. Ich habe den ursprünglichen Beitrag bearbeitet, um meine Bibliotheksversionen unten anzuzeigen. Dieser Fehler ist auch passiert, wenn ich 'com.google.android.gms: play-services-gcm: 8.4.0' mit 'com.android.support:appcompat-v7:23.3.0' verwendet habe, was wirklich nicht scheint Sinn machen ... –

+0

Ich stelle mir vor, dass eine andere Abhängigkeit appcompat-v7 zieht: 24 :( –

Verwandte Themen