gpt4 book ai didi

如果应用程序是调试版本或发布版本,Firebase 会写入不同的文件

转载 作者:行者123 更新时间:2023-12-04 08:46:50 25 4
gpt4 key购买 nike

我刚刚发现 Firebase 有一些很奇怪的东西,我想知道是我做错了什么,或者是否有解决这个问题的方法。

基本上,这就是我在开发应用程序时一直写的内容(这正是我所期望的):
nscoachtools@gmail¸com
maxMatches: 60
maxPlayers: 500
maxTeams: 30
userId: "SnMuRZEVqyN***...***hv2"
userMail: "nscoachtools@gmail.com"
userName: "Nicola Salvaro"
userPicture: "https://lh4.googleusercontent.com/-L7lSPz0VJ9A/..."
userToken: -1

这是我在 Release模式下构建应用程序后所写的内容:
nsalvaro77@gmail¸com
a: "Nicola Salvaro"
b: "ESjqwuh***...***wg1"
c: "nsalvaro77@gmail.com"
d: "https://lh4.googleusercontent.com/-2kwSEmLEN1c/..."
e: -2
f: 30
g: 500
h: 60
userToken: 1499775285255

每个“标题”都被一个字母代替。而 "e: "应该是 "userToken: "然后,当我尝试更新它时,它用正确的字符串写了它,但不是在原始值的顶部......只是写了一个新的。然后,当我尝试读取完整用户时,它会获得“e:”的值,而不是“userToken:”的值。

我做错什么了吗?

最佳答案

在 Release模式下,您的 Android 应用程序正在被 Proguard 缩小。此过程去除未使用的方法并使其他方法名称更短。

因此,您的 POJO 类(您从 Firebase 读取/写入的类)正在获取新的方法名称,而 Firebase 会反射性地使用这些方法名称来确定 JSON 中的属性。

解决方案是告诉 Proguard 不要修改 POJO 的方法名称。

更多相关信息:

  • 关于如何做到这一点的最古老的问答是:What ProGuard configuration do I need for Firebase on Android? .但那个来自 Firebase 2.x,而其中许多都自动包含在 Firebase 9 及更高版本中。
  • 您还可以使用 @Keep 潜在地标记这些类。 ,见 Firebase No properties to serialize found on class .
  • 更有趣的问答:https://stackoverflow.com/search?q=%5Bfirebase-database%5D+proguard+release
  • 关于如果应用程序是调试版本或发布版本,Firebase 会写入不同的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45010923/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com