No se ha encontrado ningún cliente coincidente para el nombre del paquete (Google Analytics): múltiples productos, favores y tipos de compilación [cerrado]


383

Contexto:

Estoy tratando de configurar Google Analytics para mi aplicación. (teniendo 4 personalizados buildTypesy más de unos pocos productFlavors)

Funciona bien cuando selecciono el Build Variantque tiene el applicationIdconjunto en com.my.app.package.name(el nombre del paquete utilizado al generar el google-services.json). Pero, mis otros sabores tienen diferentes ID de aplicación.

Seguí el devguide oficial para configurarlo.

El error que obtengo cuando se selecciona cualquier otra variante de compilación Build Variants Tab(que tiene un diferente applicationId(nombre del paquete) es la siguiente:

Error: Error en la ejecución de la tarea ': aplicación: processAllcategoriesDebugfreeGoogleServices'.

No se ha encontrado ningún cliente coincidente para el nombre del paquete 'com.my.app.package.name.debug'

Explicación del mensaje de error:

En el nombre de la tarea en el mensaje de error anterior Debugfreeestá mi costumbre buildTypey Allcategorieses una de mis productFlavors.

Entiendo el error y sé que el nombre del paquete es diferente del que usé al generar el json, pero eso es lo que estoy tratando de resolver.

Problema:

Ahora, el google-services.jsonreside en la appcarpeta y, por lo tanto, no puedo separarlos para cada sabor de producto soltándolos en la carpeta del conjunto de origen específico de sabor.

Preguntas:

  1. Mi costumbre byildTypepara depurar sufijos .debugen el applicationId(nombre del paquete). ¿Hay alguna manera de que funcione con el google-services.jsonque tiene mi versión applicationId(es decir, sin el sufijo .debug)
  2. ¿Hay alguna manera de tener múltiples sabores de productos configurados en el mismo google-services.json archivo sin usar archivos y tareas separados para copiar el archivo requerido a la appcarpeta? Sé que se puede hacer usando taskcomo se menciona en esta publicación . ¿Hay una manera más simple de tener un solo archivo o elegir el archivo correcto según la configuración de Gradle?
  3. Veo que el package_namecampo google-services.jsontiene el nombre del paquetecom.my.app.package.name . ¿Puedo agregar múltiples nombres de paquetes manualmente para trabajar con todas las variantes de compilación? Si es así, ¿cómo hacer eso? No se encontraron instrucciones en la documentación.

1
¿Encontraste una sopa especialmente para tu tercera pregunta?
Mate

Estoy en situaciones similares Necesito soporte de análisis solo para una versión de sabor prod-release. Pude limitar la dependencia agregada a prod-flavour pero todavía busca el paquete correcto como parte del archivo hijo. Cualquier sugerencia !
Código

1
También estoy enfrentando el mismo problema. ¿Avisarme si alguien encuentra la solución para esto?
Deepanshu Sinha

Respuestas:


382

Verifique el nombre del paquete en google-services.json , debe coincidir con el nombre del paquete local de su aplicación

Ejemplo

"client_info": {
    "mobilesdk_app_id": "1:6596814400689:android:65d6f25f5006145",
    "android_client_info": {
      "package_name": "com.my.app.package.name"
    }

En este caso, el nombre de mi paquete local es com.my.app.package.name, así que también he cambiado el nombre de mi paquete en google-services.json con mi nombre de paquete local.


google-services.json es un archivo !!! dentro de un directorio de aplicaciones. Debería encontrar este archivo con la ayuda del Explorador de Windows (por ejemplo). Debería editar este archivo por el editor habitual.
user_MGU

para encontrar esto, vaya a la vista Proyecto en Android Studio y busque dentro del paquete de su aplicación
Gastón Saillén

12
No ... todos sabemos que google-services.json no es válido en este problema ... ¡Lo que queremos es cómo resolver este problema en una situación de variante de compilación!
MJ Studio

Bienvenido Yudi karma
Muhammed Fasil

Si su actividad está en un subpaquete como: com.example.aaron.myproject22.Activities ... debe ingresar a google-services.json y cambiar el nombre_paquete de client_info a com.example.aaron.myproject22. También asegúrese ha aplicado el complemento: 'com.google.gms.google-services' en la parte inferior de build.grade (aplicación de módulo)
WHOATEMYNOODLES

224

Encontró esto:

El archivo google-services.json generalmente se coloca en el directorio app /, pero a partir de la versión 2.0.0-alpha3 del complemento se agregó soporte para los tipos de compilación , lo que haría válida la siguiente estructura de directorios:

app/src/
    main/google-services.json
    dogfood/google-services.json
    mytype1/google-services.json
    ...

Fuente

Fuente 2


16
¿Hay alguna forma de deshabilitar el análisis fácilmente para un tipo de compilación? Quiero deshabilitarlo para depurar? Pensé que estaría deshabilitado si no agrego el archivo de servicios de google, pero incluso si lo deshabilito, todavía pide el archivo de servicios de google.
Gokhan Arik

2
¿Cuál sería la diferencia de cada uno de los archivos josn agregados en cada sabor?
Android

2
¿Existe la posibilidad de usar los servicios de google dentro de un módulo (que comparten dos aplicaciones) ... porque ni siquiera puedo sincronizar gradle sin tener un archivo de servicio de google para ese paquete ... la aplicación de inserción debería proporcionar el json, pero No es el módulo. ¿Es esto posible?
Georg

99

No se ha encontrado ningún cliente coincidente para el nombre del paquete 'com.tf' . Estoy bastante seguro de que el "nombre_paquete" en google-services.json no coincide con su "ID de aplicación" en la aplicación gradle.

aplicación gradle:

defaultConfig {
        applicationId "com.tf" //replace with the package_name in google-services.json =
        minSdkVersion 23
        targetSdkVersion 26
        versionCode 7
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

google-services.json

"client_info": {
        "mobilesdk_app_id": "1:23978655351:android:2b2fece6b961cc70",
        "android_client_info": {
          "package_name": "in.ac.geu.debug"
        }
      },

Solución : solo asegúrese de que package_namey applicationIddebe ser el mismo.


44
El autor preguntaba por una solución alternativa a esto. Tienen diferentes tipos de compilación con diferentes
ID de

Has dado a la solución más válida. Felicitaciones hombre !!
Devansh sadhotra

El application idgradle en la aplicación lo clavó
BlackPearl

69

asegúrese de que el nombre de su paquete en el archivo "google-services.json" coincida con el nombre del paquete de sus aplicaciones.


44
problema común al bifurcar un repositorio para un nuevo proyecto.
Zapnologica

1
Sí, si el nombre del paquete no es el mismo que no funciona
Priya

63

He encontrado la solución:

Tenemos que crear dos "aplicaciones" en el proyecto firebase, y luego podemos descargar el archivo json desde cualquier aplicación (la descargué de la aplicación con sabor). Contendrá los datos de ambas aplicaciones. Simplemente podemos copiar el archivo json en el directorio raíz de la aplicación.

Fuente: https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html


10
Esta es la mejor respuesta ya que todos los sabores del producto pueden ser cubiertos por un archivo json. No es necesario crear otras fuentes.
Tash Pemhiwa

2
Tenga en cuenta que debe crear las aplicaciones dentro del mismo proyecto. La descripción general del proyecto en la esquina superior izquierda tiene un icono de configuración. Presiónelo y se abrirá en la pestaña General, desplácese hacia abajo y debajo de la sección Sus aplicaciones hay un botón Agregar aplicación
galaxigirl

El mayor problema sucederá cuando olvides cambiar tu google-service.json y empujarlo a prod.
Edgar Khimich

36

Necesita colocar google-services.jsonen app/dir. Y para cada tipo de compilación, debe haber un director acorde en la app/srccarpeta.

Por ejemplo, si tiene versión y depuración:

app/google-services.json
app/src/debug/google-services.json

En todos los archivos google-services.json, debe especificar la correcta package_namesegún el tipo de compilación.

Por ejemplo, dentro del directorio de depuración debería ser como {com.myapp}.debug


55
Aparentemente, incluso puede duplicar el elemento del conjunto principal en la "client"matriz de s (agregar una coma entre los elementos) y cambiar solo el "package_name"valor del nuevo elemento para incluir el .debugsufijo. Luego reconstruir. Funcionó para mí en AS 2.3.3.
et_l

36

Este error ocurre cuando tienes un archivo Json de Google Services descargado en tu proyecto cuyo nombre de paquete no coincide con el nombre del paquete de tu proyecto .

Recientemente renombró el nombre del paquete del proyecto?

Actualiza todas las clases pero no el archivo Gradle . Así que verifique si el nombre de su paquete es correcto en su Gradle, y también tal vez Manifiesto.


1
gracias fue útil
Sirwan Rahimi

32

Siempre que cree o actualice package nameAsegúrese de que el nombre de su paquete sea exactamente el mismo [Mayúsculas y minúsculas son importantes]

Haz debajo del paso.

1) Comprobar applicationIden el nivel de aplicacióngradle archivo de ,

2) Revisa package_nametugoogle-services.json archivo,

3) Revisa packagetuAndroidManifest archivo

