GoogleService no se pudo inicializar

113

Estoy usando Google Maps en mi aplicación de Android. Creé la clave y agregué los permisos necesarios en el archivo de manifiesto. Pero pronto inicio la aplicación, recibo este mensaje en el depurador:

GoogleService no se pudo inicializar, estado: 10, Falta un recurso esperado: 'R.string.google_app_id' para inicializar los servicios de Google. Las posibles causas son el complemento google-services.json o com.google.gms.google-services gradle.

No estoy seguro de qué pasa. El mapa funciona bien y puedo usarlo sin problemas. Mi archivo gradle tiene esta entrada:

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

¿De qué se queja y cómo puedo aliviarlo?

Zach
fuente
¿Está esto en su manifiesto? <meta-data android: name = "com.google.android.gms.version" android: value = "@ integer / google_play_services_version" />
j2emanue
¡He probado ambos pero sigo recibiendo el mismo mensaje!
Zach
1
¿Está actualizado el apk de los servicios de reproducción de dispositivos?
Abhigyan
Ninguna de estas soluciones funcionaba, ¡pero la actualización del APK de Servicios parecía funcionar!
midoriha_senpai

Respuestas:

38

Debe colocar el archivo de configuración ( google-services.json) generado por developer.google.com , como se menciona en el segundo paso de los documentos oficiales aquí

El proceso es simple

  1. Puede seleccionar su proyecto o crear uno nuevo.
  2. Luego, después de seleccionar los servicios deseados (en este caso, el servicio de mapas), puede generar el archivo de configuración.

    Para las personas que han migrado a los proyectos de Firebase, pueden obtener lo mismo yendo a Firebase Console , seleccionando su proyecto y en la configuración encontrará el archivo de configuración.

  3. Luego, como se cita en el paso 3 de los documentos oficiales aquí

    Copie el google-services.jsonarchivo que acaba de descargar en la aplicación / o móvil / directorio de su Android

PD: Para las personas que votan en contra de esta respuesta, dejen un comentario sobre por qué no votaron.

Nishant.
fuente
6
¿Realmente necesitamos esto en nuestras aplicaciones con la nueva versión de Google Play Services? ¿O es solo para iniciar sesión en Google? Parece extraño que los registros me arrojen errores como si los necesitara, pero es posible que no los
necesite
2
@Radix ... Fui al enlace que compartiste, pero me pidió que me registrara en Google Sign In o Google Cloud Messaging ... nada sobre el mapa. ¿Alguna idea? Además, copiar este archivo json justo debajo de / app es un poco extraño ... ¿puede aclararlo? ¡Muchas gracias!
Johnny Wu
2
Ya teníamos google-services.json en nuestra aplicación, pero tuvimos que volver a crearlo al actualizar a 8.4.0.
Roy Solberg
1
mismo problema, agregar google-services.json no ayudó, cosa extraña que no ve mi gcm ya activado y quiere crear cada vez su propia clave de servidor
Andrew V.
11
Vea la respuesta correcta aquí del gerente de producto en Google: stackoverflow.com/questions/34365369/…
Ahmed Mounir
52

[De Product Manager @ Google]

Puede solucionar este problema descargando y copiando el google-services.jsonarchivo para su aplicación de Android siguiendo los pasos a continuación:

  • Seleccione el nombre de su aplicación / proyecto y el nombre del paquete de Android desde este enlace y haga clic en Continue to Choose and configure services.
  • Haga clic en Continue to Generate Configuration files.
  • Descargue google-services.jsony copie el archivo en el directorio del módulo app/o mobile/en su proyecto de Android.

Si anteriormente ha importado su proyecto de Google a Firebase, puede obtener el archivo google-services.json actualizado desde la consola de Firebase en Configuración del proyecto.

NO COPIE el PROJECT_NUMBER como sugiere una de las otras respuestas, ya que google_app_id se refiere a su aplicación dentro de un Proyecto y no al proyecto en sí.

Sriram
fuente
1
Para las personas que usan el complemento gradle-experimental, google-services.json no tendrá efecto directamente. Consulte stackoverflow.com/a/38097895/457137 para obtener una solución.
Zevoid
¿Por qué es obligatorio incluir el archivo json? ¿Por qué no puedo proporcionar la identificación en tiempo de ejecución en código?
der_michael
¿El archivo va en / app dir, no en el directorio de nivel superior?
IgorGanapolsky
11

