【问题标题】:Android Firebase: No matching client found for the packageAndroid Firebase:找不到与包匹配的客户端
【发布时间】:2017-12-08 20:57:40
【问题描述】:

我从我的一个朋友那里借了一个 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一样也在app文件夹里。所以也许这个问题可能会丢失Android 前缀,因为它是跨平台的?

标签: android firebase google-play-services


【解决方案1】:

Java 代码的包名实际上与该错误无关。这是您需要查看的整个应用程序的应用程序 ID(在您的 build.gradle 中)。

google-services 插件会查看您的应用程序 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 对应的值
  • 发布文件内容?
  • 嘿,我发现了问题。有 2 个 google-services.json。一个是在 debug 构建变体下,奇怪的是它没有通过我使用的 Firebase 工具得到更新。 Firebase 工具更新的一个在 app/google-services.json 中,另一个在 app/src/debug/google-services.json 中。但是,正如我所说,我们仍然需要更改 applicationId 以匹配 google-services.json 中的那个。无需更改包名。
  • 应用文件夹是默认位置,是的。 Gradle 会告诉你它在构建输出中使用的是哪一个(在多种风格的情况下)。
  • 感谢 Doug,这个解决方案是正确的。此外,对于 iOS 版本,在同一位置(应用程序根目录)有一个 GoogleService-Info.plist 文件,具有相同的应用程序 ID,需要匹配。干杯
【解决方案2】:

我认为这里的问题是您的 gradle 中有多种构建类型。

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

这可能会解决错误。

【讨论】:

    猜你喜欢
    • 2020-10-19
    • 2019-06-19
    • 1970-01-01
    • 2019-12-05
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    相关资源
    最近更新 更多