Не найдено ни одного подходящего клиента для имени пакета (Google Analytics) - несколько продуктовFlavors & buildTypes
Контекст:
Я пытаюсь настроить Google Analytics для своего приложения. (имеет 4 пользовательских buildTypes
и более нескольких productFlavors
)
Он отлично работает, когда я выбираю Build Variant
, у которого applicationId
установлен на com.my.app.package.name
(имя пакета, используемое при создании google-services.json
). Но, мои другие вкусы имеют разные приложения.
Я выполнил официальный devguide, чтобы настроить его.
Ошибка, когда какой-либо другой вариант сборки выбран в Build Variants Tab
(который имеет другое applicationId
(имя пакета):
Ошибка: выполнение выполнено для задачи ': Приложение: processAllcategoriesDebugfreeGoogleServices'.
Не найдено подходящего клиента для имени пакета 'com.my.app.package.name.debug'
Объяснение сообщения об ошибке:
В имени задачи в сообщении об ошибке выше Debugfree
мой пользовательский buildType
и Allcategories
является одним из моих productFlavors
.
Я понимаю ошибку и знаю, что имя пакета отличается от того, что я использовал при создании json, но это то, что я пытаюсь понять.
Проблема:
Теперь google-services.json
находится в папке app
, и поэтому я не могу разделить их для каждого продукта, сбросив их в папку с настройками источника, специфичную для вкуса.
Вопросы:
- Мой пользовательский
byildType
для отладки суффиксов .debug
в applicationId
(имя пакета). Есть ли способ заставить его работать с google-services.json
, у которого есть мой выпуск applicationId
(т.е. Без суффикса .debug
)
- Есть ли способ настроить несколько продуктов в одном файле
google-services.json
без использования отдельных файлов и задач для копирования необходимого файла в папку app
. Я знаю, что это можно сделать, используя task
, как указано в этом сообщении. Есть ли более простой способ просто иметь один файл или выбрать правильный файл на основе конфигурации gradle?
- Я вижу, что поле
package_name
в google-services.json
имеет имя пакета com.my.app.package.name
. Могу ли я добавить несколько имен пакетов вручную для работы во всех вариантах сборки? Если да, как это сделать? Не удалось найти инструкции в документах.
Ответы
Ответ 1
Найдено следующее:
Файл google-services.json обычно помещается в приложение/ каталог, , но с версии 2.0.0-alpha3 поддержки плагина добавлено для типов сборки, что сделает следующий каталог структура действительна:
app/src/
main/google-services.json
dogfood/google-services.json
mytype1/google-services.json
...
Источник
Источник 2
Ответ 2
Проверьте название пакета в вашем 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 на свое локальное имя пакета.
Ответ 3
убедитесь, что имя вашего пакета в файле "google-services.json" совпадает с вашим именем пакета приложений.
Ответ 4
Я нашел решение:
Мы должны создать два "приложения" в проекте firebase, а затем мы можем скачать json файл из любого приложения (я загрузил из приправленного приложения). Он будет содержать данные для обоих приложений. Мы можем просто скопировать json файл в корневой каталог приложения.
Источник: https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html
Ответ 5
Не найдено подходящего клиента для имени пакета "com.tf". Я уверен, что "имя_пакета" в google-services.json не соответствует вашему "applicationId" в граде приложения.
приложение 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
и package_name
applicationId
должны совпадать.
Ответ 6
Всякий раз, когда вы создаете или обновляете package name
убедитесь, что имя вашего пакета точно такое же [Прописные и строчные буквы имеют значение]
Делай ниже шаг.
1). Проверьте applicationId
в файле gradle
уровня gradle
,
2). Проверьте package_name
в файле google-services.json
,
3). Проверьте package
в вашем файле AndroidManifest
и для полного подтверждения укажите имя каталога вашего рабочего пакета, т.е. ("com.example.app") тоже то же самое.
Ответ 7
Вам нужно поместить google-services.json
в каталог app/
. И для каждого типа сборки должен быть
app/src
.
Например, если у вас есть выпуск и отладка:
app/google-services.json
app/src/debug/google-services.json
Во всех файлах google-services.json вы должны указать правильный package_name
в соответствии со строкой.
Например, внутри debug dir это должно быть как {com.myapp}.debug
Ответ 8
проверьте, соответствуют ли client_id
и package_name
в google-services.json правильное значение в соответствии с вашим именем пакета.
Вы должны добавить указанный файл в каталог flavors с соответствующим именем пакета в поле client_id
и package_name
.
Ответ 9
Откройте файл Google-services.json и найдите этот раздел в файле:
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:857242555489:android:46d8562d82407b11",
"android_client_info": {
"package_name": "com.example.duke_davis.project"
}
}
проверьте, совпадает ли пакет с именем вашего пакета. Моя была другая, поэтому я ее изменил, и она сработала.
Ответ 10
Убедитесь, что вы переименовали ApplicationId в файл gradle после переименования пакета
Ответ 11
Мне кажется, что это относится и к этому вопросу. Чтобы указать.
Внутри файла android/app/build.gradle
найдите applicationId
(в пределах android
, defaultConfig
)
и убедитесь, что это значение является тем же самым
client[0]client_info.android_client_info.package_name
как значение в пределах google-services.json
.
Ответ 12
Если ваше имя пакета в файле Google-services.json в порядке,
Перейдите в gradle.properties файл. Затем измените свой APPLICATION_ID = "com.yourpackage.name"
Ответ 13
Вам также необходимо изменить имя пакета в google-services.json
Ответ 14
Прежде всего, добавьте суффикс к пакету приложения в 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"
}
}
Ответ 15
Я думаю, что вы добавили FireBase JSON файл "google-services".json с новым файлом. Убедитесь, что для создания нового файла проверьте ссылку о том, как создать файл json из firebase, и он должен совпадать с именем вашего пакета
Во-вторых, если вы меняете имя пакета, используйте опцию "заменить в пути", когда вы щелкаете правой кнопкой мыши по файлам, когда выбираете проект из выпадающего списка. Вы должны найти имя пакета во всем проекте и заменить его!
Надеюсь это поможет !
Ответ 16
если никто из вас не работал для одного из вас, моя проблема заключалась в имени пакета, который не начинался с "ком".
изменил его, теперь он работает.
надеюсь, что поможет
Ответ 17
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 applicationId совпадает с именем вашего пакета. моя проблема была в этом, и я решил так
Ответ 18
перейдите в каталог проекта и создайте папки на пути к приложению /src, которые назвали ваши вкусы продукта (например, Alpha, Beta, Store или то, что когда-либо было вашим именем аромата). затем скопируйте файл google-services.json в каждую папку. не забудьте изменить поле "имя_пакета" в вашем файле "google-services.json" вашего продукта, который вы вложили в папку.
Ответ 19
Я решил это, сделав два источника, один бесплатный и один заплатил. Обе эти папки будут содержать требуемый код Java и файлы ресурсов, которые будут редактироваться в соответствии с требованиями конкретного вкуса. Например, вы хотите удалить AdMob Code в Платеже как из классов Java, так и из файлов макета.
Ответ 20
Я решил ту же проблему, повторно синхронизируя файл google-services.json
.
Инструменты > Firebase > Подключиться к Firebase > Sync
Ответ 21
Я решил ту же проблему
вот простое решение:
когда вы создаете соединение firebase, следуйте этим рекомендациям:
-
Добавьте свое имя приложения в firebase
-
Добавьте имя приложения pakage (напишите то же имя pakage, которое вы используете в приложении)
-
когда firebase делает файл google-services.json только загружает и вставляет его в папку вашего приложения
-
Синхронизация проекта Проблема решена:)
Спасибо
Ответ 22
Перейдите в файл google-services.json и в клиентской части проверьте имя пакета и сравните его с именем пакета приложения, если они отличаются, затем измените имя пакета клиента в соответствии с именем пакета приложения, которое мне сработало.
google-services.json file-> "имя_пакета": "com.example.application.tracker"
Пакет приложений name-> пакет "com.example.application.tracker";
Ответ 23
Это означает, что ваш файл google-services.json либо не принадлежит вашему приложению (вы скачали google-services.json для другого приложения?)... поэтому для решения этой проблемы выполните следующие действия:
1: Войдите в Firebase и откройте свой проект. 2. Нажмите значок "Настройки" и выберите "Настройки проекта". 3: В карточке "Ваши приложения" выберите из списка имя пакета приложения, для которого вам нужен файл конфигурации. 4: Нажмите google-services.json. После завершения загрузки добавьте новый google-services.json в корневую папку вашего проекта, заменив существующую... или просто удалите старую. Очень нормально скачать google-services.json для вашего первого проекта, а затем предположить или забыть, что этот конкретный google-services.json предназначен только для вашего текущего проекта, потому что не для других, потому что все проекты имеют уникальное имя пакета.
Ответ 24
Я также получаю эту проблему, когда я изменяю имя пакета моего приложения.
В вашем проекте студии android найдите файл "google-services.json". Открой это. и проверьте, совпадает ли имя пакета вашего приложения с написанным в этом файле.
Имя пакета вашего приложения и имя пакета, записанное в файле "google-services.json", должны совпадать.
Ответ 25
1. Убедитесь, что имя пакета и идентификатор приложения должны совпадать
2. Проверьте имя пакета google-services.json, которое доступно в папке приложения.
Ответ 26
Проверьте для applicationIdSuffix
в файле вашего приложения build.gradle. Посмотрите, объединяет ли он какой-либо текст с вашим applicationId
. Если так, удалите это.
Ответ 27
Эта ошибка возникает, когда в ваш проект загружен файл Json Служб Google, имя пакета которого не совпадает с именем пакета вашего проекта.
Недавно переименовали название пакета проекта? Он обновляет все классы, но не Gradle File. Так что проверьте правильность имени вашего пакета в вашем Gradle, а также, возможно, и Manifest.
Ответ 28
Вы можете сделать это для решения этой проблемы.
![enter image description here]()
Ответ 29
Просто. Выйдите из Android Studio, закройте его полностью. Откройте Android-студию, а затем снова войдите в Android-студию.
Затем попробуйте подключиться к firebase из IDE студии Android. Эта процедура работала для меня.
Ответ 30
Это легко решить: просто убедитесь, что имя пакета в вашем файле app/build.gradle совпадает с именем пакета в файле манифеста приложения. и убедитесь, что имя пакета указано правильно. Это должно решить это