没有为包名找到匹配的客户端(谷歌Analytics) -多个productFlavors &buildTypes

背景:

我试图为我的应用程序设置谷歌分析(有4个自定义buildTypes和多个productFlavors)

当我选择Build Variant时,它工作得很好,其中有applicationId设置为com.my.app.package.name(生成google-services.json时使用的包名)。但是,我的其他口味有不同的应用id。

我使用官方devguide来设置它。

当我在Build Variants Tab(有不同的applicationId(包名))中选择任何其他构建变体时,我得到的错误如下:

错误:执行任务失败 应用:processAllcategoriesDebugfreeGoogleServices。< / p >

没有为包名'com.my.app.package.name.debug'找到匹配的客户端

# EYZ0

在上面错误消息中的任务名称中,Debugfree是我的自定义buildTypeAllcategories是我的productFlavors之一。

我理解这个错误,并且知道包的名称与我在生成json时使用的不同,但这就是我试图解决的问题

问题:

现在,google-services.json位于app文件夹中,因此我无法通过将它们放在特定于风味的源集文件夹中来将它们分离出来。

问题:

  1. 我的自定义调试byildType后缀.debugapplicationId(包名)。是否有一种方法,我可以使它与google-services.json工作,其中有我的发布applicationId(即没有后缀.debug)
  2. 是否有一种方法可以在同一个google-services.json文件中配置多个产品类型,而不使用单独的文件和任务将所需的文件复制到app文件夹中。我知道可以使用task完成,正如在这篇文章中提到的那样。有没有一种更简单的方法来只有一个文件或根据gradle配置选择正确的文件?
  3. 我看到google-services.json中的package_name字段的包名为com.my.app.package.name。我可以手动添加多个包名以适用于所有构建变体吗?如果是,怎么做?在文档中找不到任何说明。
652646 次浏览

发现了这个:

< p >谷歌服务。Json文件一般放置在app/ 目录,但作为版本2.0.0-alpha3的插件支持是 为构建类型添加,它将创建以下目录 结构有效:< / p >
app/src/
main/google-services.json
dogfood/google-services.json
mytype1/google-services.json
...

< a href = " https://developers.google.com/android/guides/google-services-plugin " > < / >来源

来源2 .

根据您的包名,检查google-services.json中的client_idpackage_name是否有正确的值。

您应该将上述文件添加到flavors目录中,并在client_idpackage_name字段中添加相应的包名。

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与我的本地包名

你需要把google-services.json放到app/目录中。对于每一种构建类型,都应该有一致的主管 # EYZ0文件夹。< / p >

例如,如果你有release和debug:

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

在谷歌的所有服务中。你应该根据构建类型指定正确的package_name

例如,在调试目录中,它应该像{com.myapp}.debug

我通过制作两个资源集来解决这个问题,一个是免费的,一个是付费的。这两个文件夹都将包含所需的java代码和资源文件,这些文件将根据特定类型的要求进行编辑。例如,你想从Java类和布局文件中删除付费的AdMob代码。

确保在重命名包后重命名gradle文件中的ApplicationId

我找到了解决方案:

我们必须在firebase项目中创建两个“应用程序”,然后我们可以从任何一个应用程序下载json文件(我从调味应用程序下载)。它将包含两个应用程序的数据。我们可以简单地将json文件复制到应用程序的根目录。

来源:# EYZ0

确保您的包名称在“google-services”中。Json”文件与应用程序的包名称相同。

打开你的谷歌服务。Json文件,并在文件中查找此部分:

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

检查该包是否与您的包名相同。我的不一样,所以我改了一下,它起作用了。

如果您的包名称在Google-services。Json文件, 去gradle。属性文件。然后修改你的APPLICATION_ID="com.yourpackage.name"

如果这些对你们中的一个都不起作用,我的问题是包名不是以“com”开头的。 改变了它,现在它工作了

希望这能有所帮助

我来自react native,但我认为这也适用于这个问题。指定。

在文件android/app/build.gradle中搜索applicationId(在androiddefaultConfig中)

确保这个值和这个一样

# EYZ0

作为google-services.json中的值。

我通过重新同步文件google-services.json解决了同样的问题。

Tools > Firebase >连接Firebase >同步

进入你的项目目录,在app/src路径上创建文件夹,命名你的产品口味(如Alpha, Beta, Store或任何你的口味的名字)。然后复制你的谷歌服务。Json文件到每个文件夹。不要忘记在每个产品类型的google服务上更改“package_name”字段。子文件夹的Json文件。

我解决了同样的问题 这里有一个简单的解决方法: 当你创建重火力点连接时,遵循以下准则:

  • 在firebase中添加应用程序名称

  • 添加你的应用程序包名(写相同的包名,你在应用程序中使用)

  • 当firebase make google-services。Json 文件只是下载它和粘贴它在你的应用文件夹

  • 同步你的项目问题解决了:)

    谢谢你

