Inizializzazione di GoogleService non riuscita


113

Sto usando Google Maps nella mia applicazione Android. Ho creato la chiave e aggiunto le autorizzazioni necessarie nel file manifest. Ma presto avvio l'applicazione ottengo questo messaggio nel debugger:

Inizializzazione di GoogleService non riuscita, stato: 10, risorsa prevista mancante: "R.string.google_app_id" per l'inizializzazione dei servizi Google. Possibili cause sono la mancanza del plug-in gradle google-services.json o com.google.gms.google-services.

Non sono sicuro di cosa sia sbagliato. La mappa funziona bene e posso usarla senza problemi. Il mio file gradle ha questa voce:

compila "com.google.android.gms: play-services: 8.4.0"

Di cosa si lamenta e come lo allevo?


è presente nel file manifest: <meta-data android: name = "com.google.android.gms.version" android: value = "@ integer / google_play_services_version" />
j2emanue


Ho provato entrambi ma ricevo ancora lo stesso messaggio!
Zach

1
L'apk dei servizi di riproduzione del dispositivo è aggiornato?
Abhigyan

Nessuna di queste soluzioni funzionava, ma l'aggiornamento dell'APK dei servizi sembrava fare il trucco!
midoriha_senpai

Risposte:


38

Devi posizionare il file di configurazione ( google-services.json) generato da developer.google.com , come menzionato nel 2 ° passaggio dei documenti ufficiali qui

Il processo è semplice

  1. Puoi selezionare il tuo progetto o crearne uno nuovo.
  2. Quindi dopo aver selezionato i servizi desiderati (in questo caso il servizio mappe), è possibile generare il file di configurazione.

    Per le persone che hanno migrato ai progetti Firebase possono ottenere lo stesso andando su Firebase Console , selezionando il tuo progetto e nelle impostazioni troverai il file di configurazione.

  3. Quindi, come citato nel passaggio 3 dei documenti ufficiali qui

    Copia il google-services.jsonfile che hai appena scaricato nell'app / o mobile / directory del tuo Android

PS: Per le persone che votano questa risposta, per favore lascia un commento sul motivo per cui la stai votando.


6
Ne abbiamo davvero bisogno nelle nostre app con la nuova versione di Google Play Services? O è solo per l'accesso a Google? Sembra strano che i log mi
generino

2
@Radix ... sono andato al link che hai condiviso, ma mi ha chiesto di registrarmi per Google Sign In o Google Cloud Messaging ... niente sulla mappa. Qualche idea? Inoltre, copiare questo file json proprio sotto / app è un po 'strano ... puoi chiarire? Grazie mille
Johnny Wu

2
Avevamo già google-services.json nella nostra app, ma abbiamo dovuto ricrearlo durante l'aggiornamento a 8.4.0.
Roy Solberg

1
stesso problema, l'aggiunta di google-services.json non ha aiutato, cosa strana che non vede il mio gcm già attivato e vuole creare ogni volta la propria chiave del server
Andrew V.

11
Vedi la risposta corretta qui dal product manager di Google: stackoverflow.com/questions/34365369/…
Ahmed Mounir

52

[Da Product Manager @ Google]

Puoi risolvere questo problema scaricando e copiando il google-services.jsonfile per la tua app Android seguendo i passaggi seguenti:

  • Seleziona il nome dell'app / progetto e il nome del pacchetto Android da questo link e fai clic su Continue to Choose and configure services.
  • Fare clic su Continue to Generate Configuration files.
  • Scarica google-services.jsone copia il file nella directory del modulo app/o mobile/nel tuo progetto Android.

Se hai precedentemente importato il tuo progetto Google in Firebase, puoi ottenere il google-services.json aggiornato dalla console Firebase in Impostazioni progetto.

NON COPIARE PROJECT_NUMBER come suggerito da una delle altre risposte poiché google_app_id si riferisce alla tua app all'interno di un progetto e non al progetto stesso.


1
Per le persone che utilizzano un plug-in gradle-sperimentale, google-services.json non avrà effetto direttamente. Fare riferimento a stackoverflow.com/a/38097895/457137 per una soluzione alternativa.
Zevoid

Perché è obbligatorio includere il file json? Perché non posso fornire l'ID in fase di esecuzione nel codice?
der_michael

Il file va nella directory / app , non nella directory di primo livello?
IgorGanapolsky

11

Nel mio caso, la causa di questo errore era che il plug-in Google Services per Gradle e la libreria Play Services erano versioni incompatibili. Istruzioni per versioni compatibili:

1) Aggiungi la dipendenza al tuo build.gradle a livello di progetto:

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

2) Aggiungi il plugin al tuo build.gradle a livello di app:

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

3) Se utilizzi Android Studio, questa è la stringa da aggiungere alla sezione delle dipendenze del file build.gradle della tua applicazione:

dependencies {
  compile "com.google.android.gms:play-services:8.3.0"
}

