6

ho cercato di impostare GCM nel mio progetto come indicato nel Set up a GCM Client App on Android e Set Up Google Play Services dipendenza aggiuntoImpossibile ottenere fornitore com.google.android.gms.measurement.AppMeasurementContentProvider

compile "com.google.android.gms:play-services-gcm:8.4.0" 

alla sezione dipendenza della mia domanda di build.gradle file.

E Nella radice Gradle classpath file del componente aggiuntivo come indicato nel progetto di esempio (Esempio clonato da $ git clone https://github.com/googlesamples/google-services.git) come

dependencies { 
    classpath 'com.android.tools.build:gradle:2.0.0-beta6' 
    classpath 'com.google.gms:google-services:2.0.0-beta6' 
} 

E 'costruzione di elegante, ma si blocca sul lancio con la seguente analisi dello stack:

java.lang.RuntimeException: impossibile ottenere fornitore com.google.android.gms.measurement.AppMeasurementContentProvider: java.lang.NullPointerException: riferimento null a android.ap p.ActivityThread.installProvider (ActivityThread.java:5156) a android.app.ActivityThread.installContentProviders (ActivityThread.java:4748) a android.app.ActivityThread.handleBindApplication (ActivityThread.java:4688) a android.app. ActivityThread.-wrap1 (ActivityThread.java) su android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1405) su android.os.Handler.dispatchMessage (Handler.java:102) su android.os.Looper .loop (Looper.java:148) su android.app.ActivityThread.main (ActivityThread.java:5417) su java.lang.reflect.Method.invoke (metodo nativo) su com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) a com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616) causati da: java.lang.NullPointerException: riferimento null su com.google.android.gms.common.internal.zzx.zzy (fonte sconosciuta) all'indirizzo com.google.android.gms.measurement.internal.zzt.zzaU (fonte sconosciuta) su com.google. android.gms.measurement.AppMeasurementContentProvider.onCreate (Sconosciuto Source) a android.content.ContentProvider.attachInfo (ContentProvider.java:1748) a android.content.ContentProvider.attachInfo (ContentProvider.java:1723) a android.app.ActivityThread.installProvider (ActivityThread.java:5153) a android.app.ActivityThread.installContentProviders (ActivityThread.java:4748) a android.app.ActivityThread.handleBindApplication (ActivityThread.java:4688) a android .app.ActivityThread.-wrap1 (ActivityThread.java) su android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1405) su android.os.Handler.dispatchMessage (Handler.java:102) su Android. os.Looper.loop (Looper.java:148) su android.app.ActivityThread.main (ActivityThread.java:5417) su java.lang.reflect.Method.invoke (Metodo nativo) su com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) su com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 616)

provato anche in relazione alle domande di stack:

  1. Updating Play services from 8.1 to 8.3 with Proguard enabled
  2. Error on some devices - couldn't find class 'com.google.android.gms.measurement.internal.zzz'

Come risposta nel primo collegamento cercato classpath

classpath 'com.google.gms:google-services:1.5.0' 

e come answe rosso nel 2 ° link, ha provato anche Multidex senza successo.

cercato anche per applicazione di misura aggiungendo

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <integer name="google_app_measurement_enable">0</integer> 
</resources> 

come suggerito in Play Services Release notes.

Nota: codice di esempio in esecuzione.


Aggiornamento:

cosa interessante è che lo stesso errore anche se ho solo aggiungere dipendenza

compile "com.google.android.gms:play-services-gcm:8.4.0" 

nel mio file Gradle app (Nota: solo una riga aggiunta nel progetto esistente) .E non ci sono errori dopo l'aggiunta

compile "com.google.android.gms:play-services-gcm:8.1.0" 

ovvero il token funziona su 8.1.0. Interessante, no?

+0

Non esiste alcun metodo 'com.google.android.gms.common.internal.zzx.zzy' in 8.4.0. Sei sicuro di non mischiare moduli GMS con versioni diverse? Forse attraverso più file build.gradle. –

+0

Verificherà e ti farà sapere. –

+0

Tutti i moduli gms con la stessa versione 8.4.0 solo nel file gradle app. –

risposta

0

Dal menù in studio Android vai a:

  • Corporatura → Pulire Progetto

  • Corporatura → Rebuild Progetto

  • eseguire l'applicazione. Niente più crash.

Nota: Sto usando l'ultima versione di play-servizi:

compile 'com.google.android.gms:play-services:8.4.0' 
+0

Grazie alla risposta, ma non funziona nemmeno riavviato AS.E anche come suggerito dai servizi di gioco "Dalla versione 6.5, puoi invece compilare in modo selettivo le API del servizio di Google Play nella tua app". Così aggiungiamo "compile" com.google.android .gms: play-services-gcm: 8.4.0 " ' compila "com.google.android.gms: play-services-gcm: 8.4.0" 'per uscire dal limite di dex. –

+0

downvoter: perché? – redochka

2

Ti sei ricordato di aggiungere il plugin per il fine del file build.gradle livello app? ...

apply plugin: 'com.google.gms.google-services' 

È specificamente necessario aggiungerlo alla fine del file.

Date un'occhiata qui per riferimento: https://github.com/googlesamples/google-services/blob/master/android/gcm/app/build.gradle

C'è anche una segnalazione di bug ha aperto su questo tema: Issue 193112

+0

Sì, l'ho fatto, senza successo, in questione menziono anche il primo link.E anche fatto come dato in sample.Please leggere correttamente la domanda. –

+1

@GiruBhai - In realtà ho letto la domanda "correttamente", amico mio. Hai omesso di menzionare che hai incluso la linea di plugin nel tuo file Gradle. Ho anche menzionato un bug report su questo problema, che ce ne sono diversi. Ti suggerisco di leggere un po 'di più queste segnalazioni di bug. In bocca al lupo! – SBerg413

1

tenta di modificare la dipendenza classpath, invece di com.google.gms 'classpath' : google-services: 2.0.0-beta6 '', utilizzare classpath ' classpath' com.google.gms: google-services: 1.5.0 ''.

Ecco un relativo stack overflow ticket, è possibile verificare la soluzione offerta dalla comunità :. È stato affermato che hanno già presentato una richiesta di bug e che la suddetta correzione è stata implementata nella versione 1.5.0 del plug-in del foot service.

+0

L'ho usato 'classpath 'com.google.gms: google-services: 1.5.0'' hai letto tutta la domanda? E ho anche provato' classpath' com.google.gms: google-services: 2.0.0-alpha6 ' 'come indicato in https://developers.google.com/cloud-messaging/android/client#add-config –

Problemi correlati