Ошибка GCM – googleCloudMessaging.register

У меня проблема, о которой говорит приложение для Android. «Приложение xxxx Извините остановлено» для работы с push-уведомлением при выполнении отладчика, которое происходит при его прохождении:

метод 1

InstanceID InstanceId = InstanceID.getInstance (context);

 token = instanceID.getToken (key_id.toString ()

GoogleCloudMessaging.INSTANCE_ID_SCOPE); getToken error,

метод 2

И та же ошибка

 if (googleCloudMessaging == null) {
googleCloudMessaging = GoogleCloudMessaging.getInstance(context);
                    }
                    token = googleCloudMessaging.register(key_id);

обратите внимание, что токен генерируется, но приложение закрыто, ошибка:

"The method 'java.io.File android.support.v4.content.ContextCompat.getNoBackupFilesDir (android.content.Context)' was expected to be of type virtual but was found to be Instead of direct type (declaration of 'java.lang .reflect.ArtMethod 'appears in /system/framework/core-libart.jar)"

Я использую студию Android, для cdvCompileSdkVersion = android-22 cdvBuildToolsVersion = 22.0.1

Ошибка:

"FATAL EXCEPTION: main
Process:  PID: 11989
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.zzde(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.google.android.gms.iid.InstanceIDListenerService.zzn(Unknown Source)
    at com.google.android.gms.iid.InstanceIDListenerService.onStartCommand(Unknown Source)
    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2924)
    at android.app.ActivityThread.access$2100(ActivityThread.java:155)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1415)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5343)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)"

В чем может быть проблема?

С уважением,


person Diego Güizzo    schedule 24.05.2016    source источник
comment
Какие библиотеки поддержки вы используете?..... попробуйте обновить библиотеки поддержки   -  person Burhanuddin Rashid    schedule 24.05.2016
comment
GCM только что устарел - Firebase Cloud Messaging - это новая служба. FCM управляет регистрацией для вас, и получить токен тоже проще. Вместо этого вам настоятельно рекомендуется реализовать FCM. Вот ссылка, как перейти с GCM: developers.google.com/ облачный обмен сообщениями/android/   -  person Micha F.    schedule 24.05.2016
comment
мы не можем решить это с помощью gcm, если да, то как?   -  person Shikhar    schedule 08.07.2016


Ответы (6)


Google обновил в своем примечании к выпуску, что эта проблема исправлена, вам просто нужно обновить версию до 9.0.2.

Вот примечание к выпуску: https://developers.google.com/android/guides/releases.

person Rizwan    schedule 06.06.2016

Проблема, с которой вы столкнулись, связана с несовместимостью между
play-services / firebase sdk v9.0.0 и com.android.support:appcompat-v7 >= 24
Возможно, вы не зависите напрямую от appcompat-v7 >= 24, но некоторые другие зависимости настроены на использование самой последней доступной версии appcompat.

Чтобы исправить эту проблему, мы только что выпустили play-services / firebase sdk версию 9.0.1
В этом дополнительном выпуске должна быть устранена несовместимость с appcompat-v7!

person Diego Giorgini    schedule 29.05.2016
comment
Я могу подтвердить, что эта несовместимость существует и для сервисов Google Play версии 8.4.0. Предположение: appcompat-v7 ›= 24 и сервисы Google Play ‹ v9.0.1 несовместимы. - person Bill Mote; 05.07.2016
comment
Я получаю эту ошибку Found com.google.android.gms:play-services-gcm:9.0.2, but version 9.0.0 is needed for the google-services plugin. мой плагин службы Google classpath 'com.google.gms:google-services:3.0.0' и у меня есть apply plugin: 'com.google.gms.google-services' в конце файла. и у меня есть зависимость appcompat как compile 'com.android.support:appcompat-v7:22.2.1' - person Muhammad Babar; 06.09.2016

Я также столкнулся с той же ошибкой.

РЕШЕНИЕ

Просто вставьте это в свой файл градиента

configurations.all {
        resolutionStrategy {
            force 'com.android.support:design:23.4.0'
            force 'com.android.support:support-v4:23.4.0'
            force 'com.android.support:appcompat-v7:23.4.0'
        }
    }

Эта проблема заключается в том, что у вас есть зависимости, включающие старые версии библиотеки поддержки. ПРОВЕРЬТЕ ЭТУ ССЫЛКУ

Вот мой файл Gradle, проверьте это

уровень

    apply plugin: 'com.android.application'