Fonte: https://developers.google.com/cloud-messaging/android/client


1
Grazie, ma questo non ha funzionato per me - Android Studio insiste che ho installato anche il file google-services.json, anche se ho pensato che non fosse necessario se hai seguito i tre passaggi precedenti che dovrebbero sostituire la necessità del file? Il che mi porta a chiedere: perché ho bisogno di un sistema di accesso utente di Google se tutto ciò che sto fornendo è una mappatura di base?
iaindownie

1
La mia soluzione non era elencata, quindi ho risposto alla domanda per dare alle persone un'altra potenziale soluzione per questo problema. Nel tuo caso, potresti avere librerie aggiuntive installate. Prova a utilizzare solocom.google.android.gms:play-services-maps:8.4.0
13rac1

@eosrei, usando solo com.google.android.gms: play-services-maps: 8.4.0 ha funzionato per me, grazie!
akshay7692

4

Ho incontrato lo stesso problema e l'ho risolto seguendo la soluzione ufficiale .

Ecco i passaggi:

  1. ottenere il file di configurazione google-services.jsonda questo collegamento .

  2. Copia il google-services.jsonfile che hai appena scaricato nell'app / o mobile / directory del tuo progetto Android Studio.

  3. Aggiungi la dipendenza al tuo build.gradle a livello di progetto:

    classpath 'com.google.gms:google-services:1.5.0-beta2'
  4. Aggiungi il plug-in al tuo build.gradle a livello di app:

    apply plugin: 'com.google.gms.google-services'
  5. Aggiungi questa dipendenza al tuo build.gradle a livello di app:

    dependencies {
        compile "com.google.android.gms:play-services:8.3.0"
    }

1
Penso che sia meglio usare com.google.gms: google-services: 1.5.0 in quanto è meglio della versione beta per rimuovere alcuni errori imprevedibili nella tua app.
Andrew V.

@AndrewV. Si, sono d'accordo. La versione "1.5.0-beta2" è stata copiata dal link che ho fornito sopra.
Il

1

Per coloro che affrontano questo problema anche dopo aver impostato correttamente i servizi di riproduzione e aver inserito il google-services.jsonfile nella project/appcartella, la soluzione effettiva è quella di

Build > Rebuild Project

Probabilmente a causa del fatto che le stringhe del file json non vengono integrate nelle risorse compilate fino a quando non viene eseguita una ricostruzione completa.


1

Per Xamarin / Visual Studio Mac avevo bisogno di aggiungerlo alla fine del mio Droid.csproj

<Target Name="ProcessGoogleServicesJson" Condition=" '@(GoogleServicesJson)' != '' AND '$(AndroidApplication)' == 'True' AND '$(DesignTimeBuild)' != 'True'" BeforeTargets="$(ProcessGoogleServicesJsonBeforeTargets)" AfterTargets="$(ProcessGoogleServicesJsonAfterTargets)">
<Message Text="Using ProcessGoogleServicesJson override" Importance="high" />
<ProcessGoogleServicesJson GoogleServicesJsons="@(GoogleServicesJson)" IntermediateOutputPath="$(IntermediateOutputPath)" MonoAndroidResDirIntermediate="$(MonoAndroidResDirIntermediate)" AndroidPackageName="$(_AndroidPackage)">
    <Output ItemName="_AndroidResourceDest" TaskParameter="GoogleServicesGeneratedResources" />
    <Output ItemName="FileWrites" TaskParameter="GoogleServicesGeneratedResources" />
</ProcessGoogleServicesJson>
<ItemGroup>
    <FileWrites Include="$(IntermediateOutputPath)\ProcessGoogleServicesJson.stamp" />
</ItemGroup>

https://github.com/xamarin/GooglePlayServicesComponents/issues/64



0

Allora ho avuto lo stesso problema. Sono riuscito a risolverlo utilizzando solo la libreria dei servizi di riproduzione necessaria, che nel mio caso GCM.

Invece di com.google.android.gms:play-services:8.4.0, io uso com.google.android.gms:play-services-gcm:8.4.0. Vedi qui per maggiori informazioni; questo risolve anche il problema del multidex.

Quindi ho applicato l'approccio di @Radix e @ Alexander per rimuovere il messaggio che GCM è stato emesso nel logcat per quanto riguarda il file google-services.json.


0

Puoi modificare il versionCodee versionNamedella tua app nel file Gradle.


0

Una soluzione rapida che ho usato è disabilitare la firma. Se non desideri creare codice di produzione, puoi impostare la tua variante di build su debug, localOldDebug o localDebug.

Fare clic su Build Variants in basso a sinistra in Android Studio.

how-to-disable-generated-firmato-apk-android-studio


potrebbe fare domanda come commento
jjj

-2

Ho solo un'altra soluzione che rimuovo accidentalmente

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
        .findFragmentById(R.id.map);
mapFragment.getMapAsync(this);

Aggiungi questo e lavora, è per una nuova soluzione

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.