安卓Firebase:找不到与该包名匹配的客户端

6

我从一个朋友那里借了一个 Android 项目,导入后遇到一个错误:The application was configured for some other audience - appId doesn't match the one in google-services.json。之后,我知道我需要更改 Java 文件的包名并重新连接 Firebase,所以我这样做了。但是我一直收到错误信息:

Error:Execution failed for task ':app:processDebugGoogleServices'.
> No matching client found for package name 'com.***.***.chitchat'

我在 AndroidManifest.xml、build.gradle 和 google-services.json 中使用了相同的包名。奇怪的是,其他人在进行必要更改后,问题都得到了解决。而我的仍然会出现错误。这是为什么呢?


这个问题在iOS构建中也是一样的,解决方案与Doug在下面提供的解决方案相同,只需在GoogleService-Info.plist文件中进行操作,该文件与JSON文件一样位于应用程序文件夹中。因此,也许这个问题的前缀Android可以去掉,因为它是跨平台的? - Teodor Sandu
2个回答

8
您的Java代码的包名实际上与该错误无关。您需要查看整个应用程序的应用ID(在build.gradle中)。
Google服务插件查看您的应用程序ID,并尝试将其与在google-services.json文件中找到的软件包名称匹配。如果没有匹配项,它将向您提供该错误。要解决此问题,请将build.gradle中的应用程序ID更改为与Firebase控制台中为您的应用程序设置的软件包名称匹配,或在控制台中创建一个新应用程序,其软件包名称与您的应用程序ID相匹配。
如果您从朋友那里借用了一个项目,我猜测您还获得了他们的google-services.json,除非所有人都可以完全访问同一项目,否则通常不共享或检入源代码控制。如果您正在自己的项目中工作,则需要在控制台中设置它并生成新的google-services.json以匹配您的应用程序。

我刚刚读到在build.gradle中的applicationId与应用程序包名称是独立的,所以我进行了更改。我重新生成了google-services.json文件,但是它仍然显示没有匹配的客户端,即使我可以清楚地看到JSON树具有与build.gradle中的applicationId相对应的值。 - Muhammad Talha Akbar
发布您文件的内容? - Doug Stevenson
嘿,我找到了问题所在。有两个google-services.json文件。其中一个在“debug”构建变体下,但奇怪的是它没有通过我使用的Firebase工具进行更新。Firebase工具更新的是app/google-services.json中的一个,而另一个则在app/src/debug/google-services.json中。但是,正如我所说的,我们仍然需要更改applicationId以匹配google-services.json中的一个。无需更改包名称。 - Muhammad Talha Akbar
1
应用程序文件夹是默认位置,没错。Gradle会在构建输出中告诉你它正在使用哪一个(在多个风味的情况下)。 - Doug Stevenson
谢谢Doug,这个解决方案非常好。此外,对于iOS构建,同一位置(应用程序根目录)有一个名为GoogleService-Info.plist的文件,其中包含需要匹配的相同应用程序ID。干杯 - Teodor Sandu

-1

我认为这里的问题在于你的gradle中有多个构建类型。

尝试在json文件中根据构建类型添加后缀。

这可能会解决错误。


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