【问题标题】:Resolve java.lang.IncompatibleClassChangeError: android.support.v4.content.ContextCompat解决 java.lang.IncompatibleClassChangeError: android.support.v4.content.ContextCompat
【发布时间】:2017-11-07 10:48:01
【问题描述】:

这似乎是完整的错误:

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 服务插件后,该应用程序已经停止崩溃,但它仍然没有生成令牌。任何帮助将不胜感激。

【问题讨论】:

    标签: java android google-cloud-messaging


    【解决方案1】:

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

    有了这些,您可能想在set up Google Play services 时检查build.gradle 中的declared dependencies。另外,使用ResolutionStrategy 可以帮助解决依赖版本冲突。

    如需更多见解,请查看以下链接:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-01
      • 2017-04-03
      • 1970-01-01
      • 2020-08-08
      • 2022-10-17
      • 1970-01-01
      • 2021-08-15
      • 2015-05-16
      相关资源
      最近更新 更多