【发布时间】:2020-11-19 14:06:20
【问题描述】:
如果类包含带注释的字段,如何配置 proguard/R8 以保留类的所有字段和方法?
我有课
public class MyDocument {
@DocumentId
private String foo;
private String bar;
public getFoo() { .. }
public getBar() { .. }
}
我能够让它不删除 foo
-keepclassmembers class * {
@a.b.c.DocumentId <fields>;
@a.b.c.DocumentId <methods>;
}
但它仍然删除 getBar()
有没有办法说“如果同一类中的某个字段包含注释,则不要删除类中的任何方法或字段?
这里的用例是它们是firestore's toObject使用的DTO类
我不想根据类名进行匹配,因为这条规则将适用于许多类。
【问题讨论】:
-
如果我是正确的,你不希望你的模型类被 R8 规则混淆,那么你可以使用一行
-keep class com.example.example.models.** { *; }你可以将所有模型类放入一个包中当 proguard 应用时,这个包被排除在混淆之外。
标签: android google-cloud-firestore proguard obfuscation android-r8