gpt4 book ai didi

android - 如果它包含一个在混淆器中带有注释的字段,如何保持类的成员不受影响

转载 作者:行者123 更新时间:2023-12-05 00:04:30 24 4
gpt4 key购买 nike

如果类包含带注释的字段,我如何配置 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com