Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 更改Firebase包名称_Android_Firebase_Firebase Authentication - Fatal编程技术网

Android 更改Firebase包名称

Android 更改Firebase包名称,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,我有一个与Firebase集成的Google登录应用程序。我最近为了发布目的更改了应用程序包名称。现在运行此错误: Error:Execution failed for task ':app:processDebugGoogleServices'. > No matching client found for package name '<Package Name>' 错误:任务执行失败:app:processDebugGoogleServices'。 >找不到包名称“”的匹

我有一个与Firebase集成的Google登录应用程序。我最近为了发布目的更改了应用程序包名称。现在运行此错误:

Error:Execution failed for task ':app:processDebugGoogleServices'.
> No matching client found for package name '<Package Name>'
错误:任务执行失败:app:processDebugGoogleServices'。
>找不到包名称“”的匹配客户端

所以我猜Firebase无法识别具有新软件包名称的应用程序。如何更改Firebase软件包名称。我已经浏览了Firebase控制台,但找不到任何正在更改的软件包设置。或者有什么好方法可以实现这一点,而不是用包名和代码再次创建新项目?任何帮助都将不胜感激。

正如Eurosecom评论的那样,您只需使用新的软件包名称将新的Android应用程序添加到现有的Firebase项目中即可。完成此操作后,下载更新的google-services.json并将其添加到您的应用程序中

请注意,Firebase不使用Java代码中的实际包名,而是使用应用程序的build.gradle文件中的applicationId:

defaultConfig {
    applicationId "com.firebase.hearthchat"

当您最初在Android Studio中创建项目时,包名称和应用程序id将具有相同的值。但是如果您将代码重构到不同的包中,应用程序id将不会更新。这就解释了为什么该应用程序在重构后仍能继续工作。但有时会让人困惑,这就是为什么我更喜欢保持它们同步。

如果您使用的是Firebase assistant,那么:

  • 在项目设置中的Firebase控制台中删除您的应用程序
  • 返回Firebase assistant,重新连接Firebase以进行任何服务
  • 它将要求您与项目同步。点击同步
  • 将添加带有新软件包的应用程序,并自动更新
    google services.json
    文件
还请注意,
build.gradle
文件中的
applicationId
值的包名也被考虑在内


干杯

有一个更好的方法来解决这个问题。这个错误可能是因为你的应用程序文件夹中有一个GoogleService Json文件,你需要做的就是;尝试在app文件夹下找到您的google-service.json文件,并将package_Id更改为您创建的新package_Id;保存,做一个清洁和重建项目,你的问题将得到解决。希望这对你有帮助。它对我有用。如果这对你也有帮助,你可以投票。谢谢

将另一个带有新软件包的应用程序添加到您的Firebase项目中。是否需要重新添加所有SHA1密钥和其他内容?或者我只是简单地做了你做的事情吗?与这个问题相关,谷歌登录是否可能有一个通配符包名?因为我在想,如果我需要在一个月内提交100个带有谷歌登录功能的应用程序,我不想在Firebase控制台上创建100个应用程序。你们能想点什么吗?感谢advanceSo,如果我在firebase中更改我的项目包名称并创建新的应用程序,并在应用程序中添加SHA-1密钥和更新json,它将起作用?在json文件中更改包名称是不够的,其他信息也需要更改,因此,最好的方法是在同一个项目中创建新的应用程序,并使用新的json文件。@hiddeneyes02这取决于在应用程序文件夹中放置Firebase Gson文件时如何导入和同步项目。我所指出的,实际上对我有用,而且没有一种方法可以得到结果。和注释;在您已经从firebase放置了生成的GsonFile之后,当您更改包名时,上面的错误消息总是会弹出,因为包名不再与GsonFile内的内容对应。所以它需要改成最近的包名。希望你明白我的意思。你不需要投票否决它。谢谢它有效,但不应该。毫无意义的是,一个应用程序使用一个包名声明,并在firebase中使用不同的包名注册,但它们仍然彼此连接。这肯定是来自谷歌的一个bug,而且也不能保证将来不会被破解。请编辑您的答案,以便我可以取消注释和道歉。FIY,这是谷歌关于这个问题的官方立场:“为了根据您所执行的步骤解释其工作原理,客户端应用程序仍将接收消息,因为FCM在发送消息时引用应用程序注册自动生成的应用程序ID。因此,不建议通过更改应用程序的包名来手动更改配置文件。这可能会影响通知传递报告,其中来自预期应用程序的发送计数可能无法获得一些数字。”。他们还表示,这将在未来发生变化。