【问题标题】:Firebase AndroidChat release build errorFirebase AndroidChat 发布构建错误
【发布时间】:2015-04-14 09:09:00
【问题描述】:

我使用 Firebase androidchat 作为模板为我们的应用实现了一个新的聊天功能。一切都很好,没有任何错误,直到我尝试发布版本。

*com.firebase.client.FirebaseException: Failed to bounce to type*

stackoverflow 中有一个类似的问题,但看起来这个人设法通过更正课堂上的拼写错误来解决这个问题。我没有这些,就像我说的,开发构建没有错误。

这是我的课:

public class Chat {

private String message;
private String author;
private String profilePic;
private Long creationDate;
private Boolean god;

// Required default constructor for Firebase object mapping
@SuppressWarnings("unused")
private Chat() {

}

public Chat(String message, String author, String profilePic, Long creationDate, Boolean god) {
    this.message = message;
    this.author = author;
    this.profilePic = profilePic;
    this.creationDate = creationDate;
    this.god = god;
}

public String getMessage() {
    return message;
}

public String getAuthor() {
    return author;
}

public String getProfilePic() {
    return profilePic;
}

public Long getCreationDate() {
    return creationDate;
}

public Boolean getGod() {
    return god;
}
}

下面是它在 Firebase 控制台中的样子 http://quickscreen.me/tpBP.png

如果有帮助,这是完整的错误: http://paste.plurk.com/show/2102887/

如果我删除“creationDate”,它只会显示“Unrecognized field message”,这也是类属性之一。

有没有人尝试过 Firebase Android Chat 的 Release Build?

【问题讨论】:

    标签: android jackson firebase firebase-realtime-database


    【解决方案1】:

    确保您没有使用 Proguard 混淆您的 Chat 类。我认为 Proguard 是罪魁祸首,因为它通常只在发布模式下运行:

     release {
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-project.txt'
            }
    

    在你的 proguard-project.txt 文件中:

    # Basic ProGuard rules for Firebase Android SDK 2.0.0+
    -keep class com.firebase.** { *; }
    -keep class org.apache.** { *; }
    -keepnames class com.fasterxml.jackson.** { *; }
    -keepnames class javax.servlet.** { *; }
    -keepnames class org.ietf.jgss.** { *; }
    -dontwarn org.apache.**
    -dontwarn org.w3c.dom.**
    # avoid on Chat.class
    -keep class yourClassPackage.Chat { *; }
    

    【讨论】:

      【解决方案2】:

      尝试清理您的数据库或特定节点,如果名称正常,这应该可以工作。

      【讨论】:

        【解决方案3】:

        我花了几天的时间终于在你的 gradle 构建文件中确定了罪魁祸首 - minifyEnabled。

        buildTypes {
            release {
                minifyEnabled false
                shrinkResources true
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        

        关闭它,问题就会消失。但随后 apk 增长了 2 倍。我不确定有什么替代方案。

        【讨论】:

          猜你喜欢
          • 2018-12-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-18
          • 2021-06-25
          • 2022-10-24
          • 2017-12-03
          • 1970-01-01
          相关资源
          最近更新 更多