我刚刚在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
这是我在发布模式下构建应用程序后所写的内容:
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:"之一。
我做错了吗?
答案 0 :(得分:4)
在发布模式下,您的Android应用程序正在被Proguard缩小。此过程会删除未使用的方法,并使其他方法名称更短。
因此,您的POJO类(您对Firebase读取/写入的类)正在获取新的方法名称,Firebase反射性地使用这些方法名称来确定JSON中的属性。
解决方案是告诉Proguard不要修改POJO的方法名称。
更多相关内容:
@Keep
标记课程,请参阅Firebase No properties to serialize found on class。