y para una confirmación completa, haga que el nombre del directorio de su paquete de trabajo, es decir ("com.example.app") también sea el mismo.


2
Gracias hermano, funcionó para mí. En el archivo gradle de nivel de aplicación, mi paquete era diferente. Cuando lo cambié, funcionó para mí
fazil

wel come @fazil
Ravi Vaniya

No tiene que cambiar el packagemanifiesto (y todos los archivos en todos los paquetes), ya applicationIdque cambiará la identificación de la aplicación.
CoolMind

22

En primer lugar, agregue un sufijo al paquete de la aplicación en Gradle:

yourFlavor {
   applicationIdSuffix "yourFlavor"
}

Esto hará que su paquete sea nombrado

com.domain.yourapp.yourFlavor

Luego vaya a Firebase debajo de su proyecto actual y agregue otra aplicación de Android con este nombre de paquete.

Luego, reemplace el archivo existente google-services.json con el nuevo que genere con la nueva aplicación.

Luego terminarás con algo que tiene múltiples secciones "client_info". Entonces deberías terminar con algo como esto:

"client_info": {
    "mobilesdk_app_id": "YOUR APP INFO",
    "android_client_info": {
      "package_name": "com.domain.yourapp"
    }
  }

"client_info": {
    "mobilesdk_app_id": "YOUR APP INFO - will be different then other app info",
    "android_client_info": {
      "package_name": "com.domain.yourapp.yourFlavor"
    }
  }

