解析java.lang.IncompatibleClassChangeError:android.support.v4.content.ContextCompat

时间:2017-11-07 10:48:01

标签: java android google-cloud-messaging

这似乎是完整的错误:

11-07 16:07:44.646 27955-27995/com.chatapp.gcm.chatapp E/UncaughtException: java.lang.IncompatibleClassChangeError: android.support.v4.content.ContextCompat
at com.google.android.gms.iid.zzd.zzeC(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.chatapp.gcm.chatapp.gcm.GcmIntentService.registerGCM(GcmIntentService.java:63)
at com.chatapp.gcm.chatapp.gcm.GcmIntentService.onHandleIntent(GcmIntentService.java:50)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.os.HandlerThread.run(HandlerThread.java:61)

以下是GcmIntentService.java的第63行:

InstanceID instanceID = InstanceID.getInstance(this);

以下是该行的代码:

private void registerGCM() {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
String token = null;

try {
    InstanceID instanceID = InstanceID.getInstance(this);
    token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
                GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

    Log.e(TAG, "GCM Registration Token: " + token);

    // sending the registration id to our server
    sendRegistrationToServer(token);

    sharedPreferences.edit().putBoolean(Config.SENT_TOKEN_TO_SERVER, true).apply();
} catch (Exception e) {
    Log.e(TAG, "Failed to complete token refresh", e);

    sharedPreferences.edit().putBoolean(Config.SENT_TOKEN_TO_SERVER, false).apply();
}

我一直试图解决这个问题5个小时了。在我更新Google Play服务插件后,该应用程序已停止崩溃,如其他一些答案所述,但它仍未生成令牌。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

AFAIK,IncompatibleClassChangeError错误通常是由于正在使用的SDK与设备上可用的Google Play服务版本不匹配,或者也可能是由于依赖版本冲突造成的。

有了这些,您可能需要build.gradlecompile 'com.squareup.retrofit2:retrofit:2.3.0' compile 'com.squareup.retrofit2:converter-gson:2.3.0' compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' 检查declared dependencies。此外,使用set up Google Play services可以帮助解决依赖项版本冲突。

有关其他见解,请查看以下链接: