【问题标题】:Firebase writes different files if app is debug or release version如果应用程序是调试版或发布版,Firebase 会写入不同的文件
【发布时间】:2017-12-14 02:55:15
【问题描述】:

我刚刚发现 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:”一个。

我是不是做错了什么?

【问题讨论】:

    标签: firebase firebase-realtime-database


    【解决方案1】:

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

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

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

    更多:

    【讨论】:

    • 谢谢!!!在我的情况下,添加 @Keep 就足够了,一切都很完美!你拯救了我的一天!
    • 很高兴听到这解决了您的问题。我总是忘记@Keep,虽然它确实似乎是让它工作的最快方法。所以这对我来说也是一个很好的提醒。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多