En mi caso, la causa de este error fue que el complemento de Servicios de Google para Gradle y la biblioteca de Servicios de Play eran versiones incompatibles. Instrucciones para versiones compatibles:

1) Agregue la dependencia a su build.gradle a nivel de proyecto:

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

2) Agregue el complemento a su build.gradle a nivel de aplicación:

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

3) Si está usando Android Studio, esta es la cadena para agregar a la sección de dependencia del archivo build.gradle de su aplicación:

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

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

13rac1
fuente
1
Gracias, pero esto no funcionó para mí: Android Studio insiste en que también tengo instalado el archivo google-services.json, aunque pensé que era innecesario si seguías los tres pasos anteriores que deberían anular la necesidad del archivo. Lo que me lleva a preguntar: ¿Por qué necesito un sistema de inicio de sesión de usuario de Google si todo lo que proporciono es un mapa básico?
iaindownie
1
Mi solución no estaba en la lista, así que respondí la pregunta para brindarles a las personas otra solución potencial para este problema. En su caso, es posible que tenga instaladas bibliotecas adicionales. Intente usar solo elcom.google.android.gms:play-services-maps:8.4.0
13rac1
@eosrei, usando solo com.google.android.gms: play-services-maps: 8.4.0 funcionó para mí, ¡gracias!
akshay7692
4

Me encontré con el mismo problema y lo resolví siguiendo la solución oficial .

Estos son los pasos:

  1. obtenga el archivo de configuración google-services.jsonde este enlace .

  2. Copie el google-services.jsonarchivo que acaba de descargar en la aplicación / o el directorio móvil / de su proyecto de Android Studio.

  3. Agrega la dependencia a tu build.gradle a nivel de proyecto:

    classpath 'com.google.gms:google-services:1.5.0-beta2'
  4. Agregue el complemento a su build.gradle a nivel de aplicación:

    apply plugin: 'com.google.gms.google-services'
  5. Agregue esta dependencia a su build.gradle a nivel de aplicación:

    dependencies {
        compile "com.google.android.gms:play-services:8.3.0"
    }
Será
fuente
1
Creo que es mejor usar com.google.gms: google-services: 1.5.0 ya que es mejor que la versión beta para eliminar algunos errores impredecibles en su aplicación.
Andrew V.
@AndrewV. Sí estoy de acuerdo. La versión "1.5.0-beta2" fue copiada del enlace que di arriba.
Será
1

Para aquellos que enfrentan este problema incluso después de configurar correctamente los servicios de reproducción y colocar el google-services.jsonarchivo en la project/appcarpeta, la solución real es

Build > Rebuild Project

Posiblemente debido al hecho de que las cadenas del archivo json no se integran en los recursos compilados hasta que se realiza una reconstrucción completa.

anandbibek
fuente
1

Para Xamarin / Visual Studio Mac, necesitaba agregar esto al final de mi 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

stepheaw
fuente
0

Tuve el mismo problema en ese entonces. Pude resolverlo usando solo la biblioteca de servicios de juego necesaria, que en mi caso GCM.

En lugar de com.google.android.gms:play-services:8.4.0, utilizo com.google.android.gms:play-services-gcm:8.4.0. Consulte aquí para obtener más información; esto también resuelve el problema multidex.

Luego apliqué el enfoque de @Radix y @ Alexander para eliminar el mensaje que se ha generado GCM en el logcat con respecto a google-services.json.

emen
fuente
0

Puede cambiar el versionCodey versionNamede su aplicación en su archivo Gradle.

F. Milliard
fuente
0

Una solución rápida que utilicé es desactivar la firma. Si no desea crear código de producción, puede configurar su variante de compilación para depurar, localOldDebug o localDebug.

Haga clic en Build Variants en la parte inferior izquierda en Android Studio.

cómo-deshabilitar-generado-firmado-apk-android-studio

Dudas
fuente
podría hacer una pregunta como comentario
jjj
-2

Solo tengo otra solución que eliminaré accidentalmente

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

Agregue esto y trabaje, es para una nueva solución

Cazs
fuente