аннотации, не влияющие на proguard
У меня возникли проблемы с тем, чтобы держать вещи на основе их аннотаций (под Android).
У меня есть аннотация, 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 {
(...);
}
Он удаляет конструктор, если я пытаюсь изменить это на:
-keepattributes Signature,*Annotation*,SourceFile,LineNumberTable
-keepclassmembers class ** extends com.example.Bar {
@com.example.Keep (...);
}
Я вижу одинаковое поведение как с моими собственными аннотациями, так и с proguard.s annotation.jar аннотации. Я'скопировал и вставил название аннотации из Foo 'с импортаKeep
, так уверен оно вышлоне опечатка или неправильный импорт.
Кто-нибудь может подумать о том, чего мне не хватает?