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

时间:2017-07-10 11:32:01

标签: firebase firebase-realtime-database

我刚刚在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:"之一。

我做错了吗?

1 个答案:

答案 0 :(得分:4)

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

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

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

更多相关内容: