Что такое правило pro-guard для аннотации StringDef в android?


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";
    }
}

Когда я использую правило default pro-guard в папке tools Android SDK, я получаю ошибку для ScreenDensity. Каково правило про-гвардии, чтобы сохранить это StringDef ScreenDensity от того, чтобы запутаться?

2 4

2 ответа:

Попробуйте добавить это правило proguard:

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

StringDef является аннотацией политики хранения источника. Поэтому он будет автоматически удален в скомпилированном коде.

Исходные аннотации предназначены для того, чтобы заставить промграммеров использовать определенные контенты вместо "волшебных" чисел или строк, которые ничего не значат для тех, кто не знаком с кодом.