Android Proguard 和 FirebaseListAdapter 相互冲突



晚上好,

我花了几个小时试图了解发生了什么。情况如下:

制作了一个应用程序,在调试模式下运行良好,但发布模式在FirebaseListAdapter:上给了我错误

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("a/");
mAdapter = new FirebaseListAdapter<Acties>(activity, Acties.class, R.layout.list, ref) {
@Override
public void populateView(View v, Acties model, int position) {
((TextView)v.findViewById(R.id.textView1)).setText(model.getWinkel());
((TextView)v.findViewById(R.id.textView2)).setText(model.getBericht());
((TextView)v.findViewById(R.id.textView3)).setText(model.getExpdate());
}
};

FirebaseListAdapter使用Acties.class作为getter。

public class Acties {
private String bericht;
private String winkel;
private String expdate;
public Acties() {
}
public Acties(String bericht, String expdate, String winkel) {
this.bericht = bericht;
this.winkel = winkel;
this.expdate = expdate;
}
public String getBericht() {
return bericht;
}
public String getExpdate() {
return expdate;
}
public String getWinkel() {
return winkel;
}

}

我将每个字符串都编辑为公共字符串,而不是私有字符串。(根据这个答案:https://stackoverflow.com/a/37744290/6510329)

这修复了应用程序的崩溃,但现在我得到了一个空列表。我现在可以看到ListView,但它没有填充从我的数据库中获取的信息。

发生了什么事?由于其发布模式,我看不到错误。。

我还在课堂上添加了@Keep,但它仍然不起作用。(答案:https://stackoverflow.com/a/41141406/6510329)

将此代码添加到proguard规则文件:

-keep class com.firebase.** { *; }
-keep class org.apache.** { *; }
-keepnames class com.fasterxml.jackson.** { *; }
-keepnames class javax.servlet.** { *; }
-keepnames class org.ietf.jgss.** { *; }
-dontwarn org.w3c.dom.**
-dontwarn org.joda.time.**
-dontwarn org.shaded.apache.**
-dontwarn org.ietf.jgss.**

这让我和以前完全一样,现在可以看到一个列表,但文本视图为空。。(答案:https://stackoverflow.com/a/26274623/7157263)

将这些规则添加到proguard:

-keepattributes Signature
-keepattributes *Annotation*

还是没什么变化。。每个firebase功能都非常完美。FirebaseListAdapter/populateview方法除外

谢谢你阅读所有这些,我现在要休息一下,很快就会回来,也许这会给我一些"天才"时刻

您可以添加一个指令,使ProGuard保留Acties的方法和字段。只需将其添加到您的ProGuard文件中即可:

-keep class com.yourproject.Acties { *; }

其中com.yourproject.ActiesActies类的全名(带包)。

或者,您可以用@Keep注释Acties类,这使得ProGuard在应用模糊处理/优化时保持不变。

相关内容

  • 没有找到相关文章

最新更新