it-swarm.com.ru

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

Context:

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

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

Я следовал за официальным инструктором , чтобы настроить его.

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

Ошибка: не удалось выполнить задачу ': Приложение: processAllcategoriesDebugfreeGoogleServices.

Не найдено подходящего клиента для имени пакета 'com.my.app.package.name.debug'

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

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

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

Проблема:

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

Вопросы:

  1. Мой пользовательский byildType для отладки суффиксов .debug в applicationId (имя пакета). Есть ли способ заставить его работать с google-services.json, в котором есть мой выпуск applicationId (т.е. без суффикса .debug)
  2. Существует ли способ настроить несколько вариантов продукта в одном файле google-services.json, не используя отдельные файлы и задачи для копирования требуемого файла в папку app. Я знаю, что это можно сделать с помощью task, как указано в этот пост . Существует ли более простой способ иметь один файл или выбрать нужный файл в зависимости от конфигурации Gradle?
  3. Я вижу, что поле package_name в google-services.json содержит имя пакета com.my.app.package.name. Могу ли я добавить несколько имен пакетов вручную, чтобы работать для всех вариантов сборки? Если да, как это сделать? Не удалось найти никаких инструкций в документации.
234

Нашел это:

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

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

Источник

Источник 2

169

Проверьте имя пакета на вашем google-services.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-services.json на свое локальное имя пакета.

207
Muhammed Fasil

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

57
cahit beyaz

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

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

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

44
Usman

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

Например, если у вас есть релиз и отладка:

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

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

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

25
Bogdan Ustyak

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

Делай ниже шаг.

1). Проверьте applicationId в файле уровня приложения gradle,

2). Проверьте package_name в вашем файле google-services.json,

3). Проверьте package в вашем файле AndroidManifest 

и для полного подтверждения укажите имя каталога вашего рабочего пакета i.e. ("com.example.app") также то же самое.

24
Ravi Vaniya

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

приложение 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"
        }
      },

Решение : Просто убедитесь, что package_name и applicationId должны быть одинаковыми.

23
Kailash Karki

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

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

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

13
DAVIS BENNY 15MIS0426

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

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

12
SHi ON

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

11
Arsalan Shah

Я родом из Реакции, но думаю, что это относится и к этому вопросу. Указать.

В файле Android/app/build.gradle найдите applicationId (в пределах Android, defaultConfig)

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

client[0]client_info.Android_client_info.package_name 

в качестве значения в google-services.json.

10
ThomasReggi

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

7
Dulal Kisku

Вам также необходимо изменить имя пакета в google-services.json

6
S H Mehdi

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

yourFlavor {
   applicationIdSuffix "yourFlavor"
}

Это приведет к тому, что ваш пакет будет назван 

com.domain.yourapp.yourFlavor

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

Затем замените существующий файл google-services.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"
    }
  }
5
Droid Chris
Android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.package.name"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    }

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

4
Bayar Şahintekin

если ничего из этого не сработало для одного из вас, ребята, моя проблема заключалась в том, что имя пакета не начиналось с «com» ​​... изменило его, теперь оно работает.

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

4
eiran

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

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

Надеюсь это поможет !

4
Ashok Kumar K R

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

3
Osman Yalın

Я решил ту же проблему Вот простое решение: Когда вы создаете firebase connection, следуйте этим рекомендациям:

  • Добавьте название вашего приложения в firebase

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

  • когда Firebase делает google-services.json файл просто скачать это и вставить это в папке вашего приложения

  • Синхронизировать ваш проект Проблема решена :)

    Спасибо 

2
Chaudhary Nouman

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

google-services.json file-> "имя_пакета": "com.example.application.tracker"

Имя пакета приложения-> пакет "com.example.application.tracker";

2
Shah Rukh

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

2
Abhiroj Panwar

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

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

2
Nabin Bhandari

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

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

1
RileyManda

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

В вашем проекте студии Android найдите файл "google-services.json" . Откройте его . И проверьте, совпадает ли имя пакета вашего приложения с написанным в этом файле.

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

1
mehmoodnisar125

Проверьте наличие applicationIdSuffix в файле build.gradle вашего приложения. Посмотрите, соединяет ли он какой-либо текст с вашей переменной applicationId. Если так, удалите это.

0
Arsalan Shah

1.Проверьте Имя пакета и ID приложения должно быть одинаковым

2. Проверьте имя пакета google-services.json которое доступно в папке приложения

0
John Ruban Singh

Эта ошибка возникает, когда в ваш проект загружен файл Json Служб Google, имя пакета которого не совпадает с именем пакета вашего проекта.

Недавно переименовали название пакета проекта? Он обновляет все классы но не файл Gradle . Так что проверьте правильность имени вашего пакета в вашем Gradle, а также, возможно, и Manifest.

0
devDeejay