我使用Firebase androidchat作为模板为我们的应用实施了新的聊天功能。在我尝试发布版本之前,一切都工作得很好,没有任何错误。
*com.firebase.client.FirebaseException: Failed to bounce to type*
在stackoverflow中有一个类似的问题但看起来那个人设法通过纠正他班级中的拼写错误来修复它。我没有这些,就像我说的那样,dev build没有错误。
这是我的班级:
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"它只会说"无法识别的字段消息"这也是一流的房产。
有没有人尝试过Firebase Android Chat的发布版本?
答案 0 :(得分:0)
确保不要使用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 { *; }
答案 1 :(得分:0)
尝试清理数据库或特定节点,如果名称正常,这应该可以使用。
答案 2 :(得分:-1)
我花了几天的时间才最终确定了你的gradle构建文件中的罪魁祸首--minifyEnabled。
buildTypes {
release {
minifyEnabled false
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
将其关闭,问题消失。但随后apk增长了2倍。我不确定是什么选择。