¡Esta es la respuesta correcta! Necesita ambas aplicaciones (ids) en el archivo google-services.json.
Bojan Hrnkas 01 de

esta es la forma. +1, aquí hay una discusión antigua que se relaciona con este tema
lasec0203

Simple y directo.
Umair

20

comprobar si client_id y package_nameen google-services.json tiene un valor correcto de acuerdo con el nombre de su paquete.

Debe agregar el archivo mencionado en el directorio de sabores con el nombre del paquete correspondiente en el campo client_idy package_name.


20

1.Verifique el nombre del paquete y la identificación de la aplicación deben ser iguales

2.Verifique el nombre del paquete google-services.json que está disponible en la carpeta de la aplicación



17

Abra su archivo Google-services.json y busque esta sección en el archivo:

"client": [
{
  "client_info": {
    "mobilesdk_app_id": "1:857242555489:android:46d8562d82407b11",
    "android_client_info": {
      "package_name": "com.example.duke_davis.project"
    }
  }

compruebe si el paquete es el mismo que el nombre de su paquete. El mío era diferente, así que lo cambié y funcionó.


Funcionó :) Gracias
Solution Spirit

11

Vengo de reaccionar nativo, pero creo que esto también se aplica a esta pregunta. Para especificar.

Dentro del archivo, android/app/build.gradlebusque applicationId(dentro android, defaultConfig)

y asegúrese de que ese valor sea el mismo

client[0]client_info.android_client_info.package_name

como el valor dentro google-services.json.


Yo también, gracias, esto es más aplicable
Jason Sebring

9

También debe cambiar el nombre del paquete en google-services.json


8

Si el nombre de su paquete en el archivo Google-services.json está bien, vaya al archivo gradle.properties. Luego cambie su APPLICATION_ID = "com.yourpackage.name"


5

Creo que ha agregado el archivo json de firebase "google-services" .json con el nuevo archivo. Asegúrese de crear un nuevo archivo, consulte el enlace sobre cómo crear un archivo json desde firebase y debe coincidir con el nombre de su paquete

Lo segundo es que si está cambiando el nombre del paquete, use la opción "reemplazar en ruta" cuando haga clic derecho debajo de los archivos cuando seleccione el proyecto en el menú desplegable. ¡Debe buscar el nombre del paquete en todo el proyecto y reemplazarlo!

Espero que esto ayude !


4

Si nada de eso funcionó para uno de ustedes, mi problema fue con un nombre de paquete que no comenzó con un 'com'. lo cambió, ahora funciona.

Espero que ayude


funcionó para mí, gracias
Hasan Shouman

4
android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.package.name"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

asegúrese de que el ID de aplicación de Gradle.app sea el mismo que su nombre de paquete. mi problema era este y lo resolví de esta manera


3

vaya al directorio de su proyecto y cree carpetas en la ruta de la aplicación / src que denominen los sabores de su producto (como Alpha, Beta, Store o el nombre de su sabor). luego copie su archivo google-services.json en cada carpeta. no olvide cambiar el campo "nombre_paquete" en el archivo google-services.json de cada sabor de producto que subcarpeó.


3

Vaya al archivo google-services.json y, en la parte del cliente, verifique el nombre del paquete y compárelo con el nombre del paquete de la aplicación si son diferentes, luego cambie el nombre del paquete del cliente de acuerdo con el nombre del paquete de la aplicación.

archivo google-services.json-> "nombre_paquete": "com.example.application.tracker"

Nombre del paquete de la aplicación-> paquete "com.example.application.tracker";


2

Lo resolví haciendo dos fuentes, una gratuita y otra paga. Ambas carpetas contendrán el código Java requerido y los archivos de recursos, que se editarán según los requisitos del sabor particular. Por ejemplo, desea eliminar el código de AdMob en el pago tanto de las clases de Java como de los archivos de diseño.


2

Resolví el mismo problema volviendo a sincronizar el archivo google-services.json.

Herramientas> Firebase> Conectar a Firebase> Sincronizar


donde hiciste eso ¿Qué reemplaza exactamente? ¿Captura de pantalla?
Nasenbaer

Puede hacerlo en Android Studio (el complemento Firebase debe estar habilitado). Actualiza el archivo google-services.json.
Nabin Bhandari

2

Resolví el mismo problema aquí, es una solución simple: cuando cree una conexión Firebase , siga estas pautas:

  • Agregue el nombre de su aplicación en firebase

  • Agregue el nombre del paquete de la aplicación (escriba el mismo nombre del paquete que está utilizando en la aplicación)

  • cuando firebase cree el archivo google-services.json , simplemente descárguelo y péguelo en la carpeta de la aplicación

  • Sincroniza tu proyecto El problema está resuelto :)

    Gracias


2

También recibo este problema cuando cambio el nombre del paquete de mi aplicación.

En su proyecto de estudio de Android, busque el archivo "google-services.json". Abrelo. y verifique si el nombre del paquete de su aplicación es el mismo que está escrito en este archivo.

El nombre del paquete de su aplicación y el nombre del paquete escrito en el archivo "google-services.json" debe ser el mismo.


1

Esto significa que su archivo google-services.json no pertenece a su aplicación (¿Descargó google-services.json para otra aplicación?) ... así que para resolver esto, haga lo siguiente:

1: Inicie sesión en Firebase y abra su proyecto. 2: Haga clic en el icono de Configuración y seleccione Configuración del proyecto. 3: En la tarjeta Sus aplicaciones, seleccione el nombre del paquete de la aplicación para la que necesita un archivo de configuración de la lista. 4: haga clic en google-services.json. Una vez completada la descarga, agregue el nuevo google-services.json a la carpeta raíz del proyecto, reemplazando el existente ... o simplemente elimine el anterior. Es muy normal descargar google-services.json para su primer proyecto y luego asumir u olvidar que este google-services.json específico está diseñado solo para su proyecto actual, porque no otro porque todos los proyectos tienen un nombre de paquete único.


1

Verifique applicationIdSuffixen el archivo build.gradle de su aplicación. Vea si está concatenando algún texto a su applicationId. Si es así, retírelo.


1

puedes hacer eso para resolver este problema.

ingrese la descripción de la imagen aquí


3
Esto enmascarará el problema en lugar de resolverlo. Ver otras respuestas para una solución.
Vadim Kotov

Utilice el código en lugar de una captura de pantalla, su respuesta es buena en mi caso porque solo quiero crear una "maqueta" de un clon de la aplicación.
user2078023

-1

Así de simple. Cierre sesión en Android Studio, ciérrelo por completo. Vuelva a abrir Android Studio y luego vuelva a iniciar sesión en Android Studio.

Luego intente conectarse a firebase desde el IDE de estudio de Android. Este procedimiento funcionó para mí.


esto no funciona si google-services.json existe. debemos eliminar google-services.json si existe.
Dika

esto funcionará una vez después de cambiar el nombre del paquete en el archivo json y antes de guardarlo, debe cerrar el estudio de Android y luego guardar el archivo json y reiniciar el estudio.
Anish Kumar

-1

Es simple resolver esto: solo asegúrese de que el nombre del paquete en su archivo app / build.gradle sea el mismo nombre del paquete que el del archivo del Manifiesto de la aplicación. y asegúrese de que el nombre del paquete sea correcto. Eso debería resolver esto

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.