web-dev-qa-db-fra.com

Erreur GCM - googleCloudMessaging.register

J'ai le problème que l'application Android dit. "L'application xxxx Désolé s'est arrêtée" pour fonctionner avec la notification Push, lors de l'exécution du débogueur qui se produit lorsqu'il passe:

méthode 1

InstanceID InstanceId = InstanceID.getInstance (context);

 token = instanceID.getToken (key_id.toString ()

GoogleCloudMessaging.INSTANCE_ID_SCOPE); getToken error,

méthode 2

Les deux une même erreur

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

notez que le jeton est généré mais que l'application est fermée, erreur:

"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)"

J'utilise Android studio pour CdvCompileSdkVersion = Android-22 CdvBuildToolsVersion = 22.0.1

Erreur:

"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)"

Quel pourrait être le problème?

Cordialement,

13
Diego Güizzo

Google a mis à jour sur sa note de publication que ce problème est résolu, il vous suffit de mettre à jour la version vers la version 9.0.2.

Voici la note de publication: https://developers.google.com/Android/guides/releases

5
Rizwan

Le problème que vous rencontrez est dû à une incompatibilité entre
play-services / firebase sdk v9.0.0 et com.Android.support:appcompat-v7 >= 24
Il est possible que vous ne dépendiez pas directement d’appcompat-v7> = 24, mais d’autres dépendances sont configurées pour utiliser l’application la plus récente disponible.

Pour résoudre ce problème, nous venons de publier la version play-services / firebase sdk 9.0.1
Cette version mineure devrait résoudre l'incompatibilité avec appcompat-v7!

3
Diego Giorgini

J'ai aussi face à la même erreur. 

SOLUTION

Il suffit de coller ceci dans votre fichier gradle 

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

Ce problème est que vous avez des dépendances qui incluent les anciennes versions de la bibliothèque de support. VÉRIFIEZ CE LIEN

Voici mon fichier de classement vérifier ceci 

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'
}
1
Arpit Patel

Enfin, ce problème est résolu sur v9.0.2. Il suffit de mettre à jour la bibliothèque du service Google Play.

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

Après la mise à jour, une autre erreur peut se produire: fini avec une valeur de sortie non nulle 2 La solution pour celle-ci est la suivante: Java terminé avec une valeur de sortie non nulle 2 - Android Gradle

0
Gent Berani

D'après ce que j'ai lu, de nombreux développeurs ont rencontré une erreur Java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist après la migration de l'application de client GCM pour Android vers Firebase Cloud Messaging après avoir ajouté la dépendance de Crash Reporting au fichier build.gradle au niveau du projet:

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

Ainsi, si vous utilisez le rapport d'incident Firebase, vous devez vous assurer que le rapport d'incident est sécurisé pour plusieurs processus. Sinon, cela pourrait entraîner des problèmes de simultanéité, comme indiqué dans Signaler un crash - Problèmes connus .

Une solution probable que j'ai trouvée consiste à définir le contexte Android et à activer la persistance hors ligne, via l'activation de l'objet FirebaseDatabase dans votre MainActivity:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

Exemple de solution dans MainActivity.Java:

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

Ce SO post - Java.lang.IllegalStateException: FirebaseApp portant le nom [DEFAULT] m'a aidé dans mes recherches. J'espère que cela vous aidera aussi.

0
Teyam

Problème résolu en utilisant le code ci-dessous. Vient de mettre à jour 

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

Cela a résolu mon erreur GCM.

0
p.invisible