如果类包含带注释的字段,我如何配置 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 类
我不想根据类名进行匹配,因为此规则将适用于许多类。
最佳答案
I just read about -keepclasseswithmembers
,这将等同于基于类内容的推断 @Keep
:
-keepclasseswithmembers class * {
@a.b.c.DocumentId <fields>;
}
真正归结为 -keepclassmembers
的更严格的替代方案是用 r8 可以检测到的东西(例如,带有 retention=runtime 的注释)注释 DTO,然后仅针对该注释在规则中:
-keepclassmembers @a.b.c.Dto class *
关于android - 如果它包含一个在混淆器中带有注释的字段,如何保持类的成员不受影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63162818/