Не найден соответствующий клиент для имени пакета (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
папка и, следовательно, я не в состоянии отделить их для каждого вкуса продукта, отбросив их в аромате определенная папка исходного набора.
вопросы:
- мой заказ
byildType
для отладки суффиксы.debug
доapplicationId
(имя пакета). Есть ли способ я могу заставить его работать сgoogle-services.json
который имеет мой релизapplicationId
(т. е. без суффикса.debug
) - есть ли способ настроить несколько вкусов продукта в одном и том же
google-services.json
файл без использования отдельных файлов и задач для копирования необходимого файла в . Я знаю, что это можно сделать с помощьюtask
как уже упоминалось в этом посте. Есть ли более простой способ просто иметь один файл или выбрать правильный файл на основе конфигурации gradle? - я вижу
26 ответов:
нашел это:
google-сервисы.json-файл обычно помещается в приложение/ каталог но начиная с версии 2.0.0-alpha3 поддержка плагина была добавлено для типов сборки, что бы сделать следующий каталог структура действительна:
app/src/ main/google-services.json dogfood/google-services.json mytype1/google-services.json ...
Проверьте имя пакета на 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
.
Если ваше имя пакета на Google-services.файл json в порядке, Перейти для Gradle.файл свойств. Затем измените свой APPLICATION_ID="com.yourpackage.name"
Если ни один из них не работал для одного из вас, ребята, моя проблема была с именем пакета, которое не начиналось с "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
должно быть то же самое.