包名不匹配 (Google Analytics) - 多个 productFlavors 和 buildTypes 中找不到相应的客户端

642
背景信息:我正在尝试为我的应用程序设置Google Analytics(拥有4个自定义`buildTypes`和多个`productFlavors`)。
当我选择`Build Variant`时,将`applicationId`设置为`com.my.app.package.name`(生成`google-services.json`时使用的包名),它可以正常工作。但是,我的其他flavor具有不同的applicationIds。
我遵循官方开发指南进行设置。如下是当选择任何其他构建变体时(具有不同的applicationId(包名称))在“Build Variants”选项卡中获得的错误:
错误::app:processAllcategoriesDebugfreeGoogleServices的执行失败。 无法找到与包名称'com.my.app.package.name.debug'匹配的客户端。
该错误指出`Debugfree`是自定义的`buildType`,而`Allcategories`是其中一个`productFlavors`。
问题: 现在,`google-services.json`位于`app`文件夹中,因此我不能通过将其放入特定于flavor的源集文件夹中来将它们分离出来。
问题: 1. 我的调试自定义`byildType`会将`.debug`后缀添加到`applicationId`(包名)。是否有一种方法可以使它与具有我的发布`applicationId`(即没有后缀`.debug`)的`google-services.json`文件一起使用? 2. 是否有一种方法将多个产品风味配置在同一个`google-services.json`文件中,而不使用单独的文件和任务来复制所需的文件到`app`文件夹中?我知道可以使用任务来完成这一点,如此帖子中所述。是否有更简单的方法只使用一个文件或根据Gradle配置选择正确的文件? 3. 我看到`google-services.json`中的`package_name`字段具有包名`com.my.app.package.name`。我是否可以手动添加多个包名以适用于所有构建变体?如果可以,如何操作?文档中没有找到任何说明。

1
你有没有找到特别针对你第三个问题的解决方案? - Mate
我也遇到了类似的情况。我只需要针对其中一个产品发布版本进行分析支持。我已经成功地限制了添加依赖项到产品版本,但它仍然在son文件的一部分中搜索正确的软件包。有什么建议吗? - CoDe
1
我也遇到了同样的问题,请知道有人找到解决方法吗? - Deepanshu Sinha
在我的情况下,我只是更改了包名。 - larsaars
如果您在应用程序中使用Firebase,则将新的applicationId作为子应用程序(添加应用程序)添加,问题将得到解决。 - Mohd Qasim
35个回答

1
这意味着您的 google-services.json 文件不属于您的应用程序(您是否为另一个应用程序下载了 google-services.json?)...因此,要解决此问题,请执行以下操作:
1:登录 Firebase 并打开您的项目。 2:单击“设置”图标并选择“项目设置”。 3:在“您的应用程序”卡中,从列表中选择需要配置文件的应用程序的软件包名称。 4:单击google-services.json。 下载完成后,将新的 google-services.json 添加到项目根文件夹中,替换现有文件...或者只需删除旧文件即可。
如果您首个项目下载了 google-services.json,然后假定或忘记该特定的 google-services.json 仅适用于当前项目,则很正常,因为所有项目都具有唯一的软件包名称。

1
检查您应用程序的 build.gradle 文件中的 applicationIdSuffix。查看它是否将任何文本连接到您的 applicationId。如果是,则删除它。

1
如果您的applicationIdbuildTypes之间不同,您可以将这些特定的构件添加到特定依赖项风味中,例如releaseImplementation

-1

很简单。从Android Studio注销,完全关闭它。重新打开Android Studio,然后再次登录到Android Studio。

然后尝试从Android Studio IDE连接到Firebase。这个步骤对我有效。


如果存在 google-services.json,这段代码将无法正常工作。因此,我们必须在代码执行前删除已有的 google-services.json 文件。 - Dika
在更改JSON文件中的包名称之后,此操作将仅起作用一次,并且在保存之前,您需要关闭Android Studio,然后保存JSON文件并重新启动工作室。 - Anish Kumar

-3

解决这个问题很简单:只需确保您的app/build.gradle文件中的包名与您的应用程序清单文件中的包名相同,并确保包名正确。这样应该就可以解决这个问题了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接