android {
    signingConfigs {
        config {
            keyAlias 'hwindi'
            keyPassword '123456'
            storeFile file('D:/Company Projects/Hwindi/Project 2/Play_KeyStore/HwindiKeyStore.jks')
            storePassword '123456'
        }
    }
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    defaultConfig {
        applicationId "com.hwindiapp.passenger"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 7
        versionName "1.6"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
        exclude 'lib/arm64-v8a/libcardioDecider.so'
        exclude 'lib/arm64-v8a/libcardioRecognizer.so'
        exclude 'lib/arm64-v8a/libcardioRecognizer_tegra2.so'
        exclude 'lib/arm64-v8a/libopencv_core.so'
        exclude 'lib/arm64-v8a/libopencv_imgproc.so'
        exclude 'lib/armeabi/libcardioDecider.so'
        exclude 'lib/armeabi-v7a/libcardioDecider.so'
        exclude 'lib/armeabi-v7a/libcardioRecognizer.so'
        exclude 'lib/armeabi-v7a/libcardioRecognizer_tegra2.so'
        exclude 'lib/armeabi-v7a/libopencv_core.so'
        exclude 'lib/armeabi-v7a/libopencv_imgproc.so'
        exclude 'lib/mips/libcardioDecider.so'
        exclude 'lib/x86/libcardioDecider.so'
        exclude 'lib/x86/libcardioRecognizer.so'
        exclude 'lib/x86/libcardioRecognizer_tegra2.so'
        exclude 'lib/x86/libopencv_core.so'
        exclude 'lib/x86/libopencv_imgproc.so'
        exclude 'lib/x86_64/libcardioDecider.so'
        exclude 'lib/x86_64/libcardioRecognizer.so'
        exclude 'lib/x86_64/libcardioRecognizer_tegra2.so'
        exclude 'lib/x86_64/libopencv_core.so'
        exclude 'lib/x86_64/libopencv_imgproc.so'
    }
    configurations.all {
        resolutionStrategy {
            force 'com.android.support:design:23.4.0'
            force 'com.android.support:support-v4:23.4.0'
            force 'com.android.support:appcompat-v7:23.4.0'
        }
    }
}
repositories {
    mavenCentral()
    maven { url "https://jitpack.io" }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:cardview-v7:23.1.1'
    compile 'com.android.support:recyclerview-v7:23.1.1+'
    compile 'com.google.android.gms:play-services-gcm:9.0.0'
    compile 'com.google.android.gms:play-services-location:9.0.0'
    compile 'com.google.android.gms:play-services-maps:9.0.0'
    compile 'com.google.android.gms:play-services-plus:9.0.0'
    compile 'com.facebook.android:facebook-android-sdk:4+'
    compile 'com.paypal.sdk:paypal-android-sdk:2.13.3'
    compile 'com.wdullaer:materialdatetimepicker:2.2.0'
    compile 'com.mukesh:permissions:1.0.3'
}
person Arpit Patel    schedule 30.07.2016

Насколько я читал, ошибка java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist, с которой вы столкнулись после переноса клиентского приложения GCM для Android на Firebase Cloud Messaging, также встречалась многими разработчиками после добавления зависимости для отчетов о сбоях в файл build.gradle уровня проекта:

compile 'com.google.firebase:firebase-crash:9.0.0'

Итак, если вам случится использовать отчеты о сбоях Firebase, вы должны убедиться, что отчеты о сбоях безопасны для нескольких процессов. В противном случае это может привести к проблемам с параллелизмом, как указано в разделе Отчет о сбоях – известные проблемы.

Одним из возможных решений, которое я нашел, является установка контекста Android и включение автономного сохранения, при этом вы включаете его через объект FirebaseDatabase в вашей MainActivity:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

Пример решения в MainActivity.java:

@Override
public void onCreate() {
  super.onCreate();
  if (!FirebaseApp.getApps(this).isEmpty()) {
    FirebaseDatabase.getInstance().setPersistenceEnabled(true);
  }
}

Этот пост SO - java.lang.IllegalStateException: FirebaseApp с именем [DEFAULT] помог с моими поисками. Я надеюсь, что это поможет и вам.

person Teyam    schedule 25.05.2016

Наконец, эта проблема решена в v9.0.2. Просто обновите библиотеку Google Play Service.

compile 'com.google.android.gms:play-services:9.0.2'

После обновления может возникнуть другая ошибка: завершено с ненулевым значением выхода 2. Решение для этого находится здесь: Java завершена с ненулевым значением выхода 2 - Android Gradle

person Gent Berani    schedule 23.07.2016

Решенная проблема с использованием приведенного ниже кода. Только что обновлено

compileSdkVersion 24
buildToolsVersion "24.0.1"
.
.
.
dependencies
{
compile 'com.android.support:recyclerview-v7:24.1.1'
compile "com.google.android.gms:play-services-gcm:9.4.0"
}

Это решило мою ошибку GCM.

person p.invisible    schedule 29.08.2016