这意味着你的谷歌服务。json文件不属于你的应用程序(你下载了谷歌服务吗?Json的另一个应用程序?)要解决这个问题,请执行以下步骤:

1:登录Firebase并打开项目。 2:单击“设置”图标,选择“项目设置”。 3:在Your apps卡中,从列表中选择你需要配置文件的应用程序的包名。 4:点击google-services.json。< / >强 下载完成后,添加新的google服务。Json到你的项目根文件夹,替换现有的..或只是删除旧的。 下载谷歌服务是很正常的。Json为你的第一个项目,然后假设或忘记这个特定的谷歌服务。Json是专为当前项目定制的,而不是为其他任何项目定制的,因为所有项目都有唯一的包名

去谷歌服务。json文件和在客户端部分检查包名称,并与App包名称进行比较,如果它们是不同的,然后根据您的App包名称更改客户端包名称,它为我工作,祝我好运。

谷歌服务。Json文件-> "package_name": "com.example.application.tracker"

应用程序包名称->包"com.example.application.tracker";

我认为你已经添加了firebase json文件“google-services”。Json和新文件。确保创建一个新文件查看如何从firebase创建json文件的链接,它应该与你的包名匹配

第二件事是,如果你要改变包的名称,当你从下拉菜单中选择项目时,右键单击文件下的“替换路径”选项。你必须在整个项目中搜索包名并替换它!

希望这能有所帮助!

您还需要更改google-services.json中的包名称

只是简单的。从Android Studio中退出,完全关闭它。重新打开Android工作室,然后再次登录到Android工作室。

然后尝试从Android studio IDE连接到firebase。这个程序对我很有效。

我也得到这个问题时,我改变包的名称我的应用程序。

在你的android studio项目中找到“google-services”。json文件。 打开它。

.检查应用程序的包名是否与文件中所写的相同

应用程序的包名和写在“google-services”中的包名。Json”文件必须相同。

当你创建或更新package name时,确保你的包名完全相同[大写和小写重要]

执行下面的步骤。

在应用程序级别gradle文件中检查applicationId

检查google-services.json文件中的package_name

检查AndroidManifest文件中的package

为了完全确认,请确保您的工作包目录名称即(“com.example.app")也是相同的。

编辑[任何在productFlavour场景中遇到此问题的人,去查看机器人克里斯的解决方案]

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与你的包名相同。我的问题是这样的,我用这种方法解决了

解决这个问题很简单:只要确保你的app/build中的包名。gradle文件与你的App Manifest文件中的包名相同。并确保包名称正确。这就能解决问题了

首先,在Gradle中为应用程序包添加一个后缀:

yourFlavor {
applicationIdSuffix "yourFlavor"
}

这将使您的包被命名

com.domain.yourapp.yourFlavor

然后转到当前项目下的Firebase,用这个包名添加另一个android应用程序。

然后替换现有的谷歌服务。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"
}
}

没有为包名'com.tf'找到匹配客户端 我很确定google-services中的“package_name”。json与你的“applicationId”在app gradle中不匹配。< / p >

应用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_nameapplicationId必须相同。

在应用构建中检查applicationIdSuffix。gradle文件。看看它是否将任何文本连接到applicationId。如果是,请移除。

1.验证包名应用程序ID应该相同

2.验证应用程序文件夹中可用的谷歌服务。Json包名

当您在项目中下载了包名为与项目的包名称不匹配的谷歌Services Json文件时,会发生此错误。

# EYZ0

它更新所有的类而不是Gradle File。所以检查你的包名在Gradle中是否正确,Manifest也可以。

你可以这样做来解决这个问题。

enter image description here

就我而言,我忘记了谷歌服务。Json在应用程序根目录,这是不同的口味。它在默认情况下使用,而不是使用存储在flavor文件夹中的json。这个混乱的插件,因为包名不匹配,它失败了。

我教的智慧是,检查所有的谷歌服务。Json在你的项目结构中,当这个问题发生时。

如果有人改变了他们现有的包名,有时就会出现这样的问题,所以你应该改变本地包名,build.gradle文件包名,如果你的项目有任何google-services.json文件,那么你也需要改变JSON文件包名。

旧档案是这样的

"client": [
{
"client_info": {
"mobilesdk_app_id": "1:517104510151:android:8b7ed3989db24a6f928ae2",
"android_client_info": {
"package_name": "com.techsajib.oldapp"
}
},

新建文件是这样的

"client": [
{
"client_info": {
"mobilesdk_app_id": "1:517104510151:android:8b7ed3989db24a6f928ae2",
"android_client_info": {
"package_name": "com.techsajib.newapp"
}
},

注意:有时JSON文件有几个包名,所以要全部更改

如果您的applicationIdbuildTypes不同,您可以将这些特定的工件添加到特定的依赖类型中,例如releaseImplementation

我忘了在Firebase中添加SHA certificate fingerprint。我只是重新导入google-services.json,它工作了