安卓中StringDef注解的pro-guard规则是什么?

4
public class AssetsHelper {

    @StringDef({ScreenDensity.XHDPI,ScreenDensity.HDPI, ScreenDensity.XXHDPI})
    @Retention(RetentionPolicy.SOURCE)
    public @interface ScreenDensity {
        String HDPI = "HDPI";
        String XHDPI = "XHDPI";
        String XXHDPI = "XXHDPI";
    }
}

当我使用Android SDK中tools文件夹中的默认pro-guard规则时,ScreenDensity出现错误。如何保留这个被混淆的StringDefScreenDensity的pro-guard规则?


首先,你应该先了解 RetentionPolicy.SOURCE,然后再考虑 proguard。 - Bartek Lipinski
AssetsHelper.ScreenDensity 无法解析为类型。 - Mangesh Kadam
我收到了上述错误。 - Mangesh Kadam
好的,以及引用的代码? - Bartek Lipinski
@AssetsHelper.ScreenDensity 字符串密度 = AssetsHelper.ScreenDensity.HDPI; - Mangesh Kadam
显示剩余4条评论
2个回答

2

尝试添加此Proguard规则:

-keepclassmembers class ** {
  @your.package.AssetsHelper.ScreenDensity public *;
}

这是对我起作用的代码:-keepclassmembers class ** { @com.citruspay.graphics.AssetsHelper.ScreenDensity public *; } - Mangesh Kadam
我还为类和字段添加了@Keep注释。谢谢。 - Mangesh Kadam

-1

StringDef 是源代码保留策略注释。因此,在编译后的代码中,它将被自动剥离。

源代码注释用于强制程序员使用特定的常量,而不是对于不熟悉代码的人毫无意义的“魔法”数字或字符串。


我的代码在没有应用pro-guard规则的调试模式下运行良好。因此,我猜想它在发布模式下也应该能够正常工作。 - Mangesh Kadam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接