Не найден соответствующий клиент для имени пакета (Google Analytics) - несколько productFlavors & buildTypes


контекст:

я пытаюсь настроить Google Analytics для моего приложения. (имея 4 пользовательских buildTypes и productFlavors)

он отлично работает, когда я выбираю Build Variant, которая имеет applicationId значение com.my.app.package.name (имя пакета, используемое при создании google-services.json). Но, мои другие вкусы имеют различные applicationIds.

я последовал за offical devguide, чтобы установить его.

ошибка, которую я получаю, когда любой другой вариант сборки выбирается в Build Variants Tab (который имеет другое applicationId (имя пакета) выглядит следующим образом:

ошибка: не удалось выполнить задачу ': app: processAllcategoriesDebugfreeGoogleservices'.

нет подходящих клиентов для название пакета 'com на.мой.приложение.пакет.имя.отладка'

объяснение сообщения об ошибке:

в имени задачи в сообщении об ошибке выше Debugfree это мой обычай buildType и Allcategories это один из моих productFlavors.

я понимаю ошибку и знаю, что имя пакета отличается от того, что я использовал при создании json, но именно это я пытаюсь понять.

:

и google-services.json проживает в app папка и, следовательно, я не в состоянии отделить их для каждого вкуса продукта, отбросив их в аромате определенная папка исходного набора.

вопросы:

  1. мой заказ byildType для отладки суффиксы .debug до applicationId (имя пакета). Есть ли способ я могу заставить его работать с google-services.json который имеет мой релиз applicationId (т. е. без суффикса .debug)
  2. есть ли способ настроить несколько вкусов продукта в одном и том же google-services.json файл без использования отдельных файлов и задач для копирования необходимого файла в . Я знаю, что это можно сделать с помощью task как уже упоминалось в этом посте. Есть ли более простой способ просто иметь один файл или выбрать правильный файл на основе конфигурации gradle?
  3. я вижу
26 190

26 ответов:

нашел это:

google-сервисы.json-файл обычно помещается в приложение/ каталог но начиная с версии 2.0.0-alpha3 поддержка плагина была добавлено для типов сборки, что бы сделать следующий каталог структура действительна:

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

источник

Источник 2

Проверьте имя пакета на google-сервисы.json это должно быть то же самое с вашим локальным именем пакета вашего приложения

пример

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

в этом случае мое локальное имя пакета com.my.app.package.name так же я изменил свое имя пакета в google-сервисы.json С моим местным именем пакета

убедитесь, что ваше имя пакета в " google-services.файл "json" совпадает с именем пакета ваших приложений.

Я нашел решение:

мы должны создать два "приложения" в проекте firebase, а затем мы можем загрузить файл json из любого приложения (я загрузил из ароматизированного приложения). Он будет содержать данные для обоих приложений. Мы можем просто скопировать файл JSON в корневой каталог приложения.

Источник: https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html

всякий раз, когда вы создаете или обновляете package name убедитесь, что ваше имя пакета точно такое же [верхний и нижний регистр имеет значение]

сделать ниже шага.

1). Регистрация applicationId на уровне приложения ,

2). Регистрация package_name в своем ,

3). Регистрация package в своем AndroidManifest file

и для полного подтверждение сделайте имя каталога Вашего рабочего пакета т. е. ("com.образец.приложение") тоже самое.

вам нужно разместить google-services.json на app/ реж. И для каждого типа сборки должен быть соответствующий директор .

например, если у вас есть release и Debug:

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

В все google-сервисы.JSON файлы, вы должны указать правильно package_name в соответствии с типом сборки.

например, внутри debug dir это должно быть как {com.myapp}.debug

Откройте Google-сервисы.файл json и найдите этот раздел в файле:

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

проверьте, совпадает ли пакет с вашим именем пакета. Мой был другим, поэтому я изменил его, и он работал.

проверить, если client_id и package_name на google-сервисы.json имеет правильное значение в соответствии с вашим именем пакета.

вы должны добавить указанный файл в каталог flavors с соответствующим именем пакета в client_id и

Я исхожу из react native, но я думаю, что это относится и к этому вопросу. Указывать.

в файле android/app/build.gradle искать applicationId (между android,defaultConfig)

и убедитесь, что это значение одинаково

client[0]client_info.android_client_info.package_name

в качестве значения в пределах google-services.json.

убедитесь, что вы переименовали ApplicationId в файле gradle после переименования вашего пакета

Если ваше имя пакета на Google-services.файл json в порядке, Перейти для Gradle.файл свойств. Затем измените свой APPLICATION_ID="com.yourpackage.name"

кроме того, нужно изменить имя пакета в google-сервисы.json

Если ни один из них не работал для одного из вас, ребята, моя проблема была с именем пакета, которое не начиналось с "com". изменил его, теперь он работает.

надеюсь, что это поможет

Я думаю, что вы добавили файл firebase json "google-services".json с новым файлом. Обязательно создайте новый файл проверьте ссылку о том, как создать файл json из firebase и он должен совпадать с вашим именем пакета

во-вторых, если вы меняете имя пакета, используйте опцию "заменить в пути", когда вы щелкните правой кнопкой мыши под файлами при выборе проекта из выпадающего списка. Вы должны найти имя пакета во всем проекте и заменить его !

надеюсь, что это помогает !

перейдите в каталог проекта и создайте папки на пути app/src, который назвал ваши ароматы продукта (например, Alpha, Beta, Store или как там называется ваш аромат). затем скопируйте свои google-сервисы.JSON-файл в каждую папку. не забудьте изменить поле "имя_пакета"на google-сервисах вашего каждого продукта.файл json, который вы вложили в папку.

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

убедитесь, что Gradle.applicationId приложения-это то же самое имя вашего пакета. моя проблема была в этом, и я решил таким образом

во-первых, добавьте суффикс в пакет приложения в Gradle:

yourFlavor {
   applicationIdSuffix "yourFlavor"
}

это приведет к тому, что ваш пакет будет называться

com.domain.yourapp.yourFlavor

затем перейдите в Firebase под вашим текущим проектом и добавьте к нему другое приложение для android с этим именем пакета.

затем замените существующие google-сервисы.JSON-файл с новым, который вы создаете с новым приложением в нем.

тогда вы получите что-то, что имеет несколько разделов "client_info". Так что ты должно получиться что-то вроде этого:

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

Я решил это, сделав два набора источников, один бесплатный и один платный. Обе эти папки будут содержать необходимый java-код и файлы ресурсов, которые будут отредактированы в соответствии с требованиями конкретного вкуса. Например, вы хотели бы удалить код AdMob в платных как из классов Java, так и из файлов макета.

Я решил ту же проблему, повторно синхронизируя файл google-services.json.

инструменты > Firebase > подключение к Firebase > синхронизация

Я решил ту же проблему вот простое решение: когда вы создаете военнослужащих подключение выполните следующие инструкции:

  • добавить имя приложения в firebase

  • добавьте свое имя pakage приложения (напишите то же имя pakage ,которое вы используете в приложении)

  • когда firebase сделать google-сервисы.json просто скачать и вставить это в вашем приложении папка

  • синхронизация проекта проблема решена :)

    спасибо

перейти к google-services.json-файл и в клиентской части проверьте имя пакета и сравните его с именем пакета приложения, если они отличаются, а затем измените имя пакета клиента в соответствии с вашим именем пакета приложения, это сработало для меня лучше всего..

google-сервисы.JSON file - > "package_name": "com.образец.приложение.трекер"

имя пакета приложения- > пакет " com.образец.приложение.трекер";

Это означает ваши google-сервисы.файл json либо не принадлежит вашему приложению(вы загрузили google-сервисы.json для другого приложения?) ... поэтому, чтобы решить эту проблему, выполните следующие действия:

1: Войдите в Firebase и откройте свой проект. 2:щелкните значок параметры и выберите параметры проекта. 3: в карточке приложения выберите имя пакета приложения, для которого требуется файл конфигурации, из списка. 4: Нажмите кнопку google-services.формат JSON. После завершения загрузки добавьте новый службы Google.json в корневую папку проекта,заменив существующую..или просто удалить старый. Его очень нормально Скачать google-услуги.json для вашего первого проекта, а затем предположить или забыть, что это конкретные google-услуги.json адаптирован только для вашего текущего проекта,потому что не любой другой, потому что все проекты имеют уникальное имя пакета.

Я также получаю эту проблему, когда я изменяю имя пакета моего приложения.

в вашем проекте android studio найдите " google-сервисы.файл JSON". Открыть его. и проверьте имя пакета вашего приложения такой же, как написано в этом файле.

имя пакета вашего приложения и имя пакета, написанные в " google-services.файл JSON" должны быть одинаковыми.

соответствующий клиент не найден для имени пакета 'com.tf' Я уверен, что "Имя_пакета" в google-сервисах.json не соответствует вашему "applicationId" в приложении gradle.

приложение gradle:

defaultConfig {
        applicationId "com.tf"
        minSdkVersion 23
        targetSdkVersion 26
        versionCode 7
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

google-сервисы.json

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

решение: просто убедитесь, что package_name и applicatoinId должно быть то же самое.

просто. Выход из Android Studio закройте его полностью. Снова откройте Android studio, а затем снова войдите в Android Studio.

затем попробуйте подключиться к firebase из среды IDE Android studio. Эта процедура сработала для меня.

Это просто решить: просто убедитесь, что имя пакета в вашем приложении/сборки.файл gradle-это то же имя пакета, что и в файле манифеста приложения. и убедитесь, что имя пакета правильно. Это должно решить эту