У меня проблемы с получением proguard для сохранения вещей на основе их аннотаций (под Android).аннотации, не имеющие эффекта в proguard
У меня есть аннотацию, com.example.Keep:
@Target({ ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.CONSTRUCTOR })
public @interface Keep {
}
У меня есть класс, который только когда-либо сконструированный посредством отражения:
public class Bar extends Foo {
@com.example.Keep
Bar(String a, String b) { super(a, b); }
//...
}
Он работает, как ожидалось (класс сохраняет свою конструктор, хотя и с запущенным именем класса). Когда моя конфигурация proguard включает следующее:
-keepattributes Signature,*Annotation*,SourceFile,LineNumberTable
-keepclassmembers class ** extends com.example.Bar {
<init>(...);
}
Он падает конструктор, если я пытаюсь изменить что:
-keepattributes Signature,*Annotation*,SourceFile,LineNumberTable
-keepclassmembers class ** extends com.example.Bar {
@com.example.Keep <init>(...);
}
я вижу такое же поведение с обеих моих аннотаций и annotation.jar аннотации Proguard в. Я скопировал и вставил имя аннотации из импорта Foo Keep
, так что уверен, что это не опечатка или неправильный импорт.
Может ли кто-нибудь подумать о том, что мне может